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

sile-typesetter / sile / 8736205729

18 Apr 2024 10:16AM UTC coverage: 63.747% (-11.0%) from 74.718%
8736205729

push

github

alerque
chore(classes): Correct typos in user facing deprecation message

10118 of 15872 relevant lines covered (63.75%)

6751.63 hits per line

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

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

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

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

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.
15
  local hyphenChar = SILE.settings:get("font.hyphenchar")
×
16
  local replacement, hyphen
17
  if luautf8.find(segments[j], "ŀ$") then -- U+0140
×
18
    segments[j] = luautf8.sub(segments[j], 1, -2)
×
19
    replacement = SILE.shaper:createNnodes("ŀ", node.options)
×
20
    hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
×
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)
×
25
  elseif luautf8.find(segments[j], "l·$") then -- l + U+00B7
×
26
    segments[j] = luautf8.sub(segments[j], 1, -3)
×
27
    replacement = SILE.shaper:createNnodes("l·", node.options)
×
28
    hyphen = SILE.shaper:createNnodes("l" .. hyphenChar, node.options)
×
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
34
    hyphen = SILE.shaper:createNnodes(hyphenChar, node.options)
×
35
  end
36
  local discretionary = SILE.nodefactory.discretionary({ replacement = replacement, prebreak = hyphen })
×
37
  return discretionary, segments
×
38
end
39

40
SILE.hyphenator.languages["ca"].patterns =
×
41
   {
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

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