new-words
diff new-words.sh @ 33:720a701b2ba9
-S and -N keys
author | Igor Chubin <igor@chub.in> |
---|---|
date | Sun Dec 12 10:04:06 2010 +0100 (2010-12-12) |
parents | 753fb84437aa |
children | 3827cce83602 |
line diff
1.1 --- a/new-words.sh Fri Nov 05 20:07:46 2010 +0100 1.2 +++ b/new-words.sh Sun Dec 12 10:04:06 2010 +0100 1.3 @@ -14,9 +14,11 @@ 1.4 -k put higher words that are similar to the known words (only for English) 1.5 -l lang override language settings 1.6 -n non-interactive mode (don't run vi) 1.7 + -N turn off known words filtering 1.8 -a don't add marks (and don't save marks added by user) 1.9 -p pages work with specified pages only (pages = start-stop/total ) 1.10 -s show the text statistics (percentage of known words and so on) and exit 1.11 + -S show your vocabulary statistics (number of words and word groups) 1.12 -t tag tag known words with tag 1.13 -T show list of active tags 1.14 -m tag merge the words tagged with "tag" into the main vocabulary 1.15 @@ -75,14 +77,18 @@ 1.16 MERGE_TAGGED_WORDS=NO 1.17 MERGE_ALL_TAGGED=NO 1.18 DONT_ADD_MARKLINES=NO 1.19 -while getopts l:skanp:t:Tm:Mr:23 opt 1.20 +FILTER_WORDS=YES 1.21 +SHOW_VOC_STAT=NO 1.22 +while getopts l:sSkanNp:t:Tm:Mr:23 opt 1.23 do 1.24 case "$opt" in 1.25 s) STAT_ONLY=YES;; 1.26 + S) SHOW_VOC_STAT=YES;; 1.27 k) NEED_TO_USE_VOCABULARY_WHEN_SORT=YES;; 1.28 l) LANGUAGE="$OPTARG";; 1.29 a) DONT_ADD_MARKS=YES;; 1.30 n) NON_INTERACTIVE_MODE=YES;; 1.31 + N) FILTER_WORDS=NO;; 1.32 p) PART_TO_PROCESS="$OPTARG";; 1.33 t) TAG_NAME="$OPTARG";; 1.34 T) TAGS_LIST_ONLY="YES";; 1.35 @@ -107,10 +113,17 @@ 1.36 VOCABULARY=${LANGUAGE}.txt 1.37 NOTES_FILE=notes-${LANGUAGE}.txt 1.38 1.39 +if [ "${SHOW_VOC_STAT}" = "YES" ] 1.40 +then 1.41 + $0 -l "${LANGUAGE}" -N -n ${WORK_DIR}/${VOCABULARY} | head -1 | awk '{print $5}' | tr -d "<>" 1.42 + exit 0 1.43 +fi 1.44 + 1.45 #---------------------------------------------------- 1.46 1.47 get_words() 1.48 { 1.49 + export FILTER_WORDS 1.50 tr ' ' '\n' | sed 's/--/ /g' \ 1.51 | sed "s/'/__APOSTROPHE__/g" \ 1.52 | perl -MEncode -Mutf8 -n -e '$_ = decode( "utf8", $_);y/*\r,.:#@()+=—<>$;"?!|·[]^%&/ /; binmode STDOUT, ":utf8"; print if /^[[:alpha:] '"'"'_-]*$/'\ 1.53 @@ -146,7 +159,9 @@ 1.54 rm $after 1.55 return 0 1.56 else 1.57 - echo "# $LANGUAGE, $percentage, <$total_known/$total>" 1.58 + groups="$(grep '# groups' $after | awk '{print $3}')" 1.59 + words="$(grep -v '^#' $after | wc -l)" 1.60 + echo "# $LANGUAGE, $percentage, <$total_known/$total>, <$groups/$words>" 1.61 fi 1.62 1.63 PERL_SCRIPT_TEMP_NAME=`mktemp /tmp/perl-grep-v-english-XXXXXXXX` 1.64 @@ -160,6 +175,7 @@ 1.65 } else { $mark_line +=5; }; 1.66 while(<>) 1.67 { 1.68 + next if /^#\s*groups\s*/; 1.69 print; 1.70 /^\s*([0-9]*)\s*/; 1.71 $s+=$1; 1.72 @@ -217,6 +233,10 @@ 1.73 { 1.74 PERL_SCRIPT_TEMP_NAME=`mktemp /tmp/perl-grep-v-english-XXXXXXXX` 1.75 cat <<'PERL_SCRIPT' > $PERL_SCRIPT_TEMP_NAME 1.76 + if ($ENV{FILTER_WORDS} eq "NO") { 1.77 + while(<>) { print; } 1.78 + exit(0); 1.79 + } 1.80 $voc_files=$ENV{VOC_FILES}; 1.81 $voc_files=~s@^ @@; 1.82 for $voc_file (split /\s+/,$voc_files) { 1.83 @@ -478,6 +498,7 @@ 1.84 } 1.85 @lines2 = sort { compare($b,$a) } @lines; 1.86 binmode STDOUT, ":utf8"; 1.87 +print "# groups ".scalar(keys(%group_weight))."\n"; 1.88 for $l (@lines2) { 1.89 print "$l\n"; 1.90 }