Document xapian-compact --blocksize takes an argument
[xapian.git] / xapian-core / languages / german.sbl
blobc02dda66e93306699ba4ff44f297c0ee8a871f05
1 // Alias: de
3 /*
4     Extra rule for -nisse ending added 11 Dec 2009
5 */
7 routines (
8            prelude postlude
9            mark_regions
10            R1 R2
11            standard_suffix
14 externals ( stem )
16 integers ( p1 p2 x )
18 groupings ( v s_ending st_ending )
20 stringescapes {}
22 /* special characters (in ISO Latin I) */
24 stringdef a"   hex 'E4'
25 stringdef o"   hex 'F6'
26 stringdef u"   hex 'FC'
27 stringdef ss   hex 'DF'
29 define v 'aeiouy{a"}{o"}{u"}'
31 define s_ending  'bdfghklmnrt'
32 define st_ending s_ending - 'r'
34 define prelude as (
36     test repeat (
37         (
38             ['{ss}'] <- 'ss'
39         ) or next
40     )
42     repeat goto (
43         v [('u'] v <- 'U') or
44            ('y'] v <- 'Y')
45     )
48 define mark_regions as (
50     $p1 = limit
51     $p2 = limit
53     test(hop 3 setmark x)
55     gopast v  gopast non-v  setmark p1
56     try($p1 < x  $p1 = x)  // at least 3
57     gopast v  gopast non-v  setmark p2
61 define postlude as repeat (
63     [substring] among(
64         'Y'    (<- 'y')
65         'U'    (<- 'u')
66         '{a"}' (<- 'a')
67         '{o"}' (<- 'o')
68         '{u"}' (<- 'u')
69         ''     (next)
70     )
74 backwardmode (
76     define R1 as $p1 <= cursor
77     define R2 as $p2 <= cursor
79     define standard_suffix as (
80         do (
81             [substring] R1 among(
82                 'em' 'ern' 'er'
83                 (   delete
84                 )
85                 'e' 'en' 'es'
86                 (   delete
87                     try (['s'] 'nis' delete)
88                 )
89                 's'
90                 (   s_ending delete
91                 )
92             )
93         )
94         do (
95             [substring] R1 among(
96                 'en' 'er' 'est'
97                 (   delete
98                 )
99                 'st'
100                 (   st_ending hop 3 delete
101                 )
102             )
103         )
104         do (
105             [substring] R2 among(
106                 'end' 'ung'
107                 (   delete
108                     try (['ig'] not 'e' R2 delete)
109                 )
110                 'ig' 'ik' 'isch'
111                 (   not 'e' delete
112                 )
113                 'lich' 'heit'
114                 (   delete
115                     try (
116                         ['er' or 'en'] R1 delete
117                     )
118                 )
119                 'keit'
120                 (   delete
121                     try (
122                         [substring] R2 among(
123                             'lich' 'ig'
124                             (   delete
125                             )
126                         )
127                     )
128                 )
129             )
130         )
131     )
134 define stem as (
135     do prelude
136     do mark_regions
137     backwards
138         do standard_suffix
139     do postlude