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

sile-typesetter / sile / 9304060604

30 May 2024 02:07PM UTC coverage: 74.124% (-0.6%) from 74.707%
9304060604

push

github

alerque
style: Reformat Lua with stylua

8104 of 11995 new or added lines in 184 files covered. (67.56%)

15 existing lines in 11 files now uncovered.

12444 of 16788 relevant lines covered (74.12%)

7175.1 hits per line

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

80.0
/languages/ca.lua
1
SILE.nodeMakers.ca = pl.class({
4✔
2
   _base = SILE.nodeMakers.unicode,
2✔
3

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

8
SILE.hyphenator.languages["ca"] = {}
2✔
9

10
SILE.hyphenator.languages["ca"].hyphenateSegments = function (node, segments, j)
2✔
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.
15
   local hyphenChar = SILE.settings:get("font.hyphenchar")
29✔
16
   local replacement, hyphen
17
   if luautf8.find(segments[j], "ŀ$") then -- U+0140
29✔
18
      segments[j] = luautf8.sub(segments[j], 1, -2)
3✔
19
      replacement = SILE.shaper:createNnodes("ŀ", node.options)
6✔
20
      hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
6✔
21
   elseif luautf8.find(segments[j], "Ŀ$") then -- U+013F
26✔
NEW
22
      segments[j] = luautf8.sub(segments[j], 1, -2)
×
NEW
23
      replacement = SILE.shaper:createNnodes("Ŀ", node.options)
×
NEW
24
      hyphen = SILE.shaper:createNnodes("L" .. hyphenChar, node.options)
×
25
   elseif luautf8.find(segments[j], "l·$") then -- l + U+00B7
26✔
26
      segments[j] = luautf8.sub(segments[j], 1, -3)
3✔
27
      replacement = SILE.shaper:createNnodes("l·", node.options)
6✔
28
      hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
6✔
29
   elseif luautf8.find(segments[j], "L·$") then -- L + U+00B7
23✔
NEW
30
      segments[j] = luautf8.sub(segments[j], 1, -3)
×
NEW
31
      replacement = SILE.shaper:createNnodes("L·", node.options)
×
NEW
32
      hyphen = SILE.shaper:createNnodes("L" .. hyphenChar, node.options)
×
33
   else
34
      hyphen = SILE.shaper:createNnodes(hyphenChar, node.options)
46✔
35
   end
36
   local discretionary = SILE.nodefactory.discretionary({ replacement = replacement, prebreak = hyphen })
29✔
37
   return discretionary, segments
29✔
38
end
39

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

928
SILE.hyphenator.languages["ca"].exceptions = {
2✔
929
   "cu-rie",
930
   "cu-ries",
931
   "gei-sha",
932
   "gei-shes",
933
   "goua-che",
934
   "goua-ches",
935
   "hip-py",
936
   "hip-pies",
937
   "hob-by",
938
   "hob-bies",
939
   "jeep",
940
   "jeeps",
941
   "joule",
942
   "joules",
943
   "klee-nex",
944
   "klee-nexs",
945
   "lar-ghet-ti",
946
   "lar-ghet-to",
947
   "lied",
948
   "lieder",
949
   "nos-al-tres",
950
   "ro-yal-ties",
951
   "ro-yal-ty",
952
   "vos-al-tres",
953
   "whis-ky",
954
   "whis-kies",
955
}
2✔
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