summaryrefslogtreecommitdiffstats
path: root/util/bin/dict.leo.org
blob: 03f16b964359806d980039dee4e561cab4366dde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#! /bin/sh
#### dict.leo.org version 2.0 beta 1
set -euf

cache_dir=/tmp/dict.leo.org/
file="$cache_dir$*"

url="http://dict.leo.org/?$*"

# TODO check sanity of filename

if test -d "$cache_dir" ; then
  test -e "$file" || { curl --silent "$url" | tee "$file" ; }
else
  curl --silent "$url"
fi |
sed 's/>\( *.\)/>\n\1/g' | sed -n '
  s/[[:space:]]/ /g
  /<!-- # Werbung # -->/,/<\/td>/b
  /<!-- ============================================== -->/,/^<\/td>/b
  /<!-- # Trailer # -->/,/^ <\/table>/b
  /<table id="subnavigation" class="border">/,/<\/table>/b
  /<div id="divMoreInfo" class="popup">/,/^ <\/table>/b

  ## show link in rendered version
  s/^<a href="\(.*searchLocRelinked.*\)">$/&mehr: \1/
  s/^mehr &gt;&gt;//

  s/<[Bb][Rr] *\/>/,/g

  p
  b
  :c;# comment
  s/-->/\\-\\-\\>/g
  s/<!--/\\<\\!\\-\\-/g
  s/.*/<!--(&)-->/
  p
' \
| w3m -cols 1024 -T text/html -dump | sed '
  s/[[:space:]]\+/ /g
  s/ ,/,/g
  s/^ //;s/ $//
  s/[┌┬┐└┴┘├┼┤─]//g
  s/ *│ */|/g
  s/\[ \]//
  s/\[Speichern\] der ausgewa:hlten Wo:rter im Trainer//
  s/^||//;s/|| \?$//
' | sed -n '
  /^\[EN-> DE\]/,$b
  s/^mehr: /+ /
  s/^ENGLISCH||DEUTSCH \?/= Englisch -> Deutsch/
  s/^|\([0-9]\+\) \(Treffer\)|$/= \1 \2/
  s/^\([^|]\+\)||\([^|]\+\)$/- \1|\2/

  s/^[^=+#-][^|]\+$/## &/

  p
' | sed -n '
  /^$/b
  s/ \([?!]\)/\1/g
  s/\([[(]\) /\1/g;s/ \([]\)]\)/\1/g

  s/ ([0-9]\+ of [0-9]\+) \?//;# TODO

  #s/^##.*Grundform.*/\n#&/
  /^## .*Grundform.*/,/^##\( .*\)\?/{
    /##/{/Grundform/!p}
    b
  }

  /^## Informationen /,$b;# TODO
  #/^## Beispiele/,$b;# TODO
  #/^## Wendungen/,$b;# TODO
  /^+/b;# TODO
  #/^=/b;# TODO

  p
' | sed '
  ##
  s/|\(.*\)/\n  \1/g
  s/^#.*/\n&/

  s/##.*Treffer $/\n#&/
' | less -R
echo

#### end of file.