Dave Jarvis' Repositories

git clone https://repo.autonoma.ca/repo/keenquotes.git
M build.gradle
61 61
}
62 62
63
task lib(type: Jar) {
64
  archiveFileName = "${applicationName}.jar"
65
  destinationDirectory = file("$buildDir/lib")
66
67
  from "$buildDir/classes/java/main"
68
  exclude "**/KeenQuotes.class"
69
}
70
71
lib.configure {
72
  dependsOn compileJava
73
}
74
63 75
tasks.named('test') {
64 76
  useJUnitPlatform()
M src/main/java/com/whitemagicsoftware/keenquotes/Contractions.java
175 175
  private static final Set<String> BEGAN_UNAMBIGUOUS = Set.of(
176 176
    "aporth",
177
    "boutcha",
178
    "boutchu",
179
    "cept",
180
    "cos",
181
    "dillo",
182
    "em",
183
    "fraid",
184
    "gainst",
185
    "im",
186
    "n",
187
    "neath",
188
    "nother",
189
    "nuff",
190
    "onna",
191
    "onna'",
192
    // horse
193
    "oss",
194
    // horses
195
    "osses",
196
    "pon",
197
    "s",
198
    "sblood",
199
    "scuse",
200
    "sfar",
201
    "sfoot",
202
    "t",
203
    "taint",
204
    "tain",
205
    "til",
206
    "tis",
207
    "tisn",
208
    "tshall",
209
    "twas",
210
    "twasn",
211
    "tween",
212
    "twere",
213
    "tweren",
214
    "twixt",
215
    "twon",
216
    "twou",
217
    "twould",
218
    "twouldn",
219
    "ve"
220
  );
221
222
  /**
223
   * Words having a straight apostrophe that may be either part of a
224
   * contraction or a word that stands alone beside an opening single quote.
225
   */
226
  private static final Set<String> BEGAN_AMBIGUOUS = Set.of(
227
    // have
228
    "a",
229
    // about|boxing match
230
    "bout",
231
    // because|causal
232
    "cause",
233
    // what you|choo choo train
234
    "choo",
235
    // he|e pluribus unum
236
    "e",
237
    // here|earlier
238
    "ere",
239
    // afro|to and fro
240
    "fro",
241
    // whore|ho ho!
242
    "ho",
243
    // okay|letter K
244
    "kay",
245
    // lo|lo and behold
246
    "lo",
247
    // ???
248
    "listed",
249
    // ???
250
    "nation",
251
    // are|regarding
252
    "re",
253
    // what's up|to sup
254
    "sup",
255
    // it will|twill fabric
256
    "twill",
257
    // them|utterance
258
    "um",
259
    // is that|Iranian village
260
    "zat"
261
  );
262
263
  private static final Set<String> ENDED_AMBIGUOUS = Set.of(
264
    // give|martial arts garment
265
    "gi",
266
    // in|I
267
    "i",
268
    // of|letter o
269
    "o"
270
  );
271
272
  private static final Set<String> ENDED_UNAMBIGUOUS = Set.of(
273
    // and
274
    "an",
275
    // for/before
276
    "fo",
277
    // friend
278
    "frien",
279
    // just
280
    "jus",
281
    // lord
282
    "lor",
283
    // myself
284
    "masel",
285
    // old
286
    "ol",
287
    // San (Francisco)
288
    "Sa",
289
    // shift
290
    "shif",
291
    // the
292
    "th",
293
    // what
294
    "wha",
295
    // with
296
    "wi",
297
    // world
298
    "worl",
299
    // Top ~3500 common -ing words as English contractions.
300
    "abandonin",
301
    "abettin",
302
    "abidin",
303
    "abolishin",
304
    "aboundin",
305
    "absorbin",
306
    "abstainin",
307
    "abstractin",
308
    "abusin",
309
    "abuttin",
310
    "acceleratin",
311
    "acceptin",
312
    "accessin",
313
    "accommodatin",
314
    "accompanyin",
315
    "accomplishin",
316
    "accordin",
317
    "accountin",
318
    "accruin",
319
    "accumulatin",
320
    "accusin",
321
    "achievin",
322
    "achin",
323
    "acknowledgin",
324
    "acquaintin",
325
    "acquirin",
326
    "actin",
327
    "activatin",
328
    "adaptin",
329
    "addin",
330
    "addressin",
331
    "adherin",
332
    "adjoinin",
333
    "adjustin",
334
    "administerin",
335
    "admirin",
336
    "admittin",
337
    "admonishin",
338
    "adoptin",
339
    "adorin",
340
    "adornin",
341
    "advancin",
342
    "advertisin",
343
    "advisin",
344
    "advocatin",
345
    "affectin",
346
    "affirmin",
347
    "afflictin",
348
    "affordin",
349
    "agein",
350
    "aggravatin",
351
    "aggregatin",
352
    "agin",
353
    "agitatin",
354
    "agonizin",
355
    "agreein",
356
    "ailin",
357
    "aimin",
358
    "airin",
359
    "alarmin",
360
    "alertin",
361
    "alienatin",
362
    "alightin",
363
    "alignin",
364
    "allegin",
365
    "alleviatin",
366
    "allocatin",
367
    "allowin",
368
    "alludin",
369
    "allurin",
370
    "alterin",
371
    "alternatin",
372
    "amassin",
373
    "amazin",
374
    "amendin",
375
    "amountin",
376
    "amplifyin",
377
    "amusin",
378
    "analysin",
379
    "analyzin",
380
    "anchorin",
381
    "anglin",
382
    "animatin",
383
    "annealin",
384
    "annihilatin",
385
    "announcin",
386
    "annoyin",
387
    "anointin",
388
    "answerin",
389
    "anticipatin",
390
    "anythin",
391
    "apologizin",
392
    "appallin",
393
    "appealin",
394
    "appearin",
395
    "appertainin",
396
    "appetizin",
397
    "applaudin",
398
    "applyin",
399
    "appointin",
400
    "appraisin",
401
    "appreciatin",
402
    "apprehendin",
403
    "approachin",
404
    "appropriatin",
405
    "approvin",
406
    "approximatin",
407
    "archin",
408
    "archivin",
409
    "arguin",
410
    "arisin",
411
    "arousin",
412
    "arrangin",
413
    "arrestin",
414
    "arrivin",
415
    "articulatin",
416
    "ascendin",
417
    "ascertainin",
418
    "ascribin",
419
    "askin",
420
    "assailin",
421
    "assaultin",
422
    "assemblin",
423
    "assertin",
424
    "assessin",
425
    "assignin",
426
    "assimilatin",
427
    "assistin",
428
    "associatin",
429
    "assumin",
430
    "assurin",
431
    "astonishin",
432
    "astoundin",
433
    "atonin",
434
    "attachin",
435
    "attackin",
436
    "attainin",
437
    "attemptin",
438
    "attendin",
439
    "attestin",
440
    "attractin",
441
    "attributin",
442
    "auditin",
443
    "augmentin",
444
    "authorin",
445
    "authorisin",
446
    "authorizin",
447
    "availin",
448
    "avengin",
449
    "averagin",
450
    "avertin",
451
    "avoidin",
452
    "awaitin",
453
    "awakenin",
454
    "awakin",
455
    "awardin",
456
    "awnin",
457
    "babblin",
458
    "babysittin",
459
    "backin",
460
    "backslidin",
461
    "backtrackin",
462
    "bafflin",
463
    "baggin",
464
    "bailin",
465
    "baitin",
466
    "bakin",
467
    "balancin",
468
    "baldin",
469
    "balloonin",
470
    "ballotin",
471
    "bandagin",
472
    "bandin",
473
    "bangin",
474
    "banishin",
475
    "bankin",
476
    "bannin",
477
    "banquetin",
478
    "banterin",
479
    "baptizin",
480
    "bargainin",
481
    "barin",
482
    "barkin",
483
    "barrin",
484
    "barterin",
485
    "bashin",
486
    "baskin",
487
    "bastin",
488
    "bathin",
489
    "batterin",
490
    "battin",
491
    "battlin",
492
    "bawlin",
493
    "bayin",
494
    "beadin",
495
    "beamin",
496
    "bearin",
497
    "beatin",
498
    "beautifyin",
499
    "beckonin",
500
    "becomin",
501
    "beddin",
502
    "beepin",
503
    "befittin",
504
    "befriendin",
505
    "begettin",
506
    "beggin",
507
    "beginnin",
508
    "beguilin",
509
    "behavin",
510
    "beheadin",
511
    "beholdin",
512
    "behrin",
513
    "beijin",
514
    "bein",
515
    "belchin",
516
    "believin",
517
    "belittlin",
518
    "bellowin",
519
    "belongin",
520
    "beltin",
521
    "bemoanin",
522
    "benchmarkin",
523
    "bendin",
524
    "benefitin",
525
    "bennin",
526
    "beratin",
527
    "berin",
528
    "beseechin",
529
    "besettin",
530
    "besiegin",
531
    "bestowin",
532
    "bestsellin",
533
    "betrayin",
534
    "betterin",
535
    "bettin",
536
    "bewailin",
537
    "bewilderin",
538
    "bewitchin",
539
    "biasin",
540
    "bickerin",
541
    "bicyclin",
542
    "biddin",
543
    "bidin",
544
    "bikin",
545
    "billin",
546
    "billowin",
547
    "bindin",
548
    "birthin",
549
    "bisectin",
550
    "bitin",
551
    "blackenin",
552
    "blackin",
553
    "blackmailin",
554
    "blamin",
555
    "blanchin",
556
    "blarin",
557
    "blasphemin",
558
    "blastin",
559
    "blazin",
560
    "bleachin",
561
    "bleatin",
562
    "bleedin",
563
    "blendin",
564
    "blessin",
565
    "blightin",
566
    "blindin",
567
    "blinkin",
568
    "blisterin",
569
    "bloatin",
570
    "blockadin",
571
    "blockin",
572
    "bloggin",
573
    "bloodlettin",
574
    "bloomin",
575
    "blossomin",
576
    "blottin",
577
    "blowin",
578
    "bluffin",
579
    "blunderin",
580
    "blurrin",
581
    "blushin",
582
    "blusterin",
583
    "boardin",
584
    "boastin",
585
    "boatin",
586
    "bodybuildin",
587
    "boein",
588
    "bogglin",
589
    "boilin",
590
    "bolsterin",
591
    "boltin",
592
    "bombardin",
593
    "bombin",
594
    "bondin",
595
    "bookin",
596
    "bookkeepin",
597
    "boomin",
598
    "boostin",
599
    "bootin",
600
    "bootstrappin",
601
    "borderin",
602
    "borin",
603
    "borrowin",
604
    "botherin",
605
    "bottlin",
606
    "bouncin",
607
    "boundin",
608
    "bowin",
609
    "bowlin",
610
    "bowrin",
611
    "bowstrin",
612
    "boxin",
613
    "boycottin",
614
    "bracin",
615
    "bracketin",
616
    "braggin",
617
    "braidin",
618
    "brainstormin",
619
    "brainwashin",
620
    "brakin",
621
    "branchin",
622
    "brandin",
623
    "brandishin",
624
    "bravin",
625
    "brawlin",
626
    "brayin",
627
    "breachin",
628
    "breakfastin",
629
    "breakin",
630
    "breastfeedin",
631
    "breathin",
632
    "breathtakin",
633
    "breedin",
634
    "brewin",
635
    "bribin",
636
    "bridgin",
637
    "briefin",
638
    "brightenin",
639
    "brimmin",
640
    "bringin",
641
    "bristlin",
642
    "britlin",
643
    "broadcastin",
644
    "broadenin",
645
    "broilin",
646
    "brokerin",
647
    "broodin",
648
    "brownin",
649
    "browsin",
650
    "bruisin",
651
    "brushin",
652
    "bubblin",
653
    "buckin",
654
    "bucklin",
655
    "buddin",
656
    "budgetin",
657
    "bufferin",
658
    "buffetin",
659
    "buggin",
660
    "buildin",
661
    "bulgin",
662
    "bullyin",
663
    "bumblin",
664
    "bumpin",
665
    "bundlin",
666
    "bunglin",
667
    "buntin",
668
    "burdenin",
669
    "burgeonin",
670
    "burnin",
671
    "burrowin",
672
    "burstin",
673
    "buryin",
674
    "busin",
675
    "bustin",
676
    "bustlin",
677
    "busyin",
678
    "butcherin",
679
    "buttin",
680
    "buttonin",
681
    "buyin",
682
    "buzzin",
683
    "bypassin",
684
    "cachin",
685
    "calculatin",
686
    "callin",
687
    "calmin",
688
    "campaignin",
689
    "campin",
690
    "cancelin",
691
    "cannin",
692
    "canvassin",
693
    "cappin",
694
    "captivatin",
695
    "capturin",
696
    "caregivin",
697
    "caressin",
698
    "carpetin",
699
    "carryin",
700
    "carvin",
701
    "cascadin",
702
    "casin",
703
    "castin",
704
    "catalogin",
705
    "cataloguin",
706
    "catchin",
707
    "categorizin",
708
    "caterin",
709
    "causin",
710
    "ceasin",
711
    "ceilin",
712
    "celebratin",
713
    "cementin",
714
    "centerin",
715
    "certifyin",
716
    "chafin",
717
    "challengin",
718
    "championin",
719
    "changin",
720
    "channelin",
721
    "channin",
722
    "chantin",
723
    "characterizin",
724
    "chargin",
725
    "chartin",
726
    "chasin",
727
    "chatterin",
728
    "chattin",
729
    "cheatin",
730
    "checkin",
731
    "cheerin",
732
    "cherishin",
733
    "chewin",
734
    "childbearin",
735
    "chillin",
736
    "chippin",
737
    "chirpin",
738
    "chokin",
739
    "choosin",
740
    "choppin",
741
    "christenin",
742
    "chucklin",
743
    "churnin",
744
    "circlin",
745
    "circulatin",
746
    "citin",
747
    "civilizin",
748
    "claddin",
749
    "claimin",
750
    "clamberin",
751
    "clamorin",
752
    "clampin",
753
    "clangin",
754
    "clankin",
755
    "clappin",
756
    "clarifyin",
757
    "clashin",
758
    "claspin",
759
    "classifyin",
760
    "clatterin",
761
    "claverin",
762
    "clawin",
763
    "cleanin",
764
    "cleansin",
765
    "clearin",
766
    "cleavin",
767
    "clenchin",
768
    "clickin",
769
    "climbin",
770
    "clin",
771
    "clingin",
772
    "clippin",
773
    "cloggin",
774
    "clonin",
775
    "closin",
776
    "clothin",
777
    "clottin",
778
    "clusterin",
779
    "clutchin",
780
    "coachin",
781
    "coastin",
782
    "coatin",
783
    "coaxin",
784
    "codin",
785
    "coexistin",
786
    "coilin",
787
    "coincidin",
788
    "coinin",
789
    "collaboratin",
790
    "collapsin",
791
    "collectin",
792
    "collidin",
793
    "colonisin",
794
    "colonizin",
795
    "colorin",
796
    "colourin",
797
    "combatin",
798
    "combin",
799
    "combinin",
800
    "comfortin",
801
    "comin",
802
    "commandin",
803
    "commemoratin",
804
    "commencin",
805
    "commendin",
806
    "commentin",
807
    "commissionin",
808
    "committin",
809
    "communicatin",
810
    "commutin",
811
    "comparin",
812
    "compellin",
813
    "compensatin",
814
    "competin",
815
    "compilin",
816
    "complainin",
817
    "completin",
818
    "complicatin",
819
    "complyin",
820
    "composin",
821
    "compostin",
822
    "compoundin",
823
    "comprehendin",
824
    "compressin",
825
    "comprisin",
826
    "compromisin",
827
    "computin",
828
    "concealin",
829
    "concedin",
830
    "conceivin",
831
    "concentratin",
832
    "conceptualizin",
833
    "concernin",
834
    "concludin",
835
    "concurrin",
836
    "condemnin",
837
    "condensin",
838
    "condescendin",
839
    "conditionin",
840
    "conductin",
841
    "conferencin",
842
    "conferrin",
843
    "confessin",
844
    "confidin",
845
    "configurin",
846
    "confinin",
847
    "confirmin",
848
    "conflictin",
849
    "conformin",
850
    "confoundin",
851
    "confrontin",
852
    "confusin",
853
    "congratulatin",
854
    "conjurin",
855
    "connectin",
856
    "connin",
857
    "conquerin",
858
    "consentin",
859
    "conservin",
860
    "considerin",
861
    "consistin",
862
    "consolidatin",
863
    "consolin",
864
    "conspirin",
865
    "constitutin",
866
    "constrainin",
867
    "constructin",
868
    "construin",
869
    "consultin",
870
    "consumin",
871
    "contactin",
872
    "containin",
873
    "contaminatin",
874
    "contemplatin",
875
    "contendin",
876
    "contestin",
877
    "continuin",
878
    "contractin",
879
    "contradictin",
880
    "contrastin",
881
    "contributin",
882
    "contrivin",
883
    "controllin",
884
    "convenin",
885
    "convergin",
886
    "conversin",
887
    "convertin",
888
    "conveyin",
889
    "convincin",
890
    "cooin",
891
    "cookin",
892
    "coolin",
893
    "cooperatin",
894
    "coordinatin",
895
    "copin",
896
    "copyin",
897
    "correctin",
898
    "correlatin",
899
    "correspondin",
900
    "corruptin",
901
    "costin",
902
    "coughin",
903
    "counselin",
904
    "counsellin",
905
    "counteractin",
906
    "counterfeitin",
907
    "counterin",
908
    "countervailin",
909
    "countin",
910
    "couplin",
911
    "coursin",
912
    "courtin",
913
    "coverin",
914
    "cowerin",
915
    "crackin",
916
    "cracklin",
917
    "cradlin",
918
    "craftin",
919
    "crampin",
920
    "crashin",
921
    "cravin",
922
    "crawlin",
923
    "creakin",
924
    "creatin",
925
    "creditin",
926
    "creepin",
927
    "cringin",
928
    "cripplin",
929
    "criticizin",
930
    "critiquin",
931
    "croakin",
932
    "croppin",
933
    "crossin",
934
    "crouchin",
935
    "crowdin",
936
    "crowin",
937
    "crownin",
938
    "cruisin",
939
    "crumblin",
940
    "crunchin",
941
    "crusadin",
942
    "crushin",
943
    "cryin",
944
    "culminatin",
945
    "cultivatin",
946
    "cummin",
947
    "cunnin",
948
    "cuppin",
949
    "curbin",
950
    "curin",
951
    "curlin",
952
    "cursin",
953
    "curtailin",
954
    "curvin",
955
    "cushin",
956
    "customizin",
957
    "cuttin",
958
    "cyclin",
959
    "dabbin",
960
    "dabblin",
961
    "damagin",
962
    "damnin",
963
    "dampenin",
964
    "dampin",
965
    "dancin",
966
    "danglin",
967
    "darjeelin",
968
    "darkenin",
969
    "darklin",
970
    "darlin",
971
    "darnin",
972
    "dartin",
973
    "dashin",
974
    "datin",
975
    "dauntin",
976
    "dawdlin",
977
    "dawnin",
978
    "daydreamin",
979
    "dazzlin",
980
    "deadenin",
981
    "deafenin",
982
    "dealin",
983
    "debasin",
984
    "debatin",
985
    "debilitatin",
986
    "debriefin",
987
    "debuggin",
988
    "decayin",
989
    "deceivin",
990
    "decidin",
991
    "decipherin",
992
    "decisionmakin",
993
    "deckin",
994
    "declaimin",
995
    "declarin",
996
    "declinin",
997
    "decodin",
998
    "decommissionin",
999
    "decomposin",
1000
    "deconstructin",
1001
    "decoratin",
1002
    "decouplin",
1003
    "decreasin",
1004
    "dedicatin",
1005
    "deducin",
1006
    "deductin",
1007
    "deemin",
1008
    "deepenin",
1009
    "deerin",
1010
    "defaultin",
1011
    "defeatin",
1012
    "defendin",
1013
    "deferrin",
1014
    "defilin",
1015
    "definin",
1016
    "deflectin",
1017
    "deformin",
1018
    "defraudin",
1019
    "defrayin",
1020
    "defyin",
1021
    "degeneratin",
1022
    "degradin",
1023
    "dehumanizin",
1024
    "delayin",
1025
    "delegatin",
1026
    "deletin",
1027
    "deliberatin",
1028
    "delightin",
1029
    "delineatin",
1030
    "deliverin",
1031
    "deludin",
1032
    "delvin",
1033
    "demandin",
1034
    "demeanin",
1035
    "demin",
1036
    "democratizin",
1037
    "demolishin",
1038
    "demonstratin",
1039
    "demoralizin",
1040
    "denigratin",
1041
    "dennin",
1042
    "denotin",
1043
    "denouncin",
1044
    "denyin",
1045
    "departin",
1046
    "dependin",
1047
    "depictin",
1048
    "depletin",
1049
    "deplorin",
1050
    "deployin",
1051
    "depositin",
1052
    "deprecatin",
1053
    "depreciatin",
1054
    "depressin",
1055
    "deprivin",
1056
    "derivin",
1057
    "descendin",
1058
    "describin",
1059
    "desertin",
1060
    "deservin",
1061
    "designatin",
1062
    "designin",
1063
    "desirin",
1064
    "desolatin",
1065
    "despairin",
1066
    "despatchin",
1067
    "despisin",
1068
    "despondin",
1069
    "destabilizin",
1070
    "destroyin",
1071
    "detachin",
1072
    "detailin",
1073
    "detainin",
1074
    "detectin",
1075
    "deterioratin",
1076
    "determinin",
1077
    "deterrin",
1078
    "devastatin",
1079
    "developin",
1080
    "deviatin",
1081
    "devisin",
1082
    "devolvin",
1083
    "devotin",
1084
    "devourin",
1085
    "diagnosin",
1086
    "dialin",
1087
    "dictatin",
1088
    "dietin",
1089
    "differentiatin",
1090
    "differin",
1091
    "diffusin",
1092
    "digestin",
1093
    "diggin",
1094
    "digitizin",
1095
    "dilatin",
1096
    "dilutin",
1097
    "diminishin",
1098
    "dimmin",
1099
    "dinin",
1100
    "dippin",
1101
    "directin",
1102
    "disablin",
1103
    "disagreein",
1104
    "disappearin",
1105
    "disappointin",
1106
    "disapprovin",
1107
    "disarmin",
1108
    "disbandin",
1109
    "disbelievin",
1110
    "discardin",
1111
    "discernin",
1112
    "dischargin",
1113
    "disciplinin",
1114
    "disclosin",
1115
    "disconcertin",
1116
    "disconnectin",
1117
    "discontinuin",
1118
    "discountin",
1119
    "discouragin",
1120
    "discoursin",
1121
    "discoverin",
1122
    "discreditin",
1123
    "discriminatin",
1124
    "discussin",
1125
    "disdainin",
1126
    "disembarkin",
1127
    "disengagin",
1128
    "disfigurin",
1129
    "disguisin",
1130
    "disgustin",
1131
    "disheartenin",
1132
    "disinfectin",
1133
    "disintegratin",
1134
    "dislikin",
1135
    "dislodgin",
1136
    "dismantlin",
1137
    "dismissin",
1138
    "dismountin",
1139
    "disobeyin",
1140
    "disorientin",
1141
    "disparagin",
1142
    "dispatchin",
1143
    "dispellin",
1144
    "dispensin",
1145
    "dispersin",
1146
    "displacin",
1147
    "displayin",
1148
    "displeasin",
1149
    "disposin",
1150
    "disputin",
1151
    "disqualifyin",
1152
    "disquietin",
1153
    "disregardin",
1154
    "disruptin",
1155
    "dissectin",
1156
    "dissemblin",
1157
    "disseminatin",
1158
    "dissentin",
1159
    "dissipatin",
1160
    "dissolvin",
1161
    "distancin",
1162
    "distillin",
1163
    "distinguishin",
1164
    "distortin",
1165
    "distractin",
1166
    "distressin",
1167
    "distributin",
1168
    "disturbin",
1169
    "divergin",
1170
    "diversifyin",
1171
    "divertin",
1172
    "divestin",
1173
    "dividin",
1174
    "divin",
1175
    "divinin",
1176
    "divorcin",
1177
    "dizzyin",
1178
    "dockin",
1179
    "doctorin",
1180
    "documentin",
1181
    "dodgin",
1182
    "doddlin",
1183
    "doin",
1184
    "dominatin",
1185
    "domineerin",
1186
    "donatin",
1187
    "donnin",
1188
    "doodlin",
1189
    "dopin",
1190
    "dorkin",
1191
    "dosin",
1192
    "dotin",
1193
    "dottin",
1194
    "doublin",
1195
    "doubtin",
1196
    "dowlin",
1197
    "downin",
1198
    "downloadin",
1199
    "downplayin",
1200
    "downsizin",
1201
    "dozin",
1202
    "draftin",
1203
    "draggin",
1204
    "drainin",
1205
    "dramatisin",
1206
    "dramatizin",
1207
    "drapin",
1208
    "drawin",
1209
    "drawlin",
1210
    "dreadin",
1211
    "dreamin",
1212
    "dredgin",
1213
    "drenchin",
1214
    "dressin",
1215
    "dressmakin",
1216
    "dribblin",
1217
    "driftin",
1218
    "drillin",
1219
    "drinkin",
1220
    "drippin",
1221
    "drivin",
1222
    "drizzlin",
1223
    "dronin",
1224
    "droolin",
1225
    "droopin",
1226
    "droppin",
1227
    "drownin",
1228
    "drummin",
1229
    "dryin",
1230
    "duckin",
1231
    "duelin",
1232
    "duellin",
1233
    "dumpin",
1234
    "dunnin",
1235
    "duplicatin",
1236
    "durin",
1237
    "dwellin",
1238
    "dwindlin",
1239
    "dyein",
1240
    "dyin",
1241
    "ealin",
1242
    "earnin",
1243
    "earrin",
1244
    "earthin",
1245
    "easin",
1246
    "easygoin",
1247
    "eatin",
1248
    "eavesdroppin",
1249
    "ebbin",
1250
    "echoin",
1251
    "eclipsin",
1252
    "economizin",
1253
    "eddyin",
1254
    "edgin",
1255
    "edifyin",
1256
    "editin",
1257
    "educatin",
1258
    "effacin",
1259
    "effectin",
1260
    "ejectin",
1261
    "elaboratin",
1262
    "elbowin",
1263
    "electin",
1264
    "electioneerin",
1265
    "electrifyin",
1266
    "elevatin",
1267
    "elicitin",
1268
    "eliminatin",
1269
    "elucidatin",
1270
    "eludin",
1271
    "elutin",
1272
    "emanatin",
1273
    "emancipatin",
1274
    "embalmin",
1275
    "embarkin",
1276
    "embarrassin",
1277
    "embeddin",
1278
    "embellishin",
1279
    "embodyin",
1280
    "embracin",
1281
    "embroiderin",
1282
    "emergin",
1283
    "emigratin",
1284
    "emittin",
1285
    "emphasisin",
1286
    "emphasizin",
1287
    "employin",
1288
    "empowerin",
1289
    "emptyin",
1290
    "emulatin",
1291
    "enablin",
1292
    "enactin",
1293
    "encapsulatin",
1294
    "enchantin",
1295
    "encirclin",
1296
    "enclosin",
1297
    "encodin",
1298
    "encompassin",
1299
    "encounterin",
1300
    "encouragin",
1301
    "encroachin",
1302
    "encryptin",
1303
    "endangerin",
1304
    "endearin",
1305
    "endeavorin",
1306
    "endeavourin",
1307
    "endin",
1308
    "endorsin",
1309
    "endowin",
1310
    "endurin",
1311
    "energizin",
1312
    "enervatin",
1313
    "enfoldin",
1314
    "enforcin",
1315
    "engagin",
1316
    "engenderin",
1317
    "engineerin",
1318
    "engravin",
1319
    "engrossin",
1320
    "engulfin",
1321
    "enhancin",
1322
    "enjoinin",
1323
    "enjoyin",
1324
    "enlargin",
1325
    "enlightenin",
1326
    "enlistin",
1327
    "enlivenin",
1328
    "ennoblin",
1329
    "enquirin",
1330
    "enrichin",
1331
    "enrollin",
1332
    "enslavin",
1333
    "ensuin",
1334
    "ensurin",
1335
    "entailin",
1336
    "entanglin",
1337
    "enterin",
1338
    "enterprisin",
1339
    "entertainin",
1340
    "enthrallin",
1341
    "enticin",
1342
    "entitlin",
1343
    "entrancin",
1344
    "entreatin",
1345
    "entrenchin",
1346
    "entrustin",
1347
    "enumeratin",
1348
    "enunciatin",
1349
    "envelopin",
1350
    "envisionin",
1351
    "envyin",
1352
    "eppin",
1353
    "equalin",
1354
    "equalizin",
1355
    "equallin",
1356
    "equatin",
1357
    "equippin",
1358
    "eradicatin",
1359
    "erasin",
1360
    "erectin",
1361
    "erlin",
1362
    "erodin",
1363
    "errin",
1364
    "eruptin",
1365
    "escalatin",
1366
    "escapin",
1367
    "eschewin",
1368
    "escortin",
1369
    "espin",
1370
    "espousin",
1371
    "establishin",
1372
    "estain",
1373
    "estimatin",
1374
    "etchin",
1375
    "evacuatin",
1376
    "evadin",
1377
    "evaluatin",
1378
    "evangelizin",
1379
    "evaporatin",
1380
    "evenin",
1381
    "everlastin",
1382
    "everythin",
1383
    "evidencin",
1384
    "evincin",
1385
    "evokin",
1386
    "evolvin",
1387
    "ewin",
1388
    "exacerbatin",
1389
    "exactin",
1390
    "exaggeratin",
1391
    "exaltin",
1392
    "examinin",
1393
    "exasperatin",
1394
    "excavatin",
1395
    "exceedin",
1396
    "excellin",
1397
    "exceptin",
1398
    "exchangin",
1399
    "excitin",
1400
    "exclaimin",
1401
    "excludin",
1402
    "excruciatin",
1403
    "excusin",
1404
    "executin",
1405
    "exemplifyin",
1406
    "exemptin",
1407
    "exercisin",
1408
    "exertin",
1409
    "exhalin",
1410
    "exhaustin",
1411
    "exhibitin",
1412
    "exhilaratin",
1413
    "exhortin",
1414
    "existin",
1415
    "exitin",
1416
    "expandin",
1417
    "expectin",
1418
    "expeditin",
1419
    "expellin",
1420
    "expendin",
1421
    "experiencin",
1422
    "experimentin",
1423
    "expirin",
1424
    "explainin",
1425
    "explicatin",
1426
    "explodin",
1427
    "exploitin",
1428
    "explorin",
1429
    "exportin",
1430
    "exposin",
1431
    "expoundin",
1432
    "expressin",
1433
    "extendin",
1434
    "extenuatin",
1435
    "exterminatin",
1436
    "externalizin",
1437
    "extinguishin",
1438
    "extollin",
1439
    "extortin",
1440
    "extractin",
1441
    "extrapolatin",
1442
    "extricatin",
1443
    "exudin",
1444
    "exultin",
1445
    "eyein",
1446
    "eyin",
1447
    "fabricatin",
1448
    "facilitatin",
1449
    "facin",
1450
    "factorin",
1451
    "fadin",
1452
    "failin",
1453
    "faintin",
1454
    "fakin",
1455
    "fallin",
1456
    "falterin",
1457
    "fancyin",
1458
    "fannin",
1459
    "farmin",
1460
    "farthin",
1461
    "fascinatin",
1462
    "fashionin",
1463
    "fastenin",
1464
    "fastin",
1465
    "fatiguin",
1466
    "fattenin",
1467
    "faultin",
1468
    "favorin",
1469
    "favourin",
1470
    "fawnin",
1471
    "fearin",
1472
    "feastin",
1473
    "featurin",
1474
    "feedin",
1475
    "feelin",
1476
    "feignin",
1477
    "fellin",
1478
    "fencin",
1479
    "fermentin",
1480
    "fertilizin",
1481
    "festerin",
1482
    "fetchin",
1483
    "fiddlin",
1484
    "fidgetin",
1485
    "fieldin",
1486
    "fightin",
1487
    "figurin",
1488
    "filin",
1489
    "fillin",
1490
    "filmin",
1491
    "filmmakin",
1492
    "filterin",
1493
    "financin",
1494
    "findin",
1495
    "fingerin",
1496
    "fingerprintin",
1497
    "finishin",
1498
    "firin",
1499
    "fishin",
1500
    "fittin",
1501
    "fixin",
1502
    "flaggin",
1503
    "flailin",
1504
    "flamin",
1505
    "flankin",
1506
    "flappin",
1507
    "flarin",
1508
    "flashin",
1509
    "flattenin",
1510
    "flatterin",
1511
    "flauntin",
1512
    "flavorin",
1513
    "fledglin",
1514
    "fleein",
1515
    "fleetin",
1516
    "flemin",
1517
    "flemmin",
1518
    "flexin",
1519
    "flickerin",
1520
    "flickin",
1521
    "flinchin",
1522
    "flingin",
1523
    "flippin",
1524
    "flirtin",
1525
    "flittin",
1526
    "floatin",
1527
    "flockin",
1528
    "floggin",
1529
    "floodin",
1530
    "floorin",
1531
    "floppin",
1532
    "flounderin",
1533
    "flourishin",
1534
    "flowerin",
1535
    "flowin",
1536
    "fluctuatin",
1537
    "flushin",
1538
    "flutterin",
1539
    "flyin",
1540
    "foamin",
1541
    "focusin",
1542
    "focussin",
1543
    "foldin",
1544
    "followin",
1545
    "fondlin",
1546
    "foolin",
1547
    "footin",
1548
    "foragin",
1549
    "forbearin",
1550
    "forbiddin",
1551
    "forcin",
1552
    "forebodin",
1553
    "forecastin",
1554
    "foregoin",
1555
    "foregroundin",
1556
    "foreseein",
1557
    "foreshadowin",
1558
    "forfeitin",
1559
    "forgettin",
1560
    "forgin",
1561
    "forgivin",
1562
    "formattin",
1563
    "formin",
1564
    "formulatin",
1565
    "forsakin",
1566
    "forthcomin",
1567
    "fortifyin",
1568
    "forwardin",
1569
    "fosterin",
1570
    "foulin",
1571
    "foundin",
1572
    "foundlin",
1573
    "fowlin",
1574
    "fracturin",
1575
    "framin",
1576
    "franchisin",
1577
    "freakin",
1578
    "freein",
1579
    "freestandin",
1580
    "freezin",
1581
    "frequentin",
1582
    "frettin",
1583
    "frightenin",
1584
    "frontin",
1585
    "frostin",
1586
    "frownin",
1587
    "fruitin",
1588
    "frustratin",
1589
    "fryin",
1590
    "fuckin",
1591
    "fuelin",
1592
    "fulfillin",
1593
    "fumblin",
1594
    "fumin",
1595
    "functionin",
1596
    "fundin",
1597
    "fundraisin",
1598
    "furnishin",
1599
    "furtherin",
1600
    "fusin",
1601
    "fussin",
1602
    "gaggin",
1603
    "gainin",
1604
    "gallin",
1605
    "gallopin",
1606
    "gamblin",
1607
    "gapin",
1608
    "gardenin",
1609
    "garnerin",
1610
    "gaspin",
1611
    "gatherin",
1612
    "gatin",
1613
    "gaugin",
1614
    "gazin",
1615
    "gearin",
1616
    "geldin",
1617
    "genderin",
1618
    "generalizin",
1619
    "generatin",
1620
    "genotypin",
1621
    "germinatin",
1622
    "gesticulatin",
1623
    "gesturin",
1624
    "gettin",
1625
    "gigglin",
1626
    "gildin",
1627
    "gissin",
1628
    "givin",
1629
    "glancin",
1630
    "glarin",
1631
    "glazin",
1632
    "gleamin",
1633
    "gleanin",
1634
    "glidin",
1635
    "glimmerin",
1636
    "glintin",
1637
    "glistenin",
1638
    "glitterin",
1639
    "gloamin",
1640
    "gloatin",
1641
    "globalizin",
1642
    "glorifyin",
1643
    "gloryin",
1644
    "glowerin",
1645
    "glowin",
1646
    "gluin",
1647
    "gnashin",
1648
    "gnawin",
1649
    "goerin",
1650
    "goin",
1651
    "goldin",
1652
    "golfin",
1653
    "goodlookin",
1654
    "gorin",
1655
    "goslin",
1656
    "gossipin",
1657
    "gougin",
1658
    "governin",
1659
    "grabbin",
1660
    "gradin",
1661
    "graduatin",
1662
    "graftin",
1663
    "grantin",
1664
    "graphin",
1665
    "grapplin",
1666
    "graspin",
1667
    "gratifyin",
1668
    "grayin",
1669
    "graylin",
1670
    "grazin",
1671
    "greenin",
1672
    "greetin",
1673
    "grievin",
1674
    "grillin",
1675
    "grimacin",
1676
    "grindin",
1677
    "grinnin",
1678
    "grippin",
1679
    "groanin",
1680
    "groomin",
1681
    "gropin",
1682
    "groundbreakin",
1683
    "groundin",
1684
    "groupin",
1685
    "grovellin",
1686
    "growin",
1687
    "growlin",
1688
    "grubbin",
1689
    "grudgin",
1690
    "gruelin",
1691
    "grumblin",
1692
    "gruntin",
1693
    "guaranteein",
1694
    "guardin",
1695
    "guessin",
1696
    "guidin",
1697
    "gulpin",
1698
    "gunnin",
1699
    "gurglin",
1700
    "gushin",
1701
    "hackin",
1702
    "hagglin",
1703
    "hailin",
1704
    "hallucinatin",
1705
    "haltin",
1706
    "halvin",
1707
    "hammerin",
1708
    "hammin",
1709
    "hamperin",
1710
    "hamstrin",
1711
    "handicappin",
1712
    "handin",
1713
    "handlin",
1714
    "handshakin",
1715
    "handwritin",
1716
    "hangin",
1717
    "hankerin",
1718
    "happenin",
1719
    "haranguin",
1720
    "harassin",
1721
    "harborin",
1722
    "harbourin",
1723
    "hardenin",
1724
    "hardin",
1725
    "hardworkin",
1726
    "harin",
1727
    "harkin",
1728
    "harmin",
1729
    "harmonisin",
1730
    "harmonizin",
1731
    "harnessin",
1732
    "harpin",
1733
    "harrowin",
1734
    "harryin",
1735
    "harvestin",
1736
    "hashin",
1737
    "hastenin",
1738
    "hatchin",
1739
    "hatin",
1740
    "hauin",
1741
    "haulin",
1742
    "hauntin",
1743
    "havin",
1744
    "hawkin",
1745
    "hayin",
1746
    "hazardin",
1747
    "hazin",
1748
    "headin",
1749
    "healin",
1750
    "heapin",
1751
    "hearin",
1752
    "hearkenin",
1753
    "heartbreakin",
1754
    "heartenin",
1755
    "heartrendin",
1756
    "heartwarmin",
1757
    "heatin",
1758
    "heavin",
1759
    "hedgin",
1760
    "heedin",
1761
    "heightenin",
1762
    "hein",
1763
    "helpin",
1764
    "helsin",
177
    // about you
178
    "boutcha",
179
    // about you
180
    "boutchu",
181
    // about well
182
    "boutwell",
183
    // except
184
    "cept",
185
    // decided
186
    "cided",
187
    // because
188
    "cos",
189
    "dillo",
190
    // them
191
    "em",
192
    // afraid
193
    "fraid",
194
    // against
195
    "gainst",
196
    // him
197
    "im",
198
    // and
199
    "n",
200
    // beneath
201
    "neath",
202
    // another
203
    "nother",
204
    // enough
205
    "nuff",
206
    // gonna
207
    "onna",
208
    "onna'",
209
    // horse
210
    "oss",
211
    // horses
212
    "osses",
213
    // upon
214
    "pon",
215
    "s",
216
    "sblood",
217
    // excuse
218
    "scuse",
219
    "sfar",
220
    "sfoot",
221
    // considered
222
    "sidered",
223
    "t",
224
    "taint",
225
    "tain",
226
    "til",
227
    "tis",
228
    "tisn",
229
    "tshall",
230
    "twas",
231
    "twasn",
232
    "tween",
233
    "twere",
234
    "tweren",
235
    "twixt",
236
    "twon",
237
    "twou",
238
    "twould",
239
    "twouldn",
240
    // have
241
    "ve",
242
    // exactly
243
    "xactly"
244
  );
245
246
  /**
247
   * Words having a straight apostrophe that may be either part of a
248
   * contraction or a word that stands alone beside an opening single quote.
249
   */
250
  private static final Set<String> BEGAN_AMBIGUOUS = Set.of(
251
    // have
252
    "a",
253
    // about|boxing match
254
    "bout",
255
    // because|causal
256
    "cause",
257
    // what you|choo choo train
258
    "choo",
259
    // he|e pluribus unum
260
    "e",
261
    // here|earlier
262
    "ere",
263
    // afro|to and fro
264
    "fro",
265
    // whore|ho ho!
266
    "ho",
267
    // okay|letter K
268
    "kay",
269
    // lo|lo and behold
270
    "lo",
271
    // ???
272
    "listed",
273
    // ???
274
    "nation",
275
    // are|regarding
276
    "re",
277
    // what's up|to sup
278
    "sup",
279
    // it will|twill fabric
280
    "twill",
281
    // them|utterance
282
    "um",
283
    // is that|Iranian village
284
    "zat"
285
  );
286
287
  private static final Set<String> ENDED_AMBIGUOUS = Set.of(
288
    // give|martial arts garment
289
    "gi",
290
    // in|I
291
    "i",
292
    // of|letter o
293
    "o"
294
  );
295
296
  private static final Set<String> ENDED_UNAMBIGUOUS = Set.of(
297
    // and
298
    "an",
299
    // for/before
300
    "fo",
301
    // friend
302
    "frien",
303
    // just
304
    "jes",
305
    // just
306
    "jus",
307
    // lord
308
    "lor",
309
    // myself
310
    "masel",
311
    // old
312
    "ol",
313
    // San (Francisco)
314
    "Sa",
315
    // shift
316
    "shif",
317
    // the
318
    "th",
319
    // what
320
    "wha",
321
    // with
322
    "wi",
323
    // world
324
    "worl",
325
    // Top ~3500 common -ing words as English contractions.
326
    "abandonin",
327
    "abettin",
328
    "abidin",
329
    "abolishin",
330
    "aboundin",
331
    "absorbin",
332
    "abstainin",
333
    "abstractin",
334
    "abusin",
335
    "abuttin",
336
    "acceleratin",
337
    "acceptin",
338
    "accessin",
339
    "accommodatin",
340
    "accompanyin",
341
    "accomplishin",
342
    "accordin",
343
    "accountin",
344
    "accruin",
345
    "accumulatin",
346
    "accusin",
347
    "achievin",
348
    "achin",
349
    "acknowledgin",
350
    "acquaintin",
351
    "acquirin",
352
    "actin",
353
    "activatin",
354
    "adaptin",
355
    "addin",
356
    "addressin",
357
    "adherin",
358
    "adjoinin",
359
    "adjustin",
360
    "administerin",
361
    "admirin",
362
    "admittin",
363
    "admonishin",
364
    "adoptin",
365
    "adorin",
366
    "adornin",
367
    "advancin",
368
    "advertisin",
369
    "advisin",
370
    "advocatin",
371
    "affectin",
372
    "affirmin",
373
    "afflictin",
374
    "affordin",
375
    "agein",
376
    "aggravatin",
377
    "aggregatin",
378
    "agin",
379
    "agitatin",
380
    "agonizin",
381
    "agreein",
382
    "ailin",
383
    "aimin",
384
    "airin",
385
    "alarmin",
386
    "alertin",
387
    "alienatin",
388
    "alightin",
389
    "alignin",
390
    "allegin",
391
    "alleviatin",
392
    "allocatin",
393
    "allowin",
394
    "alludin",
395
    "allurin",
396
    "alterin",
397
    "alternatin",
398
    "amassin",
399
    "amazin",
400
    "amendin",
401
    "amountin",
402
    "amplifyin",
403
    "amusin",
404
    "analysin",
405
    "analyzin",
406
    "anchorin",
407
    "anglin",
408
    "animatin",
409
    "annealin",
410
    "annihilatin",
411
    "announcin",
412
    "annoyin",
413
    "anointin",
414
    "answerin",
415
    "anticipatin",
416
    "anythin",
417
    "apologizin",
418
    "appallin",
419
    "appealin",
420
    "appearin",
421
    "appertainin",
422
    "appetizin",
423
    "applaudin",
424
    "applyin",
425
    "appointin",
426
    "appraisin",
427
    "appreciatin",
428
    "apprehendin",
429
    "approachin",
430
    "appropriatin",
431
    "approvin",
432
    "approximatin",
433
    "archin",
434
    "archivin",
435
    "arguin",
436
    "arisin",
437
    "arousin",
438
    "arrangin",
439
    "arrestin",
440
    "arrivin",
441
    "articulatin",
442
    "ascendin",
443
    "ascertainin",
444
    "ascribin",
445
    "askin",
446
    "assailin",
447
    "assaultin",
448
    "assemblin",
449
    "assertin",
450
    "assessin",
451
    "assignin",
452
    "assimilatin",
453
    "assistin",
454
    "associatin",
455
    "assumin",
456
    "assurin",
457
    "astonishin",
458
    "astoundin",
459
    "atonin",
460
    "attachin",
461
    "attackin",
462
    "attainin",
463
    "attemptin",
464
    "attendin",
465
    "attestin",
466
    "attractin",
467
    "attributin",
468
    "auditin",
469
    "augmentin",
470
    "authorin",
471
    "authorisin",
472
    "authorizin",
473
    "availin",
474
    "avengin",
475
    "averagin",
476
    "avertin",
477
    "avoidin",
478
    "awaitin",
479
    "awakenin",
480
    "awakin",
481
    "awardin",
482
    "awnin",
483
    "babblin",
484
    "babysittin",
485
    "backin",
486
    "backslidin",
487
    "backtrackin",
488
    "bafflin",
489
    "baggin",
490
    "bailin",
491
    "baitin",
492
    "bakin",
493
    "balancin",
494
    "baldin",
495
    "balloonin",
496
    "ballotin",
497
    "bandagin",
498
    "bandin",
499
    "bangin",
500
    "banishin",
501
    "bankin",
502
    "bannin",
503
    "banquetin",
504
    "banterin",
505
    "baptizin",
506
    "bargainin",
507
    "barin",
508
    "barkin",
509
    "barrin",
510
    "barterin",
511
    "bashin",
512
    "baskin",
513
    "bastin",
514
    "bathin",
515
    "batterin",
516
    "battin",
517
    "battlin",
518
    "bawlin",
519
    "bayin",
520
    "beadin",
521
    "beamin",
522
    "bearin",
523
    "beatin",
524
    "beautifyin",
525
    "beckonin",
526
    "becomin",
527
    "beddin",
528
    "beepin",
529
    "befittin",
530
    "befriendin",
531
    "begettin",
532
    "beggin",
533
    "beginnin",
534
    "beguilin",
535
    "behavin",
536
    "beheadin",
537
    "beholdin",
538
    "behrin",
539
    "beijin",
540
    "bein",
541
    "belchin",
542
    "believin",
543
    "belittlin",
544
    "bellowin",
545
    "belongin",
546
    "beltin",
547
    "bemoanin",
548
    "benchmarkin",
549
    "bendin",
550
    "benefitin",
551
    "bennin",
552
    "beratin",
553
    "berin",
554
    "beseechin",
555
    "besettin",
556
    "besiegin",
557
    "bestowin",
558
    "bestsellin",
559
    "betrayin",
560
    "betterin",
561
    "bettin",
562
    "bewailin",
563
    "bewilderin",
564
    "bewitchin",
565
    "biasin",
566
    "bickerin",
567
    "bicyclin",
568
    "biddin",
569
    "bidin",
570
    "bikin",
571
    "billin",
572
    "billowin",
573
    "bindin",
574
    "birthin",
575
    "bisectin",
576
    "bitin",
577
    "blackenin",
578
    "blackin",
579
    "blackmailin",
580
    "blamin",
581
    "blanchin",
582
    "blarin",
583
    "blasphemin",
584
    "blastin",
585
    "blazin",
586
    "bleachin",
587
    "bleatin",
588
    "bleedin",
589
    "blendin",
590
    "blessin",
591
    "blightin",
592
    "blindin",
593
    "blinkin",
594
    "blisterin",
595
    "bloatin",
596
    "blockadin",
597
    "blockin",
598
    "bloggin",
599
    "bloodlettin",
600
    "bloomin",
601
    "blossomin",
602
    "blottin",
603
    "blowin",
604
    "bluffin",
605
    "blunderin",
606
    "blurrin",
607
    "blushin",
608
    "blusterin",
609
    "boardin",
610
    "boastin",
611
    "boatin",
612
    "bodybuildin",
613
    "boein",
614
    "bogglin",
615
    "boilin",
616
    "bolsterin",
617
    "boltin",
618
    "bombardin",
619
    "bombin",
620
    "bondin",
621
    "bookin",
622
    "bookkeepin",
623
    "boomin",
624
    "boostin",
625
    "bootin",
626
    "bootstrappin",
627
    "borderin",
628
    "borin",
629
    "borrowin",
630
    "botherin",
631
    "bottlin",
632
    "bouncin",
633
    "boundin",
634
    "bowin",
635
    "bowlin",
636
    "bowrin",
637
    "bowstrin",
638
    "boxin",
639
    "boycottin",
640
    "bracin",
641
    "bracketin",
642
    "braggin",
643
    "braidin",
644
    "brainstormin",
645
    "brainwashin",
646
    "brakin",
647
    "branchin",
648
    "brandin",
649
    "brandishin",
650
    "bravin",
651
    "brawlin",
652
    "brayin",
653
    "breachin",
654
    "breakfastin",
655
    "breakin",
656
    "breastfeedin",
657
    "breathin",
658
    "breathtakin",
659
    "breedin",
660
    "brewin",
661
    "bribin",
662
    "bridgin",
663
    "briefin",
664
    "brightenin",
665
    "brimmin",
666
    "brinin",
667
    "bringin",
668
    "bristlin",
669
    "britlin",
670
    "broadcastin",
671
    "broadenin",
672
    "broilin",
673
    "brokerin",
674
    "broodin",
675
    "brownin",
676
    "browsin",
677
    "bruisin",
678
    "brushin",
679
    "bubblin",
680
    "buckin",
681
    "bucklin",
682
    "buddin",
683
    "budgetin",
684
    "bufferin",
685
    "buffetin",
686
    "buggin",
687
    "buildin",
688
    "bulgin",
689
    "bullyin",
690
    "bumblin",
691
    "bumpin",
692
    "bundlin",
693
    "bunglin",
694
    "buntin",
695
    "burdenin",
696
    "burgeonin",
697
    "burnin",
698
    "burrowin",
699
    "burstin",
700
    "buryin",
701
    "busin",
702
    "bustin",
703
    "bustlin",
704
    "busyin",
705
    "butcherin",
706
    "buttin",
707
    "buttonin",
708
    "buyin",
709
    "buzzin",
710
    "bypassin",
711
    "cachin",
712
    "calculatin",
713
    "callin",
714
    "calmin",
715
    "campaignin",
716
    "campin",
717
    "cancelin",
718
    "cannin",
719
    "canvassin",
720
    "cappin",
721
    "captivatin",
722
    "capturin",
723
    "caregivin",
724
    "caressin",
725
    "carpetin",
726
    "carryin",
727
    "carvin",
728
    "cascadin",
729
    "casin",
730
    "castin",
731
    "catalogin",
732
    "cataloguin",
733
    "catchin",
734
    "categorizin",
735
    "caterin",
736
    "causin",
737
    "ceasin",
738
    "ceilin",
739
    "celebratin",
740
    "cementin",
741
    "centerin",
742
    "certifyin",
743
    "chafin",
744
    "challengin",
745
    "championin",
746
    "changin",
747
    "channelin",
748
    "channin",
749
    "chantin",
750
    "characterizin",
751
    "chargin",
752
    "chartin",
753
    "chasin",
754
    "chatterin",
755
    "chattin",
756
    "cheatin",
757
    "checkin",
758
    "cheerin",
759
    "cherishin",
760
    "chewin",
761
    "childbearin",
762
    "chillin",
763
    "chippin",
764
    "chirpin",
765
    "chokin",
766
    "choosin",
767
    "choppin",
768
    "christenin",
769
    "chucklin",
770
    "churnin",
771
    "circlin",
772
    "circulatin",
773
    "citin",
774
    "civilizin",
775
    "claddin",
776
    "claimin",
777
    "clamberin",
778
    "clamorin",
779
    "clampin",
780
    "clangin",
781
    "clankin",
782
    "clappin",
783
    "clarifyin",
784
    "clashin",
785
    "claspin",
786
    "classifyin",
787
    "clatterin",
788
    "claverin",
789
    "clawin",
790
    "cleanin",
791
    "cleansin",
792
    "clearin",
793
    "cleavin",
794
    "clenchin",
795
    "clickin",
796
    "climbin",
797
    "clin",
798
    "clingin",
799
    "clippin",
800
    "cloggin",
801
    "clonin",
802
    "closin",
803
    "clothin",
804
    "clottin",
805
    "clusterin",
806
    "clutchin",
807
    "coachin",
808
    "coastin",
809
    "coatin",
810
    "coaxin",
811
    "codin",
812
    "coexistin",
813
    "coilin",
814
    "coincidin",
815
    "coinin",
816
    "collaboratin",
817
    "collapsin",
818
    "collectin",
819
    "collidin",
820
    "colonisin",
821
    "colonizin",
822
    "colorin",
823
    "colourin",
824
    "combatin",
825
    "combin",
826
    "combinin",
827
    "comfortin",
828
    "comin",
829
    "commandin",
830
    "commemoratin",
831
    "commencin",
832
    "commendin",
833
    "commentin",
834
    "commissionin",
835
    "committin",
836
    "communicatin",
837
    "commutin",
838
    "comparin",
839
    "compellin",
840
    "compensatin",
841
    "competin",
842
    "compilin",
843
    "complainin",
844
    "completin",
845
    "complicatin",
846
    "complyin",
847
    "composin",
848
    "compostin",
849
    "compoundin",
850
    "comprehendin",
851
    "compressin",
852
    "comprisin",
853
    "compromisin",
854
    "computin",
855
    "concealin",
856
    "concedin",
857
    "conceivin",
858
    "concentratin",
859
    "conceptualizin",
860
    "concernin",
861
    "concludin",
862
    "concurrin",
863
    "condemnin",
864
    "condensin",
865
    "condescendin",
866
    "conditionin",
867
    "conductin",
868
    "conferencin",
869
    "conferrin",
870
    "confessin",
871
    "confidin",
872
    "configurin",
873
    "confinin",
874
    "confirmin",
875
    "conflictin",
876
    "conformin",
877
    "confoundin",
878
    "confrontin",
879
    "confusin",
880
    "congratulatin",
881
    "conjurin",
882
    "connectin",
883
    "connin",
884
    "conquerin",
885
    "consentin",
886
    "conservin",
887
    "considerin",
888
    "consistin",
889
    "consolidatin",
890
    "consolin",
891
    "conspirin",
892
    "constitutin",
893
    "constrainin",
894
    "constructin",
895
    "construin",
896
    "consultin",
897
    "consumin",
898
    "contactin",
899
    "containin",
900
    "contaminatin",
901
    "contemplatin",
902
    "contendin",
903
    "contestin",
904
    "continuin",
905
    "contractin",
906
    "contradictin",
907
    "contrastin",
908
    "contributin",
909
    "contrivin",
910
    "controllin",
911
    "convenin",
912
    "convergin",
913
    "conversin",
914
    "convertin",
915
    "conveyin",
916
    "convincin",
917
    "cooin",
918
    "cookin",
919
    "coolin",
920
    "cooperatin",
921
    "coordinatin",
922
    "copin",
923
    "copyin",
924
    "correctin",
925
    "correlatin",
926
    "correspondin",
927
    "corruptin",
928
    "costin",
929
    "coughin",
930
    "counselin",
931
    "counsellin",
932
    "counteractin",
933
    "counterfeitin",
934
    "counterin",
935
    "countervailin",
936
    "countin",
937
    "couplin",
938
    "coursin",
939
    "courtin",
940
    "coverin",
941
    "cowerin",
942
    "crackin",
943
    "cracklin",
944
    "cradlin",
945
    "craftin",
946
    "crampin",
947
    "crashin",
948
    "cravin",
949
    "crawlin",
950
    "creakin",
951
    "creatin",
952
    "creditin",
953
    "creepin",
954
    "cringin",
955
    "cripplin",
956
    "criticizin",
957
    "critiquin",
958
    "croakin",
959
    "croppin",
960
    "crossin",
961
    "crouchin",
962
    "crowdin",
963
    "crowin",
964
    "crownin",
965
    "cruisin",
966
    "crumblin",
967
    "crunchin",
968
    "crusadin",
969
    "crushin",
970
    "cryin",
971
    "culminatin",
972
    "cultivatin",
973
    "cummin",
974
    "cunnin",
975
    "cuppin",
976
    "curbin",
977
    "curin",
978
    "curlin",
979
    "cursin",
980
    "curtailin",
981
    "curvin",
982
    "cushin",
983
    "customizin",
984
    "cuttin",
985
    "cyclin",
986
    "dabbin",
987
    "dabblin",
988
    "damagin",
989
    "damnin",
990
    "dampenin",
991
    "dampin",
992
    "dancin",
993
    "danglin",
994
    "darjeelin",
995
    "darkenin",
996
    "darklin",
997
    "darlin",
998
    "darnin",
999
    "dartin",
1000
    "dashin",
1001
    "datin",
1002
    "dauntin",
1003
    "dawdlin",
1004
    "dawnin",
1005
    "daydreamin",
1006
    "dazzlin",
1007
    "deadenin",
1008
    "deafenin",
1009
    "dealin",
1010
    "debasin",
1011
    "debatin",
1012
    "debilitatin",
1013
    "debriefin",
1014
    "debuggin",
1015
    "decayin",
1016
    "deceivin",
1017
    "decidin",
1018
    "decipherin",
1019
    "decisionmakin",
1020
    "deckin",
1021
    "declaimin",
1022
    "declarin",
1023
    "declinin",
1024
    "decodin",
1025
    "decommissionin",
1026
    "decomposin",
1027
    "deconstructin",
1028
    "decoratin",
1029
    "decouplin",
1030
    "decreasin",
1031
    "dedicatin",
1032
    "deducin",
1033
    "deductin",
1034
    "deemin",
1035
    "deepenin",
1036
    "deerin",
1037
    "defaultin",
1038
    "defeatin",
1039
    "defendin",
1040
    "deferrin",
1041
    "defilin",
1042
    "definin",
1043
    "deflectin",
1044
    "deformin",
1045
    "defraudin",
1046
    "defrayin",
1047
    "defyin",
1048
    "degeneratin",
1049
    "degradin",
1050
    "dehumanizin",
1051
    "delayin",
1052
    "delegatin",
1053
    "deletin",
1054
    "deliberatin",
1055
    "delightin",
1056
    "delineatin",
1057
    "deliverin",
1058
    "deludin",
1059
    "delvin",
1060
    "demandin",
1061
    "demeanin",
1062
    "demin",
1063
    "democratizin",
1064
    "demolishin",
1065
    "demonstratin",
1066
    "demoralizin",
1067
    "denigratin",
1068
    "dennin",
1069
    "denotin",
1070
    "denouncin",
1071
    "denyin",
1072
    "departin",
1073
    "dependin",
1074
    "depictin",
1075
    "depletin",
1076
    "deplorin",
1077
    "deployin",
1078
    "depositin",
1079
    "deprecatin",
1080
    "depreciatin",
1081
    "depressin",
1082
    "deprivin",
1083
    "derivin",
1084
    "descendin",
1085
    "describin",
1086
    "desertin",
1087
    "deservin",
1088
    "designatin",
1089
    "designin",
1090
    "desirin",
1091
    "desolatin",
1092
    "despairin",
1093
    "despatchin",
1094
    "despisin",
1095
    "despondin",
1096
    "destabilizin",
1097
    "destroyin",
1098
    "detachin",
1099
    "detailin",
1100
    "detainin",
1101
    "detectin",
1102
    "deterioratin",
1103
    "determinin",
1104
    "deterrin",
1105
    "devastatin",
1106
    "developin",
1107
    "deviatin",
1108
    "devisin",
1109
    "devolvin",
1110
    "devotin",
1111
    "devourin",
1112
    "diagnosin",
1113
    "dialin",
1114
    "dictatin",
1115
    "dietin",
1116
    "differentiatin",
1117
    "differin",
1118
    "diffusin",
1119
    "digestin",
1120
    "diggin",
1121
    "digitizin",
1122
    "dilatin",
1123
    "dilutin",
1124
    "diminishin",
1125
    "dimmin",
1126
    "dinin",
1127
    "dippin",
1128
    "directin",
1129
    "disablin",
1130
    "disagreein",
1131
    "disappearin",
1132
    "disappointin",
1133
    "disapprovin",
1134
    "disarmin",
1135
    "disbandin",
1136
    "disbelievin",
1137
    "discardin",
1138
    "discernin",
1139
    "dischargin",
1140
    "disciplinin",
1141
    "disclosin",
1142
    "disconcertin",
1143
    "disconnectin",
1144
    "discontinuin",
1145
    "discountin",
1146
    "discouragin",
1147
    "discoursin",
1148
    "discoverin",
1149
    "discreditin",
1150
    "discriminatin",
1151
    "discussin",
1152
    "disdainin",
1153
    "disembarkin",
1154
    "disengagin",
1155
    "disfigurin",
1156
    "disguisin",
1157
    "disgustin",
1158
    "disheartenin",
1159
    "disinfectin",
1160
    "disintegratin",
1161
    "dislikin",
1162
    "dislodgin",
1163
    "dismantlin",
1164
    "dismissin",
1165
    "dismountin",
1166
    "disobeyin",
1167
    "disorientin",
1168
    "disparagin",
1169
    "dispatchin",
1170
    "dispellin",
1171
    "dispensin",
1172
    "dispersin",
1173
    "displacin",
1174
    "displayin",
1175
    "displeasin",
1176
    "disposin",
1177
    "disputin",
1178
    "disqualifyin",
1179
    "disquietin",
1180
    "disregardin",
1181
    "disruptin",
1182
    "dissectin",
1183
    "dissemblin",
1184
    "disseminatin",
1185
    "dissentin",
1186
    "dissipatin",
1187
    "dissolvin",
1188
    "distancin",
1189
    "distillin",
1190
    "distinguishin",
1191
    "distortin",
1192
    "distractin",
1193
    "distressin",
1194
    "distributin",
1195
    "disturbin",
1196
    "divergin",
1197
    "diversifyin",
1198
    "divertin",
1199
    "divestin",
1200
    "dividin",
1201
    "divin",
1202
    "divinin",
1203
    "divorcin",
1204
    "dizzyin",
1205
    "dockin",
1206
    "doctorin",
1207
    "documentin",
1208
    "dodgin",
1209
    "doddlin",
1210
    "doin",
1211
    "dominatin",
1212
    "domineerin",
1213
    "donatin",
1214
    "donnin",
1215
    "doodlin",
1216
    "dopin",
1217
    "dorkin",
1218
    "dosin",
1219
    "dotin",
1220
    "dottin",
1221
    "doublin",
1222
    "doubtin",
1223
    "dowlin",
1224
    "downin",
1225
    "downloadin",
1226
    "downplayin",
1227
    "downsizin",
1228
    "dozin",
1229
    "draftin",
1230
    "draggin",
1231
    "drainin",
1232
    "dramatisin",
1233
    "dramatizin",
1234
    "drapin",
1235
    "drawin",
1236
    "drawlin",
1237
    "dreadin",
1238
    "dreamin",
1239
    "dredgin",
1240
    "drenchin",
1241
    "dressin",
1242
    "dressmakin",
1243
    "dribblin",
1244
    "driftin",
1245
    "drillin",
1246
    "drinkin",
1247
    "drippin",
1248
    "drivin",
1249
    "drizzlin",
1250
    "dronin",
1251
    "droolin",
1252
    "droopin",
1253
    "droppin",
1254
    "drownin",
1255
    "drummin",
1256
    "dryin",
1257
    "duckin",
1258
    "duelin",
1259
    "duellin",
1260
    "dumpin",
1261
    "dunnin",
1262
    "duplicatin",
1263
    "durin",
1264
    "dwellin",
1265
    "dwindlin",
1266
    "dyein",
1267
    "dyin",
1268
    "ealin",
1269
    "earnin",
1270
    "earrin",
1271
    "earthin",
1272
    "easin",
1273
    "easygoin",
1274
    "eatin",
1275
    "eavesdroppin",
1276
    "ebbin",
1277
    "echoin",
1278
    "eclipsin",
1279
    "economizin",
1280
    "eddyin",
1281
    "edgin",
1282
    "edifyin",
1283
    "editin",
1284
    "educatin",
1285
    "effacin",
1286
    "effectin",
1287
    "ejectin",
1288
    "elaboratin",
1289
    "elbowin",
1290
    "electin",
1291
    "electioneerin",
1292
    "electrifyin",
1293
    "elevatin",
1294
    "elicitin",
1295
    "eliminatin",
1296
    "elucidatin",
1297
    "eludin",
1298
    "elutin",
1299
    "emanatin",
1300
    "emancipatin",
1301
    "embalmin",
1302
    "embarkin",
1303
    "embarrassin",
1304
    "embeddin",
1305
    "embellishin",
1306
    "embodyin",
1307
    "embracin",
1308
    "embroiderin",
1309
    "emergin",
1310
    "emigratin",
1311
    "emittin",
1312
    "emphasisin",
1313
    "emphasizin",
1314
    "employin",
1315
    "empowerin",
1316
    "emptyin",
1317
    "emulatin",
1318
    "enablin",
1319
    "enactin",
1320
    "encapsulatin",
1321
    "enchantin",
1322
    "encirclin",
1323
    "enclosin",
1324
    "encodin",
1325
    "encompassin",
1326
    "encounterin",
1327
    "encouragin",
1328
    "encroachin",
1329
    "encryptin",
1330
    "endangerin",
1331
    "endearin",
1332
    "endeavorin",
1333
    "endeavourin",
1334
    "endin",
1335
    "endorsin",
1336
    "endowin",
1337
    "endurin",
1338
    "energizin",
1339
    "enervatin",
1340
    "enfoldin",
1341
    "enforcin",
1342
    "engagin",
1343
    "engenderin",
1344
    "engineerin",
1345
    "engravin",
1346
    "engrossin",
1347
    "engulfin",
1348
    "enhancin",
1349
    "enjoinin",
1350
    "enjoyin",
1351
    "enlargin",
1352
    "enlightenin",
1353
    "enlistin",
1354
    "enlivenin",
1355
    "ennoblin",
1356
    "enquirin",
1357
    "enrichin",
1358
    "enrollin",
1359
    "enslavin",
1360
    "ensuin",
1361
    "ensurin",
1362
    "entailin",
1363
    "entanglin",
1364
    "enterin",
1365
    "enterprisin",
1366
    "entertainin",
1367
    "enthrallin",
1368
    "enticin",
1369
    "entitlin",
1370
    "entrancin",
1371
    "entreatin",
1372
    "entrenchin",
1373
    "entrustin",
1374
    "enumeratin",
1375
    "enunciatin",
1376
    "envelopin",
1377
    "envisionin",
1378
    "envyin",
1379
    "eppin",
1380
    "equalin",
1381
    "equalizin",
1382
    "equallin",
1383
    "equatin",
1384
    "equippin",
1385
    "eradicatin",
1386
    "erasin",
1387
    "erectin",
1388
    "erlin",
1389
    "erodin",
1390
    "errin",
1391
    "eruptin",
1392
    "escalatin",
1393
    "escapin",
1394
    "eschewin",
1395
    "escortin",
1396
    "espin",
1397
    "espousin",
1398
    "establishin",
1399
    "estain",
1400
    "estimatin",
1401
    "etchin",
1402
    "evacuatin",
1403
    "evadin",
1404
    "evaluatin",
1405
    "evangelizin",
1406
    "evaporatin",
1407
    "evenin",
1408
    "everlastin",
1409
    "everythin",
1410
    "evidencin",
1411
    "evincin",
1412
    "evokin",
1413
    "evolvin",
1414
    "ewin",
1415
    "exacerbatin",
1416
    "exactin",
1417
    "exaggeratin",
1418
    "exaltin",
1419
    "examinin",
1420
    "exasperatin",
1421
    "excavatin",
1422
    "exceedin",
1423
    "excellin",
1424
    "exceptin",
1425
    "exchangin",
1426
    "excitin",
1427
    "exclaimin",
1428
    "excludin",
1429
    "excruciatin",
1430
    "excusin",
1431
    "executin",
1432
    "exemplifyin",
1433
    "exemptin",
1434
    "exercisin",
1435
    "exertin",
1436
    "exhalin",
1437
    "exhaustin",
1438
    "exhibitin",
1439
    "exhilaratin",
1440
    "exhortin",
1441
    "existin",
1442
    "exitin",
1443
    "expandin",
1444
    "expectin",
1445
    "expeditin",
1446
    "expellin",
1447
    "expendin",
1448
    "experiencin",
1449
    "experimentin",
1450
    "expirin",
1451
    "explainin",
1452
    "explicatin",
1453
    "explodin",
1454
    "exploitin",
1455
    "explorin",
1456
    "exportin",
1457
    "exposin",
1458
    "expoundin",
1459
    "expressin",
1460
    "extendin",
1461
    "extenuatin",
1462
    "exterminatin",
1463
    "externalizin",
1464
    "extinguishin",
1465
    "extollin",
1466
    "extortin",
1467
    "extractin",
1468
    "extrapolatin",
1469
    "extricatin",
1470
    "exudin",
1471
    "exultin",
1472
    "eyein",
1473
    "eyin",
1474
    "fabricatin",
1475
    "facilitatin",
1476
    "facin",
1477
    "factorin",
1478
    "fadin",
1479
    "failin",
1480
    "faintin",
1481
    "fakin",
1482
    "fallin",
1483
    "falterin",
1484
    "fancyin",
1485
    "fannin",
1486
    "farmin",
1487
    "farthin",
1488
    "fascinatin",
1489
    "fashionin",
1490
    "fastenin",
1491
    "fastin",
1492
    "fatiguin",
1493
    "fattenin",
1494
    "faultin",
1495
    "favorin",
1496
    "favourin",
1497
    "fawnin",
1498
    "fearin",
1499
    "feastin",
1500
    "featurin",
1501
    "feedin",
1502
    "feelin",
1503
    "feignin",
1504
    "fellin",
1505
    "fencin",
1506
    "fermentin",
1507
    "fertilizin",
1508
    "festerin",
1509
    "fetchin",
1510
    "fiddlin",
1511
    "fidgetin",
1512
    "fieldin",
1513
    "fightin",
1514
    "figurin",
1515
    "filin",
1516
    "fillin",
1517
    "filmin",
1518
    "filmmakin",
1519
    "filterin",
1520
    "financin",
1521
    "findin",
1522
    "fingerin",
1523
    "fingerprintin",
1524
    "finishin",
1525
    "firin",
1526
    "fishin",
1527
    "fittin",
1528
    "fixin",
1529
    "flaggin",
1530
    "flailin",
1531
    "flamin",
1532
    "flankin",
1533
    "flappin",
1534
    "flarin",
1535
    "flashin",
1536
    "flattenin",
1537
    "flatterin",
1538
    "flauntin",
1539
    "flavorin",
1540
    "fledglin",
1541
    "fleein",
1542
    "fleetin",
1543
    "flemin",
1544
    "flemmin",
1545
    "flexin",
1546
    "flickerin",
1547
    "flickin",
1548
    "flinchin",
1549
    "flingin",
1550
    "flippin",
1551
    "flirtin",
1552
    "flittin",
1553
    "floatin",
1554
    "flockin",
1555
    "floggin",
1556
    "floodin",
1557
    "floorin",
1558
    "floppin",
1559
    "flounderin",
1560
    "flourishin",
1561
    "flowerin",
1562
    "flowin",
1563
    "fluctuatin",
1564
    "flushin",
1565
    "flutterin",
1566
    "flyin",
1567
    "foamin",
1568
    "focusin",
1569
    "focussin",
1570
    "foldin",
1571
    "followin",
1572
    "fondlin",
1573
    "foolin",
1574
    "footin",
1575
    "foragin",
1576
    "forbearin",
1577
    "forbiddin",
1578
    "forcin",
1579
    "forebodin",
1580
    "forecastin",
1581
    "foregoin",
1582
    "foregroundin",
1583
    "foreseein",
1584
    "foreshadowin",
1585
    "forfeitin",
1586
    "forgettin",
1587
    "forgin",
1588
    "forgivin",
1589
    "formattin",
1590
    "formin",
1591
    "formulatin",
1592
    "forsakin",
1593
    "forthcomin",
1594
    "fortifyin",
1595
    "forwardin",
1596
    "fosterin",
1597
    "foulin",
1598
    "foundin",
1599
    "foundlin",
1600
    "fowlin",
1601
    "fracturin",
1602
    "framin",
1603
    "franchisin",
1604
    "freakin",
1605
    "freein",
1606
    "freestandin",
1607
    "freezin",
1608
    "frequentin",
1609
    "frettin",
1610
    "frightenin",
1611
    "frontin",
1612
    "frostin",
1613
    "frownin",
1614
    "fruitin",
1615
    "frustratin",
1616
    "fryin",
1617
    "fuckin",
1618
    "fuelin",
1619
    "fulfillin",
1620
    "fumblin",
1621
    "fumin",
1622
    "functionin",
1623
    "fundin",
1624
    "fundraisin",
1625
    "furnishin",
1626
    "furtherin",
1627
    "fusin",
1628
    "fussin",
1629
    "gaggin",
1630
    "gainin",
1631
    "gallin",
1632
    "gallopin",
1633
    "gamblin",
1634
    "gapin",
1635
    "gardenin",
1636
    "garnerin",
1637
    "gaspin",
1638
    "gatherin",
1639
    "gatin",
1640
    "gaugin",
1641
    "gazin",
1642
    "gearin",
1643
    "geldin",
1644
    "genderin",
1645
    "generalizin",
1646
    "generatin",
1647
    "genotypin",
1648
    "germinatin",
1649
    "gesticulatin",
1650
    "gesturin",
1651
    "gettin",
1652
    "gigglin",
1653
    "gildin",
1654
    "gissin",
1655
    "givin",
1656
    "glancin",
1657
    "glarin",
1658
    "glazin",
1659
    "gleamin",
1660
    "gleanin",
1661
    "glidin",
1662
    "glimmerin",
1663
    "glintin",
1664
    "glistenin",
1665
    "glitterin",
1666
    "gloamin",
1667
    "gloatin",
1668
    "globalizin",
1669
    "glorifyin",
1670
    "gloryin",
1671
    "glowerin",
1672
    "glowin",
1673
    "gluin",
1674
    "gnashin",
1675
    "gnawin",
1676
    "goerin",
1677
    "goin",
1678
    "goldin",
1679
    "golfin",
1680
    "goodlookin",
1681
    "gorin",
1682
    "goslin",
1683
    "gossipin",
1684
    "gougin",
1685
    "governin",
1686
    "grabbin",
1687
    "gradin",
1688
    "graduatin",
1689
    "graftin",
1690
    "grantin",
1691
    "graphin",
1692
    "grapplin",
1693
    "graspin",
1694
    "gratifyin",
1695
    "grayin",
1696
    "graylin",
1697
    "grazin",
1698
    "greenin",
1699
    "greetin",
1700
    "grievin",
1701
    "grillin",
1702
    "grimacin",
1703
    "grindin",
1704
    "grinnin",
1705
    "grippin",
1706
    "groanin",
1707
    "groomin",
1708
    "gropin",
1709
    "groundbreakin",
1710
    "groundin",
1711
    "groupin",
1712
    "grovellin",
1713
    "growin",
1714
    "growlin",
1715
    "grubbin",
1716
    "grudgin",
1717
    "gruelin",
1718
    "grumblin",
1719
    "gruntin",
1720
    "guaranteein",
1721
    "guardin",
1722
    "guessin",
1723
    "guidin",
1724
    "gulpin",
1725
    "gunnin",
1726
    "gurglin",
1727
    "gushin",
1728
    "hackin",
1729
    "hagglin",
1730
    "hailin",
1731
    "hallucinatin",
1732
    "haltin",
1733
    "halvin",
1734
    "hammerin",
1735
    "hammin",
1736
    "hamperin",
1737
    "hamstrin",
1738
    "handicappin",
1739
    "handin",
1740
    "handlin",
1741
    "handshakin",
1742
    "handwritin",
1743
    "hangin",
1744
    "hankerin",
1745
    "happenin",
1746
    "haranguin",
1747
    "harassin",
1748
    "harborin",
1749
    "harbourin",
1750
    "hardenin",
1751
    "hardin",
1752
    "hardworkin",
1753
    "harin",
1754
    "harkin",
1755
    "harmin",
1756
    "harmonisin",
1757
    "harmonizin",
1758
    "harnessin",
1759
    "harpin",
1760
    "harrowin",
1761
    "harryin",
1762
    "harvestin",
1763
    "hashin",
1764
    "hastenin",
1765
    "hatchin",
1766
    "hatin",
1767
    "hauin",
1768
    "haulin",
1769
    "hauntin",
1770
    "havin",
1771
    "hawkin",
1772
    "hayin",
1773
    "hazardin",
1774
    "hazin",
1775
    "headin",
1776
    "healin",
1777
    "heapin",
1778
    "hearin",
1779
    "hearkenin",
1780
    "heartbreakin",
1781
    "heartenin",
1782
    "heartrendin",
1783
    "heartwarmin",
1784
    "heatin",
1785
    "heavin",
1786
    "hedgin",
1787
    "heedin",
1788
    "heightenin",
1789
    "helpin",
1765 1790
    "hemmin",
1766 1791
    "hemorrhagin",
M src/main/java/com/whitemagicsoftware/keenquotes/Converter.java
13 13
 * text string.
14 14
 */
15
@SuppressWarnings( "unused" )
15 16
public class Converter implements Function<String, String> {
16
  private static final Map<TokenType, String> REPLACEMENTS = Map.of(
17
  public static final Map<TokenType, String> ENTITIES = Map.of(
17 18
    QUOTE_OPENING_SINGLE, "&lsquo;",
18 19
    QUOTE_CLOSING_SINGLE, "&rsquo;",
19 20
    QUOTE_OPENING_DOUBLE, "&ldquo;",
20 21
    QUOTE_CLOSING_DOUBLE, "&rdquo;",
21 22
    QUOTE_STRAIGHT_SINGLE, "'",
22 23
    QUOTE_STRAIGHT_DOUBLE, "\"",
23 24
    QUOTE_APOSTROPHE, "&apos;",
24 25
    QUOTE_PRIME_SINGLE, "&prime;",
25 26
    QUOTE_PRIME_DOUBLE, "&Prime;"
27
  );
28
29
  /**
30
   * Used by external applications to initialize the replacement map.
31
   */
32
  public static final Map<TokenType, String> CHARS = Map.of(
33
    QUOTE_OPENING_SINGLE, "‘",
34
    QUOTE_CLOSING_SINGLE, "’",
35
    QUOTE_OPENING_DOUBLE, "“",
36
    QUOTE_CLOSING_DOUBLE, "”",
37
    QUOTE_STRAIGHT_SINGLE, "'",
38
    QUOTE_STRAIGHT_DOUBLE, "\"",
39
    QUOTE_APOSTROPHE, "’",
40
    QUOTE_PRIME_SINGLE, "′",
41
    QUOTE_PRIME_DOUBLE, "″"
26 42
  );
27 43
28 44
  private final Consumer<Lexeme> mUnresolved;
29 45
  private final Contractions mContractions;
46
  private final Map<TokenType, String> mReplacements;
30 47
48
  /**
49
   * Maps quotes to HTML entities.
50
   *
51
   * @param unresolved Consumes {@link Lexeme}s that could not be converted
52
   *                   into HTML entities.
53
   */
31 54
  public Converter( final Consumer<Lexeme> unresolved ) {
32 55
    this( unresolved, new Contractions.Builder().build() );
56
  }
57
58
  /**
59
   * Maps quotes to HTML entities.
60
   *
61
   * @param unresolved Consumes {@link Lexeme}s that could not be converted
62
   *                   into HTML entities.
63
   */
64
  public Converter(
65
    final Consumer<Lexeme> unresolved,
66
    final Map<TokenType, String> replacements ) {
67
    this( unresolved, new Contractions.Builder().build(), replacements );
33 68
  }
34 69
70
  /**
71
   * Maps quotes to HTML entities.
72
   *
73
   * @param unresolved Consumes {@link Lexeme}s that could not be converted
74
   *                   into HTML entities.
75
   * @param c          Contractions listings.
76
   */
35 77
  public Converter( final Consumer<Lexeme> unresolved, final Contractions c ) {
78
    this( unresolved, c, ENTITIES );
79
  }
80
81
  /**
82
   * Maps quotes to curled equivalents.
83
   *
84
   * @param unresolved   Consumes {@link Lexeme}s that could not be converted
85
   *                     into HTML entities.
86
   * @param c            Contractions listings.
87
   * @param replacements Map of recognized quotes to output types (entity or
88
   *                     Unicode character).
89
   */
90
  public Converter(
91
    final Consumer<Lexeme> unresolved,
92
    final Contractions c,
93
    final Map<TokenType, String> replacements ) {
36 94
    mUnresolved = unresolved;
37 95
    mContractions = c;
96
    mReplacements = replacements;
38 97
  }
39 98
...
64 123
      if( position <= token.began() ) {
65 124
        result.append( text, position, token.began() );
66
        result.append( REPLACEMENTS.get( token.getType() ) );
125
        result.append( mReplacements.get( token.getType() ) );
67 126
      }
68 127
M src/main/java/com/whitemagicsoftware/keenquotes/Lexeme.java
70 70
  @Override
71 71
  public String toString() {
72
    return getClass().getSimpleName() + '{' +
72
    return getClass().getSimpleName() + '[' +
73 73
      "mType=" + mType +
74 74
      ", mBegan=" + mBegan +
75 75
      ", mEnded=" + mEnded +
76
      '}';
76
      ']';
77 77
  }
78 78
M src/main/java/com/whitemagicsoftware/keenquotes/Lexer.java
57 57
      }
58 58
      else if( curr == ' ' ) {
59
        slurp( i, ( next, ci ) -> next == ' ' );
59 60
        lexeme = createLexeme( SPACE, began, i.getIndex() );
60 61
      }
M src/main/java/com/whitemagicsoftware/keenquotes/Parser.java
405 405
      );
406 406
    }
407
    else if( mOpeningSingleQuotes.size() == 0 && mClosingSingleQuotes.size() == 1 ) {
407
    else if( mOpeningSingleQuotes.size() == 0 &&
408
      mClosingSingleQuotes.size() == 1 && !unresolved.isEmpty() ) {
408 409
      final var opening = unresolved.get( 0 );
409 410
      consumer.accept( new Token( QUOTE_OPENING_SINGLE, opening[ 1 ] ) );
M src/test/java/com/whitemagicsoftware/keenquotes/LexerTest.java
83 83
  }
84 84
85
  @Test
86
  void test_Lexing_Whitespace_EmitSpace() {
87
    testType( "   ", SPACE );
88
    testType( "\n   \n", EOL, SPACE, EOL );
89
  }
90
85 91
  private void testType( final String actual, final LexemeType... expected ) {
86 92
    final var list = Arrays.asList( expected );
M src/test/resources/com/whitemagicsoftware/keenquotes/smartypants.txt
257 257
&ldquo;But ye&apos;ve been &apos;nation quiet all the day though,&rdquo; said the lad...
258 258
259
"Not much o' fellow-creaturs, I think, Miss; all I know—my old master, as war a knowin' man, used to say, says he, 'If e'er I sow my wheat wi'out brinin', I'm a Dutchman,' says he; an' that war as much as to say as a Dutchman war a fool, or next door. Nay, nay, I aren't goin' to bother mysen about Dutchmen. There's fools enoo, an' rogues enoo, wi'out lookin' i' books for 'em."
260
&ldquo;Not much o&apos; fellow-creaturs, I think, Miss; all I know—my old master, as war a knowin&apos; man, used to say, says he, &lsquo;If e&apos;er I sow my wheat wi&apos;out brinin&apos;, I&apos;m a Dutchman,&rsquo; says he; an&apos; that war as much as to say as a Dutchman war a fool, or next door. Nay, nay, I aren&apos;t goin&apos; to bother mysen about Dutchmen. There&apos;s fools enoo, an&apos; rogues enoo, wi&apos;out lookin&apos; i&apos; books for &apos;em.&rdquo;
261
259 262
# ########################################################################
260 263
# Ambiguous (no solution)