new-words
changeset 5:9345cc05fdd1
Поиск предложений в тексте по заданному слову.
При нажатии K теперь показывается не только перевод слова,
но и предложения, содержащее это слово и найденные в тексте.
Для этого используется скрипт grep-sentences.pl ,
который ищет заданные слова в заданном файле.
На время обработки (то есть, с момента запуска new-words
и до выхода из редактора) дочерним процессам new-words
доступна переменная ORIGINAL_TEXT указывающая на файл,
содержащий обрабатываемый текст.
В словарях (en, de и так далее) к выводу словаря добавляется
вывод grep-sentences "$*" $ORIGINAL_TEXT, при условии,
что этот файл существует.
При нажатии K теперь показывается не только перевод слова,
но и предложения, содержащее это слово и найденные в тексте.
Для этого используется скрипт grep-sentences.pl ,
который ищет заданные слова в заданном файле.
На время обработки (то есть, с момента запуска new-words
и до выхода из редактора) дочерним процессам new-words
доступна переменная ORIGINAL_TEXT указывающая на файл,
содержащий обрабатываемый текст.
В словарях (en, de и так далее) к выводу словаря добавляется
вывод grep-sentences "$*" $ORIGINAL_TEXT, при условии,
что этот файл существует.
author | Igor Chubin <igor@chub.in> |
---|---|
date | Tue Mar 09 11:57:55 2010 +0200 (2010-03-09) |
parents | 0d44e794175b |
children | d1851ee29a1a |
files | README en.sh grep-sentences.pl new-words.sh |
line diff
1.1 --- a/README Fri Mar 05 17:36:00 2010 +0200 1.2 +++ b/README Tue Mar 09 11:57:55 2010 +0200 1.3 @@ -9,7 +9,9 @@ 1.4 README Файл, который мы сейчас читаем 1.5 new-words.sh Собственно программа (написана на sh) 1.6 new-words.pl Программа new-words, которую мы когда-нибудь напишем на Perl 1.7 - 1.8 +grep-sentences.pl Программа, которая ищет в файле предложения (текст, разделённый точками) по словам 1.9 +learn-words.sh Программа для повторения слов, на которые были поставлены пометки 1.10 +en.sh Пример скрипта-словаря, который вызывается по K из vim (нужно скопировать в en) 1.11 1.12 == Что сделать == 1.13 1.14 @@ -17,5 +19,4 @@ 1.15 * Статистика по текущему тексту; уровни покрытия словами текста 1.16 * Время добавления слова и прогресс добавления 1.17 * Источник слова 1.18 -* Поиск предложений, содержащих слова, в тексте 1.19 * Автоматическое определение языка по тексту
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 2.2 +++ b/en.sh Tue Mar 09 11:57:55 2010 +0200 2.3 @@ -0,0 +1,10 @@ 2.4 +#!/bin/sh 2.5 + 2.6 +( 2.7 + dict -h dictd.xdsl.by -d mueller24 "$@" 2.8 + if [ -e "$ORIGINAL_TEXT" ] 2.9 + then 2.10 + echo . . . . . . . . . . . . . . . . . . . . . . . . . ; echo 2.11 + grep-sentences "$*" "$ORIGINAL_TEXT" 2.12 + fi 2.13 +) | less -p "$*"
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 3.2 +++ b/grep-sentences.pl Tue Mar 09 11:57:55 2010 +0200 3.3 @@ -0,0 +1,20 @@ 3.4 +#!/usr/bin/perl 3.5 + 3.6 + 3.7 +$page=$ARGV[0]; 3.8 +$regexp=$ARGV[1]; 3.9 +#if (open(PAGE, "lynx -dump '$page'|")) { 3.10 +if (open(PAGE, "$page")) { 3.11 + local $/; 3.12 + $text=<PAGE>; 3.13 + $text =~ s@http://[a-zA-Z&_.:/0-9%?=,\#+()\[\]~-]*@@g; 3.14 + $text =~ s@\n@@g; 3.15 + @sentences=split /\./, $text; 3.16 + for (@sentences) { 3.17 + s/^\s*//; 3.18 + s/\s*$//; 3.19 + s/\[[0-9]+\]//g; 3.20 + s/\s+/ /g; 3.21 + print "$_.\n\n" if /\b$regexp\b/; 3.22 + } 3.23 +}
4.1 --- a/new-words.sh Fri Mar 05 17:36:00 2010 +0200 4.2 +++ b/new-words.sh Tue Mar 09 11:57:55 2010 +0200 4.3 @@ -18,6 +18,7 @@ 4.4 WORK_DIR=~/.new-words/ 4.5 TEMP1=`mktemp /tmp/news-words-XXXXXXXXXX` 4.6 TEMP2=`mktemp /tmp/news-words-XXXXXXXXXX` 4.7 +export ORIGINAL_TEXT=`mktemp /tmp/news-words-XXXXXXXXXX-orig` 4.8 editor=${EDITOR:-vim} 4.9 4.10 LANGUAGE=en 4.11 @@ -195,12 +196,15 @@ 4.12 cd $WORK_DIR 4.13 if echo "$1" | grep -q http: 4.14 then 4.15 - text_from_url "$1" | get_words ${TEMP1}-full | add_stat ${TEMP1}-full| tee "$TEMP1" > "$TEMP2" 4.16 + text_from_url "$1" | tee $ORIGINAL_TEXT \ 4.17 + | get_words ${TEMP1}-full | add_stat ${TEMP1}-full| tee "$TEMP1" > "$TEMP2" 4.18 elif [ "$#" != 0 ] 4.19 then 4.20 - cat "$1" | get_words ${TEMP1}-full | add_stat ${TEMP1}-full | tee "$TEMP1" > "$TEMP2" 4.21 + cat "$1" | tee $ORIGINAL_TEXT \ 4.22 + | get_words ${TEMP1}-full | add_stat ${TEMP1}-full | tee "$TEMP1" > "$TEMP2" 4.23 else 4.24 - get_words ${TEMP1}-full| add_stat ${TEMP1}-full | tee "$TEMP1" > "$TEMP2" 4.25 + tee $ORIGINAL_TEXT \ 4.26 + | get_words ${TEMP1}-full | add_stat ${TEMP1}-full | tee "$TEMP1" > "$TEMP2" 4.27 fi 4.28 4.29 add_marks "$TEMP2" 4.30 @@ -214,4 +218,4 @@ 4.31 remove_marks "$TEMP2" 4.32 4.33 diff "$TEMP1" "$TEMP2" | awk '{print $3}' | sort -u >> "$VOCABULARY" 4.34 -rm -f "$TEMP1" "$TEMP2" "${TEMP1}-full" 4.35 +rm -f "$TEMP1" "$TEMP2" "${TEMP1}-full" "$ORIGINAL_TEXT"