summaryrefslogtreecommitdiff
path: root/runtime/spell/de/main.aap
blob: 718e78c6ff2344eefa7a216c2b03dce603d370d9 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# Aap recipe for German Vim spell files.
#
# Since there is a big discussion about whether to use the old or the new
# spelling rules, both have been included.
#    "de": all possible words allowed
# "de_de": old and new German spelling
# "de_19": old German spelling
# "de_20": new German spelling
# "de_AT": Austrian spelling
# "de_CH": Swiss spelling

# Use a freshly compiled Vim if it exists.
@if os.path.exists('../../../src/vim'):
    VIM = ../../../src/vim
@else:
    :progsearch VIM vim

REGIONS = DE 19 20 AT CH
DE_REGIONS = de_$*REGIONS

SPELLDIR   = ..
FILES      = de_$*(REGIONS).aff de_$*(REGIONS).dic

ZIPFILE_DE = de_DE_comb.zip
ZIPFILE_19 = de_DE.zip
ZIPFILE_20 = de_DE_neu.zip
ZIPFILE_AT = de_AT.zip
ZIPFILE_CH = de_CH.zip
ZIPFILES   = $ZIPFILE_DE $ZIPFILE_19 $ZIPFILE_20 $ZIPFILE_AT $ZIPFILE_CH

READMES    = README_de_$*(REGIONS).txt

all: $SPELLDIR/de.latin1.spl $SPELLDIR/de.utf-8.spl ../README_de.txt

$SPELLDIR/de.latin1.spl : $FILES
        :sys env LANG=de_DE.ISO8859-1
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q

$SPELLDIR/de.utf-8.spl : $FILES
        :sys env LANG=de_DE.UTF-8
		$VIM -u NONE -e -c "mkspell! $SPELLDIR/de $DE_REGIONS" -c q

../README_de.txt: $READMES
        :print de_DE (combined) >! $target
        :cat README_de_DE.txt   >> $target
        :print =================================================== >>$target
        :print de_19 (old)      >> $target
        :cat README_de_19.txt   >> $target
        :print =================================================== >>$target
        :print de_20 (new)      >> $target
        :cat README_de_20.txt   >> $target
        :print =================================================== >>$target
        :print de_AT (Austria)  >> $target
        :cat README_de_AT.txt   >> $target
        :print =================================================== >>$target
        :print de_CH (Swiss)    >> $target
        :cat README_de_CH.txt   >> $target

#
# Fetching the files from OpenOffice.org.
#
OODIR = http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries
:attr {fetch = $OODIR/%file%} $ZIPFILES

# The files don't depend on the .zip file so that we can delete it.
# Only download the zip file if the targets don't exist.
de_DE.aff de_DE.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $ZIPFILE_DE
        :sys $UNZIP $ZIPFILE_DE
        :delete $ZIPFILE_DE
        :move de_DE_comb.aff de_DE.aff
        :move de_DE_comb.dic de_DE.dic
        :move README_de_DE_comb.txt README_de_DE.txt
        @if not os.path.exists('de_DE.orig.aff'):
            :copy de_DE.aff de_DE.orig.aff
        @if not os.path.exists('de_DE.orig.dic'):
            :copy de_DE.dic de_DE.orig.dic
        @if os.path.exists('de_DE.diff'):
            :sys patch <de_DE.diff

de_19.aff de_19.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $ZIPFILE_19
        # Move the other files out of the way.
        @if os.path.exists("de_DE.aff"):
            :move de_DE.aff de_DE_comb.aff
            :move de_DE.dic de_DE_comb.dic
            :move README_de_DE.txt README_de_DE_comb.txt

        :sys $UNZIP $ZIPFILE_19
        :delete $ZIPFILE_19
        :delete {f} de_AT.dic
        :move de_DE.aff de_19.aff
        :move de_DE.dic de_19.dic
        :move README_de_DE.txt README_de_19.txt

        @if os.path.exists("de_DE_comb.aff"):
            :move de_DE_comb.aff de_DE.aff
            :move de_DE_comb.dic de_DE.dic
            :move README_de_DE_comb.txt README_de_DE.txt
        @if not os.path.exists('de_19.orig.aff'):
            :copy de_19.aff de_19.orig.aff
        @if not os.path.exists('de_19.orig.dic'):
            :copy de_19.dic de_19.orig.dic
        @if os.path.exists('de_19.diff'):
            :sys patch <de_19.diff

de_20.aff de_20.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $ZIPFILE_20
        :sys $UNZIP $ZIPFILE_20
        :delete $ZIPFILE_20
        :move de_DE_neu.aff de_20.aff
        :move de_DE_neu.dic de_20.dic
        :move README_de_DE_neu.txt README_de_20.txt
        @if not os.path.exists('de_20.orig.aff'):
            :copy de_20.aff de_20.orig.aff
        @if not os.path.exists('de_20.orig.dic'):
            :copy de_20.dic de_20.orig.dic
        @if os.path.exists('de_20.diff'):
            :sys patch <de_20.diff

# It appears de_AT.dic is only an additional file for another word list.  We
# guess it's the old spelling one and concatenate them.  Complication is that
# de_AT.dic is missing a newline at the end.
de_AT.aff de_AT.dic: {buildcheck=} de_19.dic
        :assertpkg unzip patch
        :fetch $ZIPFILE_AT
        :sys $UNZIP $ZIPFILE_AT
        :delete $ZIPFILE_AT
        :print >>de_AT.dic
        :cat de_19.dic >>de_AT.dic
        @if not os.path.exists('de_AT.orig.aff'):
            :copy de_AT.aff de_AT.orig.aff
        @if not os.path.exists('de_AT.orig.dic'):
            :copy de_AT.dic de_AT.orig.dic
        @if os.path.exists('de_AT.diff'):
            :sys patch <de_AT.diff

de_CH.aff de_CH.dic: {buildcheck=}
        :assertpkg unzip patch
        :fetch $ZIPFILE_CH
        :sys $UNZIP $ZIPFILE_CH
        :delete $ZIPFILE_CH
        @if not os.path.exists('de_CH.orig.aff'):
            :copy de_CH.aff de_CH.orig.aff
        @if not os.path.exists('de_CH.orig.dic'):
            :copy de_CH.dic de_CH.orig.dic
        @if os.path.exists('de_CH.diff'):
            :sys patch <de_CH.diff


# Generate diff files, so that others can get the OpenOffice files and apply
# the diffs to get the Vim versions.
diff:
        :assertpkg diff
        :sys {force} diff -a -C 1 de_DE.orig.aff de_DE.aff >de_DE.diff
        :sys {force} diff -a -C 1 de_DE.orig.dic de_DE.dic >>de_DE.diff
        :sys {force} diff -a -C 1 de_19.orig.aff de_19.aff >de_19.diff
        :sys {force} diff -a -C 1 de_19.orig.dic de_19.dic >>de_19.diff
        :sys {force} diff -a -C 1 de_20.orig.aff de_20.aff >de_20.diff
        :sys {force} diff -a -C 1 de_20.orig.dic de_20.dic >>de_20.diff
        :sys {force} diff -a -C 1 de_AT.orig.aff de_AT.aff >de_AT.diff
        :sys {force} diff -a -C 1 de_AT.orig.dic de_AT.dic >>de_AT.diff
        :sys {force} diff -a -C 1 de_CH.orig.aff de_CH.aff >de_CH.diff
        :sys {force} diff -a -C 1 de_CH.orig.dic de_CH.dic >>de_CH.diff


# Check for updated OpenOffice spell files.  When there are changes the
# ".new.aff" and ".new.dic" files are left behind for manual inspection.

check:
        :print TODO!!!!
        :assertpkg unzip diff
        :fetch $ZIPFILE_DE
        :mkdir tmp
        :cd tmp
        @try:
            @import stat
            :sys $UNZIP ../$ZIPFILE_DE
            :move de_DE_comb.aff de_DE.aff
            :move de_DE_comb.dic de_DE.dic
            :sys {force} diff ../de_DE.orig.aff de_DE.aff >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy de_DE.aff ../de_DE.new.aff
            :sys {force} diff ../de_DE.orig.dic de_DE.dic >d
            @if os.stat('d')[stat.ST_SIZE] > 0:
                :copy de_DE.dic ../de_DE.new.dic
        @finally:
            :cd ..
            :delete {r}{f}{q} tmp
            :delete $ZIPFILE_DE


# vim: set sts=4 sw=4 :