glaemscribe 1.0.13 → 1.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/glaemresources/charsets/tengwar_ds.cst +20 -11
- data/glaemresources/modes/futhark-long-branch.glaem.disabled +101 -0
- data/glaemresources/modes/futhark-short-twig.glaem.disabled +101 -0
- data/glaemresources/modes/futhorc.glaem.disabled +123 -0
- data/glaemresources/modes/khuzdul.glaem +11 -4
- data/glaemresources/modes/oldnorse-medieval.glaem +1 -1
- data/glaemresources/modes/quenya-sarati.glaem +9 -3
- data/glaemresources/modes/quenya.glaem +215 -173
- data/glaemresources/modes/sindarin-daeron.glaem +6 -6
- data/glaemresources/modes/valarin-sarati.glaem +5 -1
- data/lib/api/fragment.rb +1 -1
- data/lib/api/mode.rb +2 -2
- data/lib/api/mode_parser.rb +6 -11
- data/lib/api/post_processor/csub.rb +64 -0
- data/lib/api/post_processor/reverse.rb +2 -3
- data/lib/api/sheaf.rb +2 -0
- data/lib/api/sheaf_chain.rb +2 -0
- data/lib/api/transcription_pre_post_processor.rb +43 -13
- data/lib/api/transcription_processor.rb +17 -29
- data/lib/api/transcription_tree_node.rb +1 -1
- data/lib/glaemscribe.rb +1 -0
- metadata +5 -1
@@ -1,8 +1,8 @@
|
|
1
1
|
\**
|
2
2
|
|
3
3
|
Glǽmscribe (also written Glaemscribe) is a software dedicated to
|
4
|
-
the transcription of texts between writing systems, and more
|
5
|
-
specifically dedicated to the transcription of J.R.R. Tolkien's
|
4
|
+
the transcription of texts between writing systems, and more
|
5
|
+
specifically dedicated to the transcription of J.R.R. Tolkien's
|
6
6
|
invented languages to some of his devised writing systems.
|
7
7
|
|
8
8
|
Copyright (C) 2015 Benjamin Babut (Talagan).
|
@@ -23,29 +23,51 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
23
23
|
**\
|
24
24
|
|
25
25
|
\** Changelog **\
|
26
|
-
\**
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
26
|
+
\**
|
27
|
+
\beg changelog
|
28
|
+
\entry "0.0.2", "added χ for the word χarina, correcting ts/ps sequences to work better with eldamar"
|
29
|
+
\entry "0.0.3", "added o/u curl option"
|
30
|
+
\entry "0.0.4", "added voiced plosives corner cases treatment and option to chose method"
|
31
|
+
\entry "0.0.5", "fixing h+long vowel medially"
|
32
|
+
\entry "0.0.6", "adding option for alveolarized consonants st (t+t), pt (p+t), ht (c+t)"
|
33
|
+
\entry "0.0.7", "Fixing rb/lb, to be treated as r+mb and l+mb"
|
34
|
+
\entry "0.0.8", "Correcting double dot version for ry (aesthetics)"
|
35
|
+
\entry "0.0.9", "Adding 'implicit a' option."
|
36
|
+
\entry "0.1.0", "Simplified diacritic use by using new post-processor directive"
|
37
|
+
\entry "0.1.1", "Added default option for voiced plosives : use mb, nd, ng, ngw"
|
38
|
+
\entry "0.1.2", "Added a tehta shape selection"
|
39
|
+
\entry "0.1.3", "Fixing ks, ps, ts. Fixing dot under ore, romen in implicit a mode."
|
40
|
+
\end
|
41
|
+
**\
|
42
|
+
|
43
|
+
\**
|
44
|
+
TODO : Use the new csub directive for all diacritics/signs that could have variants (e.g. THINF_DDOT (LAMBE_MARK_DDOT for LAMBE), DASH_INF (LAMBE_MARK_TILD for LAMBE), SHOOK_LEFT)
|
45
|
+
TODO : Option for dot or not in 'a implicit' option before long vowels ?
|
46
|
+
TODO : bb, dd etc ? (for noobs)
|
47
|
+
**\
|
32
48
|
|
33
49
|
\language "Quenya"
|
34
50
|
\writing "Tengwar"
|
35
51
|
\mode "Classical"
|
36
|
-
\version "0.
|
52
|
+
\version "0.1.3"
|
37
53
|
\authors "Talagan (Benjamin Babut)"
|
38
54
|
|
39
55
|
\charset tengwar_ds true
|
40
|
-
|
56
|
+
|
41
57
|
\beg options
|
42
|
-
\option
|
43
|
-
\option
|
58
|
+
\option implicit_a false
|
59
|
+
\beg option a_tetha_shape A_SHAPE_THREE_DOTS
|
60
|
+
\value A_SHAPE_THREE_DOTS 1
|
61
|
+
\value A_SHAPE_CIRCUMFLEX 2
|
62
|
+
\end
|
44
63
|
\beg option reverse_o_u_tehtar U_UP_O_DOWN
|
45
64
|
\value O_UP_U_DOWN 1
|
46
65
|
\value U_UP_O_DOWN 2
|
47
66
|
\end
|
48
|
-
\
|
67
|
+
\option split_diphthongs false
|
68
|
+
\option always_use_romen_for_r false
|
69
|
+
\beg option voiced_plosives_treatment VOICED_PLOSIVES_AS_NASALIZED
|
70
|
+
\value VOICED_PLOSIVES_AS_NASALIZED 0
|
49
71
|
\value VOICED_PLOSIVES_WITH_STROKE 1
|
50
72
|
\value VOICED_PLOSIVES_WITH_XTD 2
|
51
73
|
\end
|
@@ -63,7 +85,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
63
85
|
\beg preprocessor
|
64
86
|
\** Work exclusively downcase **\
|
65
87
|
\downcase
|
66
|
-
|
88
|
+
|
67
89
|
\** Simplify trema vowels **\
|
68
90
|
\substitute ä a
|
69
91
|
\substitute ë e
|
@@ -81,233 +103,241 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
81
103
|
\rxsubstitute "(ȳ|ŷ|yy)" "ý"
|
82
104
|
|
83
105
|
\substitute "qu" "q" \** Dis-ambiguate qu **\
|
84
|
-
|
106
|
+
|
85
107
|
\elvish_numbers "\\eval numbers_base" "\\eval reverse_numbers"
|
86
108
|
\end
|
87
|
-
|
109
|
+
|
88
110
|
|
89
111
|
\beg processor
|
90
|
-
|
112
|
+
|
91
113
|
\beg rules litteral
|
92
|
-
|
114
|
+
|
93
115
|
{K} === (c,k)
|
94
116
|
{SS} === (z,ss)
|
95
|
-
|
117
|
+
|
96
118
|
{VOWELS} === a * e * i * o * u
|
97
119
|
{LVOWELS} === á * é * í * ó * ú
|
98
|
-
|
120
|
+
|
99
121
|
\if "reverse_o_u_tehtar == U_UP_O_DOWN"
|
100
|
-
|
101
|
-
|
102
|
-
{O_LOOP_L} === O_TEHTA_L
|
103
|
-
{O_LOOP_XL} === O_TEHTA_XL
|
104
|
-
{U_LOOP_XS} === U_TEHTA_XS
|
105
|
-
{U_LOOP_S} === U_TEHTA_S
|
106
|
-
{U_LOOP_L} === U_TEHTA_L
|
107
|
-
{U_LOOP_XL} === U_TEHTA_XL
|
122
|
+
{O_LOOP} === O_TEHTA
|
123
|
+
{U_LOOP} === U_TEHTA
|
108
124
|
\else
|
109
|
-
|
110
|
-
|
111
|
-
{O_LOOP_L} === U_TEHTA_L
|
112
|
-
{O_LOOP_XL} === U_TEHTA_XL
|
113
|
-
{U_LOOP_XS} === O_TEHTA_XS
|
114
|
-
{U_LOOP_S} === O_TEHTA_S
|
115
|
-
{U_LOOP_L} === O_TEHTA_L
|
116
|
-
{U_LOOP_XL} === O_TEHTA_XL
|
125
|
+
{O_LOOP} === U_TEHTA
|
126
|
+
{U_LOOP} === O_TEHTA
|
117
127
|
\endif
|
118
128
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
129
|
+
\if "a_tetha_shape == A_SHAPE_THREE_DOTS"
|
130
|
+
{A_SHAPE} === A_TEHTA
|
131
|
+
\else
|
132
|
+
{A_SHAPE} === A_TEHTA_CIRCUM
|
133
|
+
\endif
|
134
|
+
|
135
|
+
\if implicit_a
|
136
|
+
{_A_} === {NULL}
|
137
|
+
{_NVOWEL_} === THINF_DOT
|
138
|
+
\else
|
139
|
+
{_A_} === {A_SHAPE}
|
140
|
+
{_NVOWEL_} === {NULL}
|
141
|
+
\endif
|
142
|
+
|
143
|
+
{_TEHTAR_} === {_A_} * E_TEHTA * I_TEHTA * {O_LOOP} * {U_LOOP}
|
144
|
+
|
124
145
|
\if split_diphthongs
|
125
|
-
{WDIPHTHONGS} === {NULL}
|
126
|
-
{
|
146
|
+
{WDIPHTHONGS} === {NULL}
|
147
|
+
{_WDIPHTHONGS_} === {NULL}
|
127
148
|
\else
|
128
|
-
{DIPHTHONGS} === ai
|
129
|
-
{
|
130
|
-
{WDIPHTHONGS} === * {DIPHTHONGS}
|
131
|
-
{
|
149
|
+
{DIPHTHONGS} === ai * au * eu * iu * oi * ui
|
150
|
+
{_DIPHTHONGS_} === YANTA {_A_} * URE {_A_} * URE E_TEHTA * URE I_TEHTA * YANTA {O_LOOP} * YANTA {U_LOOP}
|
151
|
+
{WDIPHTHONGS} === * {DIPHTHONGS} \** groovy! **\
|
152
|
+
{_WDIPHTHONGS_} === * {_DIPHTHONGS_} \** same thing **\
|
132
153
|
\endif
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
154
|
+
|
155
|
+
\if implicit_a
|
156
|
+
\** consonants will take a tehta for a, and have ara + tehta in other cases **\
|
157
|
+
|
158
|
+
\** Bertrand does like the dot before long vowels **\
|
159
|
+
\** {_LTEHTAR_} === {A_SHAPE} * {_NVOWEL_} ARA E_TEHTA * {_NVOWEL_} ARA I_TEHTA * {_NVOWEL_} ARA {O_LOOP} * {_NVOWEL_} ARA {U_LOOP} **\
|
160
|
+
|
161
|
+
{_LTEHTAR_} === {A_SHAPE} * ARA E_TEHTA * ARA I_TEHTA * ARA {O_LOOP} * ARA {U_LOOP}
|
162
|
+
{_WLONG_} === * {_LTEHTAR_}
|
163
|
+
{WLONG} === * {LVOWELS}
|
164
|
+
\else
|
165
|
+
{_LTEHTAR_} === ARA {A_SHAPE} * ARA E_TEHTA * ARA I_TEHTA * ARA {O_LOOP} * ARA {U_LOOP}
|
166
|
+
{_WLONG_} === {NULL}
|
167
|
+
{WLONG} === {NULL}
|
168
|
+
\endif
|
169
|
+
|
170
|
+
{V_D} === [ {VOWELS} {WLONG} {WDIPHTHONGS} ]
|
171
|
+
{V_D_WN} === [ {VOWELS} {WLONG} {WDIPHTHONGS} * {NULL} ]
|
172
|
+
|
173
|
+
{_V_D_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} ]
|
174
|
+
{_V_D_WN_} === [ {_TEHTAR_} {_WLONG_} {_WDIPHTHONGS_} * {_NVOWEL_} ]
|
175
|
+
|
146
176
|
\** VOWEL RULES **\
|
147
|
-
[{VOWELS}]
|
148
|
-
|
149
|
-
|
177
|
+
[{VOWELS}] --> TELCO [{_TEHTAR_}] \** Replace isolated short vowels **\
|
178
|
+
\if implicit_a
|
179
|
+
[{LVOWELS}] --> TELCO {A_SHAPE} * ARA E_TEHTA * ARA I_TEHTA * ARA {O_LOOP} * ARA {U_LOOP}
|
180
|
+
\else
|
181
|
+
[{LVOWELS}] --> [{_LTEHTAR_}] \** Replace long vowels **\
|
182
|
+
\endif
|
183
|
+
|
150
184
|
\if !split_diphthongs
|
151
|
-
[{DIPHTHONGS}] --> [{
|
185
|
+
[{DIPHTHONGS}] --> [{_DIPHTHONGS_}] \** Replace diphthongs **\
|
152
186
|
\endif
|
153
|
-
|
187
|
+
|
154
188
|
\** ===================== **\
|
155
189
|
\** 1ST LINE RULES **\
|
156
190
|
\** ===================== **\
|
157
|
-
{
|
158
|
-
{
|
159
|
-
{L1_KER_2} === {K} * q
|
160
|
-
{L1_IMG_2} === CALMA * QUESSE
|
161
|
-
{L1_KER_1_GEMS} === tt * pp
|
162
|
-
{L1_IMG_1_GEMS} === TINCO DASH_INF_S * PARMA DASH_INF_S
|
163
|
-
|
164
|
-
\** NORMAL **\
|
165
|
-
[ {L1_KER_1} ] {V_D_KER_WN} --> [ {L1_IMG_1} ] {V_D_IMG__S_WN}
|
166
|
-
[ {L1_KER_2} ] {V_D_KER_WN} --> [ {L1_IMG_2} ] {V_D_IMG__S_WN}
|
191
|
+
{L1} === t * p * {K} * q
|
192
|
+
{_L1_} === TINCO * PARMA * CALMA * QUESSE
|
167
193
|
|
168
194
|
\** GEMINATED **\
|
169
|
-
|
170
|
-
{
|
195
|
+
{L1_1_GEMS} === tt * pp * {K}{K}
|
196
|
+
{_L1_1_GEMS_} === TINCO DASH_INF_S * PARMA DASH_INF_S * CALMA DASH_INF_S
|
197
|
+
|
198
|
+
\** NORMAL **\
|
199
|
+
[ {L1} * {L1_1_GEMS} ] {V_D_WN} --> [ {_L1_} * {_L1_1_GEMS_} ] {_V_D_WN_}
|
171
200
|
|
172
201
|
\** OTHERS **\
|
173
|
-
ty{
|
174
|
-
py{
|
175
|
-
|
176
|
-
ts{
|
177
|
-
ps{
|
178
|
-
|
179
|
-
|
202
|
+
ty{V_D_WN} --> TINCO THINF_DDOT_L {_V_D_WN_}
|
203
|
+
py{V_D_WN} --> PARMA THINF_DDOT_L {_V_D_WN_}
|
204
|
+
|
205
|
+
ts{V_D_WN} --> TINCO {_V_D_WN_} SHOOK_RIGHT_L
|
206
|
+
ps{V_D_WN} --> PARMA {_V_D_WN_} SHOOK_RIGHT_L
|
207
|
+
{K}s{V_D_WN} --> CALMA SHOOK_LEFT_L {_V_D_WN_}
|
208
|
+
x{V_D_WN} --> CALMA SHOOK_LEFT_L {_V_D_WN_} \** render ks for x **\
|
209
|
+
|
180
210
|
\** ===================== **\
|
181
211
|
\** 2ND LINE RULES **\
|
182
212
|
\** ===================== **\
|
183
|
-
{
|
184
|
-
{
|
213
|
+
{L2} === nd * mb * ng * ngw
|
214
|
+
{_L2_} === ANDO * UMBAR * ANGA * UNGWE
|
185
215
|
|
186
216
|
\** STANDARD **\
|
187
|
-
[{
|
188
|
-
|
189
|
-
\** Palatalized **\
|
190
|
-
ndy{
|
191
|
-
|
217
|
+
[{L2}]{V_D_WN} --> [{_L2_}]{_V_D_WN_}
|
218
|
+
|
219
|
+
\** Palatalized **\
|
220
|
+
ndy{V_D_WN} --> ANDO THINF_DDOT_XL {_V_D_WN_}
|
221
|
+
|
192
222
|
\** Have some rules for d,b,g,gw although there are not theoritically possible, aldudénie e.g needs it **\
|
193
|
-
{
|
194
|
-
|
195
|
-
|
223
|
+
{L2_UN} === d * b * g * gw
|
224
|
+
|
225
|
+
\if "voiced_plosives_treatment == VOICED_PLOSIVES_AS_NASALIZED"
|
226
|
+
[{L2_UN}]{V_D_WN} --> [{_L2_}] {_V_D_WN_}
|
227
|
+
\elsif "voiced_plosives_treatment == VOICED_PLOSIVES_WITH_STROKE"
|
228
|
+
[{L2_UN}]{V_D_WN} --> [{_L2_}] THINF_STROKE_XL {_V_D_WN_}
|
196
229
|
\else
|
197
|
-
|
198
|
-
|
230
|
+
{_L2_UN_} === TW_EXT_21 * TW_EXT_22 * TW_EXT_23 * TW_EXT_24
|
231
|
+
[{L2_UN}]{V_D_WN} --> [{_L2_UN_}] {_V_D_WN_}
|
199
232
|
\endif
|
200
|
-
|
233
|
+
|
201
234
|
\if "st_pt_ht == ST_PT_HT_WITH_XTD"
|
202
|
-
{
|
203
|
-
{
|
204
|
-
|
205
|
-
{
|
206
|
-
|
207
|
-
[{L2_KER_ALVEOLARIZED_1}]{V_D_KER_WN} --> [{L2_IMG_ALVEOLARIZED_1}] {V_D_IMG__L_WN}
|
208
|
-
[{L2_KER_ALVEOLARIZED_2}]{V_D_KER_WN} --> [{L2_IMG_ALVEOLARIZED_2}] {V_D_IMG_XL_WN}
|
235
|
+
{L2_ALVEOLARIZED} === st * pt * ht
|
236
|
+
{_L2_ALVEOLARIZED_} === TW_EXT_11 * TW_EXT_12 * TW_EXT_13
|
237
|
+
|
238
|
+
[{L2_ALVEOLARIZED}]{V_D_WN} --> [{_L2_ALVEOLARIZED_}] {_V_D_WN_}
|
209
239
|
\endif
|
210
|
-
|
240
|
+
|
211
241
|
\** ===================== **\
|
212
242
|
\** 3RD LINE RULES **\
|
213
243
|
\** ===================== **\
|
214
|
-
{
|
215
|
-
{
|
216
|
-
{L3_KER_2} === (h,χ) * hw
|
217
|
-
{L3_IMG_2} === AHA * HWESTA
|
244
|
+
{L3} === (th,þ) * f * (h,χ) * hw
|
245
|
+
{_L3_} === SULE * FORMEN * AHA * HWESTA
|
218
246
|
|
219
247
|
\** NORMAL **\
|
220
|
-
[{
|
221
|
-
|
222
|
-
|
248
|
+
[{L3}]{V_D_WN} --> [{_L3_}]{_V_D_WN_}
|
249
|
+
|
223
250
|
\** OTHERS **\
|
224
|
-
hy{
|
225
|
-
|
251
|
+
hy{V_D_WN} --> HYARMEN THINF_DDOT_L {_V_D_WN_}
|
252
|
+
|
226
253
|
\** Override h with vowels (descendent of hy) **\
|
227
|
-
_h{
|
228
|
-
_h[{LVOWELS}]
|
229
|
-
|
254
|
+
_h{V_D} --> HYARMEN {_V_D_}
|
255
|
+
_h[{LVOWELS}] --> HYARMEN [{_LTEHTAR_}]
|
256
|
+
|
257
|
+
(h,χ) --> AHA
|
230
258
|
|
231
259
|
\** ===================== **\
|
232
260
|
\** 4TH LINE RULES **\
|
233
261
|
\** ===================== **\
|
234
|
-
{
|
235
|
-
{
|
236
|
-
|
262
|
+
{L4} === nt * mp * nc * nq \** Not nqu, due to preprocessor **\
|
263
|
+
{_L4_} === ANTO * AMPA * ANCA * UNQUE
|
264
|
+
|
237
265
|
\** NORMAL **\
|
238
|
-
[{
|
266
|
+
[{L4}]{V_D_WN} --> [{_L4_}]{_V_D_WN_}
|
239
267
|
\** OTHERS **\
|
240
|
-
nty{
|
268
|
+
nty{V_D_WN} --> ANTO THINF_DDOT_XL {_V_D_WN_}
|
241
269
|
|
242
270
|
\** ===================== **\
|
243
271
|
\** 5TH LINE RULES **\
|
244
272
|
\** ===================== **\
|
245
|
-
{
|
246
|
-
{
|
273
|
+
{L5} === n * m * ñ * ñw * _nw
|
274
|
+
{_L5_} === NUMEN * MALTA * NOLDO * NWALME * NWALME
|
247
275
|
|
248
|
-
[{
|
276
|
+
[{L5}]{V_D_WN} --> [{_L5_}]{_V_D_WN_}
|
249
277
|
|
250
|
-
ny{
|
251
|
-
nn{
|
252
|
-
my{
|
253
|
-
mm{
|
278
|
+
ny{V_D_WN} --> NUMEN THINF_DDOT_XL {_V_D_WN_}
|
279
|
+
nn{V_D_WN} --> NUMEN DASH_INF_L {_V_D_WN_}
|
280
|
+
my{V_D_WN} --> MALTA THINF_DDOT_XL {_V_D_WN_}
|
281
|
+
mm{V_D_WN} --> MALTA DASH_INF_L {_V_D_WN_}
|
254
282
|
|
255
283
|
\** ===================== **\
|
256
284
|
\** 6TH LINE RULES **\
|
257
285
|
\** ===================== **\
|
258
|
-
|
259
|
-
{
|
286
|
+
|
287
|
+
{_LONE_R_} === ORE
|
260
288
|
\if always_use_romen_for_r
|
261
|
-
|
289
|
+
\** Override lone r if option is on **\
|
290
|
+
{_LONE_R_} === ROMEN
|
262
291
|
\endif
|
263
|
-
|
264
|
-
{L6_KER} === r * v * y * w
|
265
|
-
{L6_IMG} === ROMEN * VALA * ANNA THINF_DDOT_L * VILYA
|
266
292
|
|
267
|
-
|
268
|
-
|
293
|
+
{L6} === r * v * y * w
|
294
|
+
{_L6_} === ROMEN * VALA * ANNA THINF_DDOT_L * VILYA
|
295
|
+
|
296
|
+
[{L6}]{V_D_WN} --> [{_L6_}]{_V_D_WN_}
|
297
|
+
|
269
298
|
\** r before long vowels is voiced **\
|
270
|
-
r[{LVOWELS}]
|
271
|
-
r --> {LONE_R_IMG} \** lonely r is not voiced, so override rule **\
|
299
|
+
r[{LVOWELS}] --> ROMEN [{_LTEHTAR_}]
|
272
300
|
|
273
|
-
\**
|
274
|
-
|
301
|
+
\** Override rule r + null **\
|
302
|
+
r --> {_LONE_R_} {_NVOWEL_}
|
275
303
|
|
276
|
-
rr{
|
277
|
-
ry{
|
278
|
-
rd{
|
304
|
+
rr{V_D_WN} --> ROMEN DASH_INF_S {_V_D_WN_}
|
305
|
+
ry{V_D_WN} --> ROMEN THINF_DDOT_XS {_V_D_WN_}
|
306
|
+
rd{V_D_WN} --> ARDA {_V_D_WN_}
|
279
307
|
|
280
308
|
\** ===================== **\
|
281
309
|
\** L LINE RULES **\
|
282
310
|
\** ===================== **\
|
283
|
-
{
|
284
|
-
{
|
285
|
-
|
286
|
-
[{
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
ly{V_D_KER_WN} --> LAMBE LAMBE_MARK_DDOT {V_D_IMG__S_WN}
|
292
|
-
hl{V_D_KER_WN} --> HALLA LAMBE {V_D_IMG__S_WN}
|
293
|
-
hr{V_D_KER_WN} --> HALLA ROMEN {V_D_IMG__S_WN}
|
311
|
+
{LINE_L} === l * ld * ll
|
312
|
+
{_LINE_L_} === LAMBE * ALDA * LAMBE LAMBE_MARK_TILD
|
313
|
+
|
314
|
+
[{LINE_L}]{V_D_WN} --> [{_LINE_L_}]{_V_D_WN_}
|
315
|
+
|
316
|
+
ly{V_D_WN} --> LAMBE LAMBE_MARK_DDOT {_V_D_WN_}
|
317
|
+
hl{V_D_WN} --> HALLA LAMBE {_V_D_WN_}
|
318
|
+
hr{V_D_WN} --> HALLA ROMEN {_V_D_WN_}
|
294
319
|
|
295
320
|
\** ===================== **\
|
296
321
|
\** S/Z LINE RULES **\
|
297
322
|
\** ===================== **\
|
298
|
-
{
|
299
|
-
{
|
323
|
+
{L8} === s * {SS}
|
324
|
+
{_L8_} === SILME_NUQUERNA * ESSE_NUQUERNA
|
300
325
|
|
301
|
-
[{
|
326
|
+
[{L8}]{V_D_WN} --> [{_L8_}]{_V_D_WN_}
|
302
327
|
|
303
328
|
\** Override lonely s / ss / before consonant **\
|
304
329
|
s --> SILME
|
305
|
-
s[{LVOWELS}] --> SILME
|
306
|
-
{SS}
|
307
|
-
{SS}[{LVOWELS}] --> ESSE
|
308
|
-
|
330
|
+
s[{LVOWELS}] --> SILME [{_LTEHTAR_}]
|
331
|
+
{SS} --> ESSE
|
332
|
+
{SS}[{LVOWELS}] --> ESSE [{_LTEHTAR_}]
|
333
|
+
|
334
|
+
\if implicit_a
|
335
|
+
sá --> SILME_NUQUERNA {A_SHAPE}
|
336
|
+
{SS}á --> ESSE_NUQUERNA {A_SHAPE}
|
337
|
+
\endif
|
338
|
+
|
309
339
|
\end
|
310
|
-
|
340
|
+
|
311
341
|
\beg rules punctuation
|
312
342
|
. --> PUNCT_DDOT
|
313
343
|
.. --> PUNCT_DOT PUNCT_DDOT PUNCT_DOT
|
@@ -334,11 +364,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
334
364
|
|
335
365
|
“ --> DQUOT_OPEN
|
336
366
|
” --> DQUOT_CLOSE
|
337
|
-
« --> DQUOT_OPEN
|
338
|
-
» --> DQUOT_CLOSE
|
367
|
+
« --> DQUOT_OPEN
|
368
|
+
» --> DQUOT_CLOSE
|
339
369
|
|
340
|
-
- --> {NULL}
|
341
|
-
– --> PUNCT_TILD
|
370
|
+
- --> {NULL}
|
371
|
+
– --> PUNCT_TILD
|
342
372
|
— --> PUNCT_TILD
|
343
373
|
|
344
374
|
[ --> PUNCT_PAREN_L
|
@@ -348,15 +378,15 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
348
378
|
{ --> PUNCT_PAREN_L
|
349
379
|
} --> PUNCT_PAREN_R
|
350
380
|
< --> PUNCT_PAREN_L
|
351
|
-
> --> PUNCT_PAREN_R
|
381
|
+
> --> PUNCT_PAREN_R
|
352
382
|
|
353
383
|
\** Not universal between fonts ... **\
|
354
384
|
$ --> BOOKMARK_SIGN
|
355
385
|
≤ --> RING_MARK_L \** Ring inscription left beautiful stuff **\
|
356
386
|
≥ --> RING_MARK_R \** Ring inscription right beautiful stuff **\
|
357
|
-
|
387
|
+
|
358
388
|
\end
|
359
|
-
|
389
|
+
|
360
390
|
\beg rules numbers
|
361
391
|
0 --> NUM_0
|
362
392
|
1 --> NUM_1
|
@@ -369,7 +399,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
369
399
|
8 --> NUM_8
|
370
400
|
9 --> NUM_9
|
371
401
|
A --> NUM_10
|
372
|
-
B --> NUM_11
|
402
|
+
B --> NUM_11
|
373
403
|
\end
|
374
|
-
|
375
|
-
\end
|
404
|
+
|
405
|
+
\end
|
406
|
+
|
407
|
+
\beg postprocessor
|
408
|
+
\** TODO : Move formen to S, move hyarmen to XS **\
|
409
|
+
\csub A_TEHTA "A_TEHTA_XS TELCO ARA" "A_TEHTA_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "A_TEHTA_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "A_TEHTA_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
410
|
+
\csub A_TEHTA_CIRCUM "A_TEHTA_CIRCUM_XS TELCO ARA" "A_TEHTA_CIRCUM_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "A_TEHTA_CIRCUM_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "A_TEHTA_CIRCUM_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
411
|
+
\csub E_TEHTA "E_TEHTA_XS TELCO ARA" "E_TEHTA_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "E_TEHTA_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "E_TEHTA_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
412
|
+
\csub I_TEHTA "I_TEHTA_XS TELCO ARA" "I_TEHTA_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "I_TEHTA_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "I_TEHTA_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
413
|
+
\csub O_TEHTA "O_TEHTA_XS TELCO ARA" "O_TEHTA_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "O_TEHTA_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "O_TEHTA_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
414
|
+
\csub U_TEHTA "U_TEHTA_XS TELCO ARA" "U_TEHTA_S ORE TW_EXT_11 TW_EXT_12 SULE HYARMEN" "U_TEHTA_L TINCO CALMA PARMA QUESSE AHA HWESTA LAMBE ALDA YANTA URE ROMEN ARDA SILME_NUQUERNA ESSE_NUQUERNA VALA ANNA VILYA FORMEN" "U_TEHTA_XL TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME"
|
415
|
+
\csub THINF_DOT "THINF_DOT_XS TELCO ROMEN ARDA" "THINF_DOT_L ORE TW_EXT_11 TW_EXT_12 TINCO PARMA SULE FORMEN VALA ANNA VILYA SILME ESSE AHA HWESTA HYARMEN YANTA URE" "THINF_DOT_XL QUESSE CALMA TW_EXT_13 TW_EXT_14 TW_EXT_21 TW_EXT_22 TW_EXT_23 TW_EXT_24 ANDO UMBAR ANGA UNGWE ANTO AMPA ANCA UNQUE NUMEN MALTA NOLDO NWALME" "LAMBE_MARK_DOT LAMBE ALDA"
|
416
|
+
\end
|
417
|
+
|
@@ -25,17 +25,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
25
25
|
\** Sindarin Angerthas Daeron mode for glaemscribe **\
|
26
26
|
|
27
27
|
\** changelog **\
|
28
|
-
\** 0.0.
|
29
|
-
|
28
|
+
\** 0.0.2 : Added thorn as equivalent for th **\
|
29
|
+
\** 0.0.3 : Moved out space to general element **\
|
30
30
|
|
31
31
|
\language "Sindarin"
|
32
32
|
\writing "Cirth"
|
33
33
|
\mode "Angerthas Daeron"
|
34
|
-
\version "0.0.
|
34
|
+
\version "0.0.3"
|
35
35
|
\authors "Talagan (Benjamin Babut)"
|
36
36
|
|
37
37
|
\charset cirth_ds true
|
38
38
|
|
39
|
+
\** We redefine the output space to have something beautiful, especially with erebor1 and erebor2 **\
|
40
|
+
\outspace CIRTH_SPACE_BIG
|
41
|
+
|
39
42
|
\beg preprocessor
|
40
43
|
\** Work exclusively downcase **\
|
41
44
|
\downcase
|
@@ -59,9 +62,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
59
62
|
|
60
63
|
\beg processor
|
61
64
|
|
62
|
-
\** We redefine the output space to have something beautiful, especially with erebor1 and erebor2 **\
|
63
|
-
\outspace CIRTH_SPACE_BIG
|
64
|
-
|
65
65
|
\beg rules litteral
|
66
66
|
a --> CIRTH_48
|
67
67
|
á --> CIRTH_49
|
@@ -22,6 +22,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
22
22
|
|
23
23
|
**\
|
24
24
|
|
25
|
+
\** 0.0.3 : Moved out space to general element **\
|
26
|
+
|
25
27
|
\language "Valarin"
|
26
28
|
\writing "Sarati"
|
27
29
|
\mode "Glaemscrafu"
|
@@ -30,6 +32,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
30
32
|
|
31
33
|
\charset sarati_eldamar true
|
32
34
|
|
35
|
+
\outspace SARATI_SPACE
|
36
|
+
|
37
|
+
|
33
38
|
\beg preprocessor
|
34
39
|
\** Work exclusively downcase **\
|
35
40
|
\downcase
|
@@ -55,7 +60,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
55
60
|
|
56
61
|
\beg processor
|
57
62
|
|
58
|
-
\outspace SARATI_SPACE
|
59
63
|
|
60
64
|
\beg rules litteral
|
61
65
|
|
data/lib/api/fragment.rb
CHANGED
data/lib/api/mode.rb
CHANGED
@@ -110,8 +110,8 @@ module Glaemscribe
|
|
110
110
|
ret = content.lines.map{ |l|
|
111
111
|
l = l.strip # Clean the lines
|
112
112
|
l = @pre_processor.apply(l)
|
113
|
-
l = @processor.apply(l
|
114
|
-
l = @post_processor.apply(l)
|
113
|
+
l = @processor.apply(l)
|
114
|
+
l = @post_processor.apply(l, charset)
|
115
115
|
}.join("\n")
|
116
116
|
|
117
117
|
return true, ret
|
data/lib/api/mode_parser.rb
CHANGED
@@ -70,7 +70,7 @@ module Glaemscribe
|
|
70
70
|
}
|
71
71
|
}
|
72
72
|
|
73
|
-
doc.root_node.gpath("
|
73
|
+
doc.root_node.gpath("postprocessor.outspace").each{ |outspace_element|
|
74
74
|
validate_presence_of_args(outspace_element, 1)
|
75
75
|
}
|
76
76
|
|
@@ -180,13 +180,8 @@ module Glaemscribe
|
|
180
180
|
|
181
181
|
if !operator_class
|
182
182
|
@mode.errors << Glaeml::Error.new(element.line,"Operator #{operator_name} is unknown.")
|
183
|
-
else
|
184
|
-
|
185
|
-
arg1 = element.args[1]
|
186
|
-
arg2 = element.args[2]
|
187
|
-
arg3 = element.args[3]
|
188
|
-
|
189
|
-
term.operators << operator_class.new([arg0,arg1,arg2,arg3])
|
183
|
+
else
|
184
|
+
term.operators << operator_class.new(element.args.clone)
|
190
185
|
end
|
191
186
|
}
|
192
187
|
|
@@ -277,9 +272,9 @@ module Glaemscribe
|
|
277
272
|
}
|
278
273
|
|
279
274
|
# Read the processor
|
280
|
-
doc.root_node.gpath("
|
281
|
-
val
|
282
|
-
@mode.
|
275
|
+
doc.root_node.gpath("outspace").each{ |outspace_element|
|
276
|
+
val = outspace_element.args[0]
|
277
|
+
@mode.post_processor.out_space = val.split.reject{|token| token.empty? }
|
283
278
|
}
|
284
279
|
|
285
280
|
doc.root_node.gpath("processor.rules").each{ |rules_element|
|