summaryrefslogtreecommitdiffstats
path: root/dic
blob: 0060686912e997f3eb1ed1867cf38e5aaa09437b (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#! /bin/sh
# usage: dic [--lang=LANG] WORD...
# where LANG may be one of en, fr, es, it, ch, ru, pt, pl
set -euf

main() {

  _args=$(getopt -n "$0" -s sh \
      -o l: \
      -l lang: \
      -- "$@")
  if \test $? != 0; then exit 1; fi
  eval set -- "$_args"
  unset _args
  lang=en
  while :; do case $1 in
    -l|--lang) lang=$2; shift 2;;
    --) shift; break;;
  esac; done

  search=$*
  lp=${lang}de

  GET | simplify | tac
}

GET() {
  curl -GsS \
      -b 'LEOABTEST=T; browser=webkit%3B5%3Bajax' \
      --data-urlencode lang="$lang" \
      --data-urlencode lp="$lp" \
      --data-urlencode multiwordShowSingle=on \
      --data-urlencode resultOrder=basic \
      --data-urlencode rmSearch=on \
      --data-urlencode rmWords=off \
      --data-urlencode searchLoc=0 \
      --data-urlencode search="$search" \
      --data-urlencode tolerMode=nof \
      "https://dict.leo.org/dictQuery/m-vocab/$lp/query.xml"
}

simplify() {
  sed '
    s|<repr\( [^>]*\)>|\nREPR: |g
    s|</repr>|\n|g
  ' | grep ^REPR |
  sed '
    s/^REPR: //
    1~2{s/$//}
    2~2{s/$//}
  ' |
  tr -d \\n |
  sed '
    s// - /g
    s//\n/g

    s|</\?m\>[^>]*>||g
    s|</\?sr\>[^>]*>||g
    s|</\?t\>[^>]*>||g

    #q

    s/&#8660;/⇔/g
    s/&#160;/ /g; # &nbsp;
    s/&#174;/®/g;
    s/  */ /g

    # <!-- undefined_translation: en:pl_ext -->
    s/ *<!--[^>]*-->//g

    s|<i> *|/|g
    s| *</i>|/|g

    s:<sup>1</sup>:¹:g; s:<sup>2</sup>:²:g; s:<sup>3</sup>:³:g;
    s:<sup>:^(:g
    s:</sup>:):g

    s:<sub>0</sub>:₀:g;
    s:<sub>1</sub>:₁:g; s:<sub>2</sub>:₂:g; s:<sub>3</sub>:₃:g;
    s:<sub>4</sub>:₄:g; s:<sub>5</sub>:₅:g; s:<sub>6</sub>:₆:g;
    s:<sub>7</sub>:₇:g; s:<sub>8</sub>:₈:g; s:<sub>9</sub>:₉:g;
    s:<sub>:_(:g
    s:</sub>:):g

    s:<b> *::g
    s: *</b>::g

    s|<small> *||g
    s| *</small>||g

    s|<domain> *||g
    s| *</domain>||g

    # "Verbtabelle" and plural
    s:<flecttabref> *::g
    s: *</flecttabref>::g

    s:<br/>:\n:g
  '
}

usage() {
  sed -rn '/^# usage:/,/^[^#]/{/^#/{s/# //;p}}' "$0" >&2
}

main "$@"