• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sile-typesetter / sile / 10864440887

14 Sep 2024 06:02PM UTC coverage: 58.033% (-10.9%) from 68.912%
10864440887

push

github

web-flow
Merge dea1be4ad into 8bed2e6bb

0 of 1173 new or added lines in 10 files covered. (0.0%)

1202 existing lines in 39 files now uncovered.

10797 of 18605 relevant lines covered (58.03%)

2074.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/languages/ca.lua
UNCOV
1
SILE.nodeMakers.ca = pl.class({
×
2
   _base = SILE.nodeMakers.unicode,
3

4
   -- overridden properties from parent class
5
   quoteTypes = { qu = true }, -- split tokens at apostrophes &c.
6
})
7

UNCOV
8
SILE.hyphenator.languages["ca"] = {}
×
9

UNCOV
10
SILE.hyphenator.languages["ca"].hyphenateSegments = function (node, segments, j)
×
11
   -- punt volat (middle dot) cancels when hyphenated
12
   -- Catalan typists may use a punt volat or precomposed characters.
13
   -- The shaper might behave differently depending on the font, so we need to
14
   -- be consistent here with the typist's choice.
UNCOV
15
   local hyphenChar = SILE.settings:get("font.hyphenchar")
×
16
   local replacement, hyphen
UNCOV
17
   if luautf8.find(segments[j], "ŀ$") then -- U+0140
×
UNCOV
18
      segments[j] = luautf8.sub(segments[j], 1, -2)
×
UNCOV
19
      replacement = SILE.shaper:createNnodes("ŀ", node.options)
×
UNCOV
20
      hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
×
UNCOV
21
   elseif luautf8.find(segments[j], "Ŀ$") then -- U+013F
×
22
      segments[j] = luautf8.sub(segments[j], 1, -2)
×
23
      replacement = SILE.shaper:createNnodes("Ŀ", node.options)
×
24
      hyphen = SILE.shaper:createNnodes("L" .. hyphenChar, node.options)
×
UNCOV
25
   elseif luautf8.find(segments[j], "l·$") then -- l + U+00B7
×
UNCOV
26
      segments[j] = luautf8.sub(segments[j], 1, -3)
×
UNCOV
27
      replacement = SILE.shaper:createNnodes("l·", node.options)
×
UNCOV
28
      hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
×
UNCOV
29
   elseif luautf8.find(segments[j], "L·$") then -- L + U+00B7
×
30
      segments[j] = luautf8.sub(segments[j], 1, -3)
×
31
      replacement = SILE.shaper:createNnodes("L·", node.options)
×
32
      hyphen = SILE.shaper:createNnodes("L" .. hyphenChar, node.options)
×
33
   else
UNCOV
34
      hyphen = SILE.shaper:createNnodes(hyphenChar, node.options)
×
35
   end
UNCOV
36
   local discretionary = SILE.types.node.discretionary({ replacement = replacement, prebreak = hyphen })
×
UNCOV
37
   return discretionary, segments
×
38
end
39

40
-- typos: ignore start
UNCOV
41
SILE.hyphenator.languages["ca"].patterns = {
×
42
   --
43
   -- Attach vowel groups to left consonant
44
   "1ba",
45
   "1be",
46
   "1bi",
47
   "1bo",
48
   "1bu",
49
   "1ca",
50
   "1ce",
51
   "1ci",
52
   "1co",
53
   "1cu",
54
   "1da",
55
   "1de",
56
   "1di",
57
   "1do",
58
   "3du",
59
   "1fa",
60
   "1fe",
61
   "1fi",
62
   "1fo",
63
   "1fu",
64
   "1ga",
65
   "1ge",
66
   "1gi",
67
   "1go",
68
   "1gu",
69
   "1ha",
70
   "1he",
71
   "1hi",
72
   "1ho",
73
   "1hu",
74
   "1ja",
75
   "1je",
76
   "1ji",
77
   "1jo",
78
   "1ju",
79
   "1la",
80
   "1le",
81
   "1li",
82
   "1lo",
83
   "1lu",
84
   "1ma",
85
   "1me",
86
   "1mi",
87
   "1mo",
88
   "1mu",
89
   "1na",
90
   "1ne",
91
   "3ni",
92
   "1no",
93
   "1nu",
94
   "1pa",
95
   "3pe",
96
   "3pi",
97
   "3po",
98
   "1pu",
99
   "1qu",
100
   "1ra",
101
   "1re",
102
   "1ri",
103
   "1ro",
104
   "1ru",
105
   "1sa",
106
   "1se",
107
   "1si",
108
   "1so",
109
   "1su",
110
   "1ta",
111
   "1te",
112
   "1ti",
113
   "1to",
114
   "1tu",
115
   "1va",
116
   "1ve",
117
   "1vi",
118
   "1vo",
119
   "1vu",
120
   "1xa",
121
   "1xe",
122
   "1xi",
123
   "1xo",
124
   "1xu",
125
   "1za",
126
   "1ze",
127
   "1zi",
128
   "1zo",
129
   "1zu",
130
   "1bé",
131
   "1bí",
132
   "1bó",
133
   "1bú",
134
   "1bà",
135
   "1bè",
136
   "1bò",
137
   "1cé",
138
   "1cí",
139
   "1có",
140
   "1cú",
141
   "1cà",
142
   "1cè",
143
   "1cò",
144
   "1ço",
145
   "1ça",
146
   "1çu",
147
   "1çó",
148
   "1çú",
149
   "1çà",
150
   "1çò",
151
   "1dé",
152
   "1dí",
153
   "1dó",
154
   "1dú",
155
   "1dà",
156
   "1dè",
157
   "1dò",
158
   "1fé",
159
   "1fí",
160
   "1fó",
161
   "1fú",
162
   "1fà",
163
   "1fè",
164
   "1fò",
165
   "1gé",
166
   "1gí",
167
   "1gó",
168
   "1gú",
169
   "1gà",
170
   "1gè",
171
   "1gò",
172
   "1gü",
173
   "1hé",
174
   "1hí",
175
   "1hó",
176
   "1hú",
177
   "1hà",
178
   "1hè",
179
   "1hò",
180
   "1jé",
181
   "1jí",
182
   "1jó",
183
   "1jú",
184
   "1jà",
185
   "1jè",
186
   "1jò",
187
   "1lé",
188
   "1lí",
189
   "1ló",
190
   "1lú",
191
   "1là",
192
   "1lè",
193
   "1lò",
194
   "1mé",
195
   "1mí",
196
   "1mó",
197
   "1mú",
198
   "1mà",
199
   "1mè",
200
   "1mò",
201
   "1né",
202
   "1ní",
203
   "1nó",
204
   "1nú",
205
   "1nà",
206
   "1nè",
207
   "1nò",
208
   "1pé",
209
   "1pí",
210
   "1pó",
211
   "1pú",
212
   "1pà",
213
   "1pè",
214
   "1pò",
215
   "1qü",
216
   "1ré",
217
   "1rí",
218
   "1ró",
219
   "1rú",
220
   "1rà",
221
   "1rè",
222
   "1rò",
223
   "1sé",
224
   "1sí",
225
   "1só",
226
   "1sú",
227
   "1sà",
228
   "1sè",
229
   "1sò",
230
   "1té",
231
   "1tí",
232
   "1tó",
233
   "1tú",
234
   "1tà",
235
   "1tè",
236
   "1tò",
237
   "1vé",
238
   "1ví",
239
   "1vó",
240
   "1vú",
241
   "1và",
242
   "1vè",
243
   "1vò",
244
   "1xé",
245
   "1xí",
246
   "1xó",
247
   "1xú",
248
   "1xà",
249
   "1xè",
250
   "1xò",
251
   "1zé",
252
   "1zí",
253
   "1zó",
254
   "1zú",
255
   "1zà",
256
   "1zè",
257
   "1zò",
258
   --
259
   -- Build legal consonant groups, leave other consonants bound to
260
   -- the previous group. This overrides part of the previous pattern
261
   -- group.
262
   "3l2la",
263
   "1l2le",
264
   "1l2li",
265
   "3l2lo",
266
   "1l2lu",
267
   "1b2la",
268
   "1b2le",
269
   "1b2li",
270
   "1b2lo",
271
   "1b2lu",
272
   "1b2ra",
273
   "1b2re",
274
   "1b2ri",
275
   "1b2ro",
276
   "1b2ru",
277
   "1c2la",
278
   "1c2le",
279
   "1c2li",
280
   "1c2lo",
281
   "1c2lu",
282
   "1c2ra",
283
   "1c2re",
284
   "1c2ri",
285
   "1c2ro",
286
   "1c2ru",
287
   "1d2ra",
288
   "1d2re",
289
   "1d2ri",
290
   "1d2ro",
291
   "1d2ru",
292
   "1f2la",
293
   "1f2le",
294
   "1f2li",
295
   "1f2lo",
296
   "1f2lu",
297
   "1f2ra",
298
   "1f2re",
299
   "1f2ri",
300
   "1f2ro",
301
   "1f2ru",
302
   "1g2la",
303
   "1g2le",
304
   "1g2li",
305
   "1g2lo",
306
   "1g2lu",
307
   "1g2ra",
308
   "1g2re",
309
   "1g2ri",
310
   "1g2ro",
311
   "1g2ru",
312
   "1p2la",
313
   "1p2le",
314
   "1p2li",
315
   "1p2lo",
316
   "1p2lu",
317
   "1p2ra",
318
   "1p2re",
319
   "1p2ri",
320
   "1p2ro",
321
   "1p2ru",
322
   "1t2ra",
323
   "1t2re",
324
   "1t2ri",
325
   "1t2ro",
326
   "1t2ru",
327
   "1n2ya",
328
   "1n2ye",
329
   "1n2yi",
330
   "1n2yo",
331
   "1n2yu",
332
   "1l2lé",
333
   "1l2lí",
334
   "1l2ló",
335
   "1l2lú",
336
   "1l2là",
337
   "1l2lè",
338
   "1l2lò",
339
   "1b2lé",
340
   "1b2lí",
341
   "1b2ló",
342
   "1b2lú",
343
   "1b2là",
344
   "1b2lè",
345
   "1b2lò",
346
   "1b2ré",
347
   "1b2rí",
348
   "1b2ró",
349
   "1b2rú",
350
   "1b2rà",
351
   "1b2rè",
352
   "1b2rò",
353
   "1c2lé",
354
   "1c2lí",
355
   "1c2ló",
356
   "1c2lú",
357
   "1c2là",
358
   "1c2lè",
359
   "1c2lò",
360
   "1c2ré",
361
   "1c2rí",
362
   "1c2ró",
363
   "1c2rú",
364
   "1c2rà",
365
   "1c2rè",
366
   "1c2rò",
367
   "1d2ré",
368
   "1d2rí",
369
   "1d2ró",
370
   "1d2rú",
371
   "1d2rà",
372
   "1d2rè",
373
   "1d2rò",
374
   "1f2lé",
375
   "1f2lí",
376
   "1f2ló",
377
   "1f2lú",
378
   "1f2là",
379
   "1f2lè",
380
   "1f2lò",
381
   "1f2ré",
382
   "1f2rí",
383
   "1f2ró",
384
   "1f2rú",
385
   "1f2rà",
386
   "1f2rè",
387
   "1f2rò",
388
   "1g2lé",
389
   "1g2lí",
390
   "1g2ló",
391
   "1g2lú",
392
   "1g2là",
393
   "1g2lè",
394
   "1g2lò",
395
   "1g2ré",
396
   "1g2rí",
397
   "1g2ró",
398
   "1g2rú",
399
   "1g2rà",
400
   "1g2rè",
401
   "1g2rò",
402
   "1p2lé",
403
   "1p2lí",
404
   "1p2ló",
405
   "1p2lú",
406
   "1p2là",
407
   "1p2lè",
408
   "1p2lò",
409
   "1p2ré",
410
   "1p2rí",
411
   "1p2ró",
412
   "1p2rú",
413
   "1p2rà",
414
   "1p2rè",
415
   "1p2rò",
416
   "1t2ré",
417
   "1t2rí",
418
   "1t2ró",
419
   "1t2rú",
420
   "1t2rà",
421
   "1t2rè",
422
   "1t2rò",
423
   "1n2yé",
424
   "1n2yí",
425
   "1n2yó",
426
   "1n2yú",
427
   "1n2yà",
428
   "1n2yè",
429
   "1n2yò",
430
   -- Vowels are kept together by the defaults
431
   -- We break here diphthongs and the like
432
   "a1a",
433
   "a1e",
434
   "a1o",
435
   "e1a",
436
   "e1e",
437
   "e1o",
438
   "i1a",
439
   "i1e",
440
   "i1o",
441
   "o1a",
442
   "o1e",
443
   "o1o",
444
   "u1a",
445
   "u1e",
446
   "u1o",
447
   "a1é",
448
   "a1í",
449
   "a1ó",
450
   "a1ú",
451
   "a1à",
452
   "a1è",
453
   "a1ò",
454
   "a1ï",
455
   "a1ü",
456
   "e1é",
457
   "e1í",
458
   "e1ó",
459
   "e1ú",
460
   "e1à",
461
   "e1è",
462
   "e1ò",
463
   "e1ï",
464
   "e1ü",
465
   "i1é",
466
   "i1í",
467
   "i1ó",
468
   "i1ú",
469
   "i1à",
470
   "i1è",
471
   "i1ò",
472
   "i1ï",
473
   "i1ü",
474
   "o1é",
475
   "o1í",
476
   "o1ó",
477
   "o1ú",
478
   "o1à",
479
   "o1è",
480
   "o1ò",
481
   "o1ï",
482
   "o1ü",
483
   "u1é",
484
   "u1í",
485
   "u1ó",
486
   "u1ú",
487
   "u1à",
488
   "u1è",
489
   "u1ò",
490
   "u1ï",
491
   "u1ü",
492
   "é1a",
493
   "é1e",
494
   "é1o",
495
   "é1ï",
496
   "é1ü",
497
   "í1a",
498
   "í1e",
499
   "í1o",
500
   "í1ï",
501
   "í1ü",
502
   "ó1a",
503
   "ó1e",
504
   "ó1o",
505
   "ó1ï",
506
   "ó1ü",
507
   "ú1a",
508
   "ú1e",
509
   "ú1o",
510
   "ú1ï",
511
   "ú1ü",
512
   "à1a",
513
   "à1e",
514
   "à1o",
515
   "à1ï",
516
   "à1ü",
517
   "è1a",
518
   "è1e",
519
   "è1o",
520
   "è1ï",
521
   "è1ü",
522
   "ò1a",
523
   "ò1e",
524
   "ò1o",
525
   "ò1ï",
526
   "ò1ü",
527
   "ï1a",
528
   "ï1e",
529
   "ï1o",
530
   "ï1é",
531
   "ï1í",
532
   "ï1ó",
533
   "ï1ú",
534
   "ï1à",
535
   "ï1è",
536
   "ï1ò",
537
   "ï1i",
538
   "ü1a",
539
   "ü1e",
540
   "ü1o",
541
   "ü1é",
542
   "ü1í",
543
   "ü1ó",
544
   "ü1ú",
545
   "ü1à",
546
   "ü1è",
547
   "ü1ò",
548
   -- We consider here i and u as semiconsonants
549
   "a1i2a",
550
   "a1i2e",
551
   "a1i2o",
552
   "a1i2u",
553
   "a1u2a",
554
   "a1u2e",
555
   "a1u2i",
556
   "a1u2o",
557
   "a1u2u",
558
   "e1i2a",
559
   "e1i2e",
560
   "e1i2o",
561
   "e1i2u",
562
   "e1u2a",
563
   "e1u2e",
564
   "e1u2i",
565
   "e1u2o",
566
   "e1u2u",
567
   "i1i2a",
568
   "i1i2e",
569
   "i1i2o",
570
   "i1i2u",
571
   "i1u2a",
572
   "i1u2e",
573
   "i1u2i",
574
   "i1u2o",
575
   "i1u2u",
576
   "o1i2a",
577
   "o1i2e",
578
   "o1i2o",
579
   "o1i2u",
580
   "o1u2a",
581
   "o1u2e",
582
   "o1u2o",
583
   "o1u2i",
584
   "o1u2u",
585
   "u1i2a",
586
   "u1i2e",
587
   "u1i2o",
588
   "u1i2u",
589
   "u1u2a",
590
   "u1u2e",
591
   "u1u2i",
592
   "u1u2o",
593
   "u1u2u",
594
   "a1i2é",
595
   "a1i2í",
596
   "a1i2ó",
597
   "a1i2ú",
598
   "a1i2à",
599
   "a1i2è",
600
   "a1i2ò",
601
   "a1u2é",
602
   "a1u2í",
603
   "a1u2ó",
604
   "a1u2ú",
605
   "a1u2à",
606
   "a1u2è",
607
   "a1u2ò",
608
   "e1i2é",
609
   "e1i2í",
610
   "e1i2ó",
611
   "e1i2ú",
612
   "e1i2à",
613
   "e1i2è",
614
   "e1i2ò",
615
   "e1u2é",
616
   "e1u2í",
617
   "e1u2ó",
618
   "e1u2ú",
619
   "e1u2à",
620
   "e1u2è",
621
   "e1u2ò",
622
   "i1i2é",
623
   "i1i2í",
624
   "i1i2ó",
625
   "i1i2ú",
626
   "i1i2à",
627
   "i1i2è",
628
   "i1i2ò",
629
   "i1u2é",
630
   "i1u2í",
631
   "i1u2ó",
632
   "i1u2ú",
633
   "i1u2à",
634
   "i1u2è",
635
   "i1u2ò",
636
   "o1i2é",
637
   "o1i2í",
638
   "o1i2ó",
639
   "o1i2ú",
640
   "o1i2à",
641
   "o1i2è",
642
   "o1i2ò",
643
   "o1u2é",
644
   "o1u2í",
645
   "o1u2ó",
646
   "o1u2ú",
647
   "o1u2à",
648
   "o1u2è",
649
   "o1u2ò",
650
   "u1i2é",
651
   "u1i2í",
652
   "u1i2ó",
653
   "u1i2ú",
654
   "u1i2à",
655
   "u1i2è",
656
   "u1i2ò",
657
   "u1u2é",
658
   "u1u2í",
659
   "u1u2ó",
660
   "u1u2ú",
661
   "u1u2à",
662
   "u1u2è",
663
   "u1u2ò",
664
   "é1i2a",
665
   "é1i2e",
666
   "é1i2o",
667
   "é1i2u",
668
   "é1u2a",
669
   "é1u2e",
670
   "é1u2o",
671
   "é1u2i",
672
   "é1u2u",
673
   "í1i2a",
674
   "í1i2e",
675
   "í1i2o",
676
   "í1i2u",
677
   "í1u2a",
678
   "í1u2e",
679
   "í1u2o",
680
   "í1u2i",
681
   "í1u2u",
682
   "ó1i2a",
683
   "ó1i2e",
684
   "ó1i2o",
685
   "ó1i2u",
686
   "ó1u2a",
687
   "ó1u2e",
688
   "ó1u2o",
689
   "ó1u2i",
690
   "ó1u2u",
691
   "ú1i2a",
692
   "ú1i2e",
693
   "ú1i2o",
694
   "ú1i2u",
695
   "ú1u2a",
696
   "ú1u2e",
697
   "ú1u2o",
698
   "ú1u2i",
699
   "ú1u2u",
700
   "à1i2a",
701
   "à1i2e",
702
   "à1i2o",
703
   "à1i2u",
704
   "à1u2a",
705
   "à1u2e",
706
   "à1u2o",
707
   "à1u2i",
708
   "à1u2u",
709
   "è1i2a",
710
   "è1i2e",
711
   "è1i2o",
712
   "è1i2u",
713
   "è1u2a",
714
   "è1u2e",
715
   "è1u2o",
716
   "è1u2i",
717
   "è1u2u",
718
   "ò1i2a",
719
   "ò1i2e",
720
   "ò1i2o",
721
   "ò1i2u",
722
   "ò1u2a",
723
   "ò1u2e",
724
   "ò1u2o",
725
   "ò1u2i",
726
   "ò1u2u",
727
   "ï1i2a",
728
   "ï1i2e",
729
   "ï1i2o",
730
   "ï1i2é",
731
   "ï1i2í",
732
   "ï1i2ó",
733
   "ï1i2ú",
734
   "ï1i2à",
735
   "ï1i2è",
736
   "ï1i2ò",
737
   "ï1i2u",
738
   "ï1u2a",
739
   "ï1u2e",
740
   "ï1u2o",
741
   "ï1u2é",
742
   "ï1u2í",
743
   "ï1u2ó",
744
   "ï1u2ú",
745
   "ï1u2à",
746
   "ï1u2è",
747
   "ï1u2ò",
748
   "ï1u2i",
749
   "ï1u2u",
750
   "ü1i2a",
751
   "ü1i2e",
752
   "ü1i2o",
753
   "ü1i2é",
754
   "ü1i2í",
755
   "ü1i2ó",
756
   "ü1i2ú",
757
   "ü1i2à",
758
   "ü1i2è",
759
   "ü1i2ò",
760
   "ü1i2u",
761
   "ü1u2a",
762
   "ü1u2e",
763
   "ü1u2o",
764
   "ü1u2é",
765
   "ü1u2í",
766
   "ü1u2ó",
767
   "ü1u2ú",
768
   "ü1u2à",
769
   "ü1u2è",
770
   "ü1u2ò",
771
   "ü1u2i",
772
   "ü1u2u",
773
   -- Semiconsonants at the beginning of word
774
   ".hi2a",
775
   ".hi2e",
776
   ".hi2o",
777
   ".hi2u",
778
   ".hu2a",
779
   ".hu2e",
780
   ".hu2i",
781
   ".hu2o",
782
   ".i2è",
783
   ".i2ò",
784
   ".u2è",
785
   ".u2ò",
786
   ".hi2é",
787
   ".hi2ó",
788
   ".hi2ú",
789
   ".hi2à",
790
   ".hi2è",
791
   ".hi2ò",
792
   ".hu2é",
793
   ".hu2í",
794
   ".hu2ó",
795
   ".hu2à",
796
   ".hu2è",
797
   ".hu2ò",
798
   -- And now the crescent diphtongs
799
   "gu2a",
800
   "gu2e",
801
   "gu2i",
802
   "gu2o",
803
   "qu2a",
804
   "qu2e",
805
   "qu2i",
806
   "qu2o",
807
   "gu2é",
808
   "gu2í",
809
   "gu2ó",
810
   "gu2à",
811
   "gu2è",
812
   "gu2ò",
813
   "qu2é",
814
   "qu2í",
815
   "qu2ó",
816
   "qu2à",
817
   "qu2è",
818
   "qu2ò",
819
   "gü2e",
820
   "gü2é",
821
   "gü2í",
822
   "gü2è",
823
   "gü2i",
824
   "qü2e",
825
   "qü2é",
826
   "qü2í",
827
   "qü2è",
828
   "qü2i",
829
   -- We add here some exceptions to the rules for diaeresis
830
   "a1isme.",
831
   "e1isme.",
832
   "i1isme.",
833
   "o1isme.",
834
   "u1isme.",
835
   "a1ista.",
836
   "e1ista.",
837
   "i1ista.",
838
   "o1ista.",
839
   "u1ista.",
840
   "a1um.",
841
   "e1um.",
842
   "i1um.",
843
   "o1um.",
844
   "u1um.",
845
   -- disallow hyphenation on possible prefixes
846
   ".antihi2",
847
   ".be2n",
848
   ".be2s",
849
   ".bi2s",
850
   ".ca2p",
851
   ".ce2l",
852
   ".cla2r",
853
   ".co2ll",
854
   ".co2n",
855
   ".co2r",
856
   ".de2s",
857
   ".di2s",
858
   ".en3a",
859
   ".hipe2r",
860
   ".hiperm2n",
861
   ".in3ac",
862
   ".in3ad",
863
   ".in3ap",
864
   ".in3es",
865
   ".in3o",
866
   ".inte2r",
867
   ".ma2l",
868
   ".mal1t2hus",
869
   ".pa2n",
870
   ".pe2r",
871
   ".pe3ri",
872
   ".pos2t",
873
   ".psa2l",
874
   ".rebe2s",
875
   ".re2d",
876
   ".su2b",
877
   ".sub3o",
878
   ".subde2s",
879
   ".supe2r",
880
   ".tran2s",
881
   -- Avoid hyphenation on some intra-word groups
882
   "g2no",
883
   "p2si",
884
   "p2se",
885
   "p2neu",
886
   "g2nò",
887
   "p2sí",
888
   -- Avoid wrong hyphenation on some foreign-origin words
889
   ".ch2",
890
   ".th2",
891
   "ein1s2tein",
892
   "ru1t2herford",
893
   "ni2etz1sc2he",
894
   -- Add some good patterns found by patgen
895
   "3exp",
896
   "3nef",
897
   "3nei",
898
   "3pr",
899
   "3ser",
900
   "a3ne",
901
   "a3ri",
902
   "bi3se",
903
   "des3ag",
904
   "des3ar",
905
   "des3av",
906
   "des3enc",
907
   "e3ism",
908
   "e3le",
909
   "e3rio",
910
   "e3ris",
911
   "es3aco",
912
   "es3af",
913
   "es3ap",
914
   "es3arr",
915
   "es3as",
916
   "es3int",
917
   "ig3n",
918
   "in3ex",
919
   "n3si",
920
   "o3ro",
921
   "qui3e",
922
   "s3emp",
923
   "s3esp",
924
   "sub3a",
925
   "ui3et",
926
   "o3gnò",
927
}
928
-- typos: ignore end
929

930
-- typos: ignore start
UNCOV
931
SILE.hyphenator.languages["ca"].exceptions = {
×
932
   "cu-rie",
933
   "cu-ries",
934
   "gei-sha",
935
   "gei-shes",
936
   "goua-che",
937
   "goua-ches",
938
   "hip-py",
939
   "hip-pies",
940
   "hob-by",
941
   "hob-bies",
942
   "jeep",
943
   "jeeps",
944
   "joule",
945
   "joules",
946
   "klee-nex",
947
   "klee-nexs",
948
   "lar-ghet-ti",
949
   "lar-ghet-to",
950
   "lied",
951
   "lieder",
952
   "nos-al-tres",
953
   "ro-yal-ties",
954
   "ro-yal-ty",
955
   "vos-al-tres",
956
   "whis-ky",
957
   "whis-kies",
958
}
959
-- typos: ignore end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc