namelab 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry/container"
4
+ require "namelab/list_ref"
5
+
6
+ module Namelab
7
+ module Registry
8
+ extend Dry::Container::Mixin
9
+
10
+ namespace :syls do
11
+ register :sample, call: false do |proc = nil|
12
+ ref = proc.is_a?(Proc) ? resolve(:ref).filter(&proc) : resolve(:ref)
13
+ ref.sample
14
+ end
15
+
16
+ register :ref, memoize: true do
17
+ ListRef.new(resolve(:io_proc))
18
+ end
19
+
20
+ register :io_proc, call: false do
21
+ File.new(resolve(:path), textmode: true)
22
+ end
23
+
24
+ register :path, File.expand_path("../syls.data", __dir__)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module Namelab
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "dry-initializer"
4
+ require "dry-types"
5
+ require "yieldable"
6
+
7
+ module Namelab
8
+ # The word generator class.
9
+ class WordGenerator
10
+ include Dry::Initializer.define -> do
11
+ param :target_length, type: Dry::Types['params.integer']
12
+ option :normalize, type: Dry::Types['params.bool'], default: proc { true }
13
+ end
14
+
15
+ extend Yieldable[:new]
16
+
17
+ attr_reader :word
18
+
19
+ def word
20
+ @word ||= String.new
21
+ end
22
+
23
+ # Generates word and cleanups instance variables.
24
+ def generate
25
+ while chars_left > 0
26
+ word << sample_syllable
27
+ normalize! if normalize
28
+ end
29
+ return @word.capitalize
30
+ ensure
31
+ cleanup!
32
+ end
33
+
34
+ alias_method :call, :generate
35
+
36
+ # Calculates how many chars are left to generate.
37
+ def chars_left
38
+ @target_length - word.length
39
+ end
40
+
41
+ LengthFilter = -> (op, len, syl) { syl.length.send(op, len) }.freeze.curry(3).freeze
42
+
43
+ # Fetches random syllable.
44
+ def sample_syllable
45
+ filter = LengthFilter[:<=, chars_left.next] if chars_left <= 3
46
+ Registry['syls.sample'][filter].to_s
47
+ end
48
+
49
+ private
50
+
51
+ def normalize!
52
+ @word.sub!(/([^aeiouy]{2})[^aeiouy]/, '\1')
53
+ @word = @word[0, @target_length]
54
+ end
55
+
56
+ def cleanup!
57
+ remove_instance_variable(:@word)
58
+ end
59
+ end
60
+ end
data/lib/syls.data ADDED
@@ -0,0 +1,1145 @@
1
+ ab
2
+ abs
3
+ abst
4
+ ac
5
+ acc
6
+ ach
7
+ ad
8
+ add
9
+ ads
10
+ af
11
+ aff
12
+ ag
13
+ agg
14
+ ah
15
+ ak
16
+ al
17
+ alp
18
+ am
19
+ amb
20
+ amp
21
+ an
22
+ and
23
+ ang
24
+ ans
25
+ ant
26
+ anth
27
+ ap
28
+ app
29
+ ar
30
+ arc
31
+ arch
32
+ ard
33
+ ars
34
+ art
35
+ arth
36
+ as
37
+ asp
38
+ ast
39
+ at
40
+ ath
41
+ ats
42
+ att
43
+ aw
44
+ ba
45
+ bab
46
+ bac
47
+ back
48
+ backs
49
+ bad
50
+ bag
51
+ bal
52
+ ball
53
+ ban
54
+ band
55
+ bap
56
+ bar
57
+ bart
58
+ bas
59
+ bat
60
+ batt
61
+ be
62
+ bec
63
+ bed
64
+ bel
65
+ ben
66
+ ber
67
+ berg
68
+ bert
69
+ bes
70
+ bet
71
+ bi
72
+ bib
73
+ bic
74
+ bid
75
+ big
76
+ bil
77
+ bin
78
+ bing
79
+ bird
80
+ bis
81
+ bit
82
+ bo
83
+ bom
84
+ bon
85
+ bor
86
+ bos
87
+ bot
88
+ bott
89
+ bow
90
+ box
91
+ bu
92
+ buc
93
+ buck
94
+ buf
95
+ bug
96
+ bul
97
+ bull
98
+ bun
99
+ bur
100
+ burg
101
+ bus
102
+ but
103
+ by
104
+ ca
105
+ cab
106
+ cac
107
+ cad
108
+ cal
109
+ cam
110
+ camp
111
+ can
112
+ cand
113
+ cant
114
+ cap
115
+ car
116
+ carp
117
+ cart
118
+ cas
119
+ cast
120
+ cat
121
+ ce
122
+ ced
123
+ cel
124
+ cen
125
+ cent
126
+ cep
127
+ cer
128
+ ces
129
+ ci
130
+ cid
131
+ cil
132
+ cin
133
+ cing
134
+ cip
135
+ cir
136
+ cis
137
+ cism
138
+ cist
139
+ cit
140
+ co
141
+ coc
142
+ cock
143
+ cof
144
+ cog
145
+ col
146
+ com
147
+ comp
148
+ con
149
+ conc
150
+ conf
151
+ cong
152
+ cons
153
+ const
154
+ cont
155
+ cop
156
+ cor
157
+ corn
158
+ cos
159
+ cot
160
+ cow
161
+ cu
162
+ cul
163
+ cum
164
+ cun
165
+ cup
166
+ cur
167
+ cus
168
+ cut
169
+ cy
170
+ cyc
171
+ cyp
172
+ cys
173
+ da
174
+ dab
175
+ dac
176
+ dal
177
+ dam
178
+ dan
179
+ dant
180
+ dap
181
+ dar
182
+ de
183
+ dec
184
+ ded
185
+ def
186
+ deg
187
+ del
188
+ den
189
+ dend
190
+ dent
191
+ dep
192
+ der
193
+ ders
194
+ des
195
+ dest
196
+ det
197
+ dext
198
+ di
199
+ dib
200
+ dic
201
+ dich
202
+ dif
203
+ dig
204
+ din
205
+ ding
206
+ dip
207
+ dis
208
+ disc
209
+ dish
210
+ dism
211
+ disp
212
+ dist
213
+ do
214
+ doc
215
+ dog
216
+ dol
217
+ dom
218
+ don
219
+ dop
220
+ dor
221
+ dos
222
+ dow
223
+ down
224
+ du
225
+ duc
226
+ dul
227
+ dum
228
+ dun
229
+ dup
230
+ dus
231
+ dust
232
+ dy
233
+ dys
234
+ dysp
235
+ eb
236
+ ec
237
+ ed
238
+ ef
239
+ eg
240
+ ek
241
+ el
242
+ eld
243
+ em
244
+ emb
245
+ emp
246
+ en
247
+ enc
248
+ end
249
+ eng
250
+ ens
251
+ ent
252
+ ep
253
+ er
254
+ ers
255
+ es
256
+ esc
257
+ est
258
+ et
259
+ eth
260
+ ex
261
+ exc
262
+ exp
263
+ ext
264
+ fa
265
+ fac
266
+ fal
267
+ fan
268
+ far
269
+ fas
270
+ fat
271
+ fe
272
+ fec
273
+ fed
274
+ fel
275
+ fen
276
+ fer
277
+ fes
278
+ fi
279
+ fib
280
+ fic
281
+ fil
282
+ fin
283
+ fir
284
+ fis
285
+ fish
286
+ fit
287
+ fo
288
+ fol
289
+ fold
290
+ fon
291
+ for
292
+ ford
293
+ form
294
+ fos
295
+ fu
296
+ ful
297
+ fun
298
+ fur
299
+ fus
300
+ fy
301
+ ga
302
+ gal
303
+ gam
304
+ gan
305
+ gang
306
+ gar
307
+ gard
308
+ gas
309
+ gast
310
+ gat
311
+ ge
312
+ ged
313
+ gel
314
+ gen
315
+ gent
316
+ ger
317
+ ges
318
+ get
319
+ gi
320
+ gib
321
+ gic
322
+ gil
323
+ gin
324
+ ging
325
+ gis
326
+ gish
327
+ gist
328
+ git
329
+ go
330
+ god
331
+ gol
332
+ gold
333
+ gon
334
+ gop
335
+ gor
336
+ gos
337
+ got
338
+ gu
339
+ gum
340
+ gun
341
+ gus
342
+ gut
343
+ gy
344
+ gym
345
+ ha
346
+ hab
347
+ hac
348
+ had
349
+ hag
350
+ hal
351
+ ham
352
+ han
353
+ hand
354
+ hant
355
+ hap
356
+ har
357
+ hard
358
+ has
359
+ hat
360
+ haw
361
+ he
362
+ heb
363
+ hec
364
+ hed
365
+ hel
366
+ hell
367
+ hen
368
+ her
369
+ hes
370
+ hest
371
+ het
372
+ hi
373
+ hic
374
+ hick
375
+ high
376
+ hil
377
+ hild
378
+ him
379
+ hin
380
+ hing
381
+ hip
382
+ hir
383
+ his
384
+ hism
385
+ hist
386
+ hit
387
+ ho
388
+ hob
389
+ hoc
390
+ hog
391
+ hol
392
+ hom
393
+ hon
394
+ hond
395
+ hop
396
+ hor
397
+ horn
398
+ hort
399
+ hos
400
+ hosp
401
+ hot
402
+ how
403
+ hu
404
+ hum
405
+ hun
406
+ hur
407
+ hus
408
+ hy
409
+ hyd
410
+ hyg
411
+ hyl
412
+ hyp
413
+ hys
414
+ ic
415
+ id
416
+ ig
417
+ igh
418
+ ight
419
+ il
420
+ im
421
+ imp
422
+ in
423
+ inc
424
+ inf
425
+ ing
426
+ ins
427
+ inst
428
+ int
429
+ ir
430
+ is
431
+ isc
432
+ ish
433
+ ism
434
+ ist
435
+ it
436
+ ja
437
+ jac
438
+ jack
439
+ jam
440
+ je
441
+ jec
442
+ jer
443
+ ji
444
+ jo
445
+ ju
446
+ jun
447
+ junc
448
+ jus
449
+ ka
450
+ kab
451
+ kan
452
+ kat
453
+ ke
454
+ ked
455
+ kel
456
+ ken
457
+ ker
458
+ kes
459
+ ket
460
+ ki
461
+ kim
462
+ kin
463
+ king
464
+ kish
465
+ ko
466
+ ku
467
+ ky
468
+ la
469
+ lab
470
+ lac
471
+ lack
472
+ lad
473
+ lag
474
+ lah
475
+ lam
476
+ lamp
477
+ lan
478
+ lanc
479
+ land
480
+ lands
481
+ lant
482
+ lap
483
+ lar
484
+ las
485
+ lash
486
+ lass
487
+ last
488
+ lat
489
+ law
490
+ le
491
+ leb
492
+ lec
493
+ lect
494
+ led
495
+ leg
496
+ lem
497
+ len
498
+ lent
499
+ lep
500
+ ler
501
+ les
502
+ less
503
+ let
504
+ lex
505
+ li
506
+ lib
507
+ lic
508
+ lid
509
+ lif
510
+ lig
511
+ ligh
512
+ light
513
+ lim
514
+ lin
515
+ lind
516
+ ling
517
+ lip
518
+ lis
519
+ lish
520
+ lism
521
+ list
522
+ lit
523
+ lith
524
+ lo
525
+ loc
526
+ lock
527
+ lod
528
+ log
529
+ lon
530
+ long
531
+ lop
532
+ lor
533
+ los
534
+ lot
535
+ loth
536
+ low
537
+ lu
538
+ lub
539
+ luc
540
+ lug
541
+ lum
542
+ lun
543
+ lur
544
+ lus
545
+ lust
546
+ lut
547
+ ly
548
+ lymp
549
+ lyp
550
+ lys
551
+ ma
552
+ mab
553
+ mac
554
+ mad
555
+ mag
556
+ mal
557
+ mam
558
+ man
559
+ mann
560
+ mans
561
+ mant
562
+ mar
563
+ marb
564
+ marc
565
+ mark
566
+ mas
567
+ mat
568
+ match
569
+ me
570
+ mec
571
+ med
572
+ mel
573
+ men
574
+ ment
575
+ mep
576
+ mer
577
+ mes
578
+ met
579
+ mi
580
+ mic
581
+ mid
582
+ mig
583
+ mil
584
+ min
585
+ ming
586
+ mip
587
+ mis
588
+ mism
589
+ mist
590
+ mit
591
+ mith
592
+ mo
593
+ moc
594
+ mog
595
+ mol
596
+ mon
597
+ monst
598
+ mop
599
+ mor
600
+ morp
601
+ mos
602
+ most
603
+ mot
604
+ mu
605
+ mug
606
+ mul
607
+ mum
608
+ mun
609
+ mur
610
+ mus
611
+ mut
612
+ my
613
+ myg
614
+ myr
615
+ mys
616
+ myt
617
+ na
618
+ nab
619
+ nac
620
+ nad
621
+ nag
622
+ nal
623
+ nam
624
+ nan
625
+ nant
626
+ nap
627
+ napp
628
+ nar
629
+ narc
630
+ nas
631
+ nat
632
+ ne
633
+ neb
634
+ nec
635
+ ned
636
+ nef
637
+ neg
638
+ nel
639
+ nen
640
+ nent
641
+ neph
642
+ ner
643
+ nes
644
+ ness
645
+ nest
646
+ net
647
+ new
648
+ news
649
+ nex
650
+ nexp
651
+ ni
652
+ nic
653
+ nics
654
+ nig
655
+ night
656
+ nim
657
+ nin
658
+ ning
659
+ nip
660
+ nis
661
+ nish
662
+ nism
663
+ nist
664
+ nit
665
+ no
666
+ nob
667
+ noc
668
+ nog
669
+ nol
670
+ non
671
+ nonp
672
+ nons
673
+ nop
674
+ nor
675
+ nort
676
+ north
677
+ nos
678
+ not
679
+ now
680
+ nu
681
+ nuc
682
+ num
683
+ nun
684
+ nur
685
+ nus
686
+ nut
687
+ ny
688
+ nyl
689
+ nym
690
+ nymp
691
+ ob
692
+ obs
693
+ obst
694
+ oc
695
+ od
696
+ of
697
+ og
698
+ ok
699
+ ol
700
+ om
701
+ on
702
+ ons
703
+ op
704
+ or
705
+ orc
706
+ ort
707
+ os
708
+ ost
709
+ ot
710
+ oth
711
+ pa
712
+ pab
713
+ pac
714
+ pal
715
+ pan
716
+ panc
717
+ pant
718
+ par
719
+ part
720
+ pas
721
+ pat
722
+ pe
723
+ pec
724
+ pect
725
+ ped
726
+ pel
727
+ pen
728
+ pep
729
+ per
730
+ pers
731
+ pert
732
+ pes
733
+ pest
734
+ pet
735
+ pi
736
+ pic
737
+ pid
738
+ pig
739
+ pil
740
+ pin
741
+ ping
742
+ pip
743
+ pis
744
+ pish
745
+ pist
746
+ pit
747
+ po
748
+ poc
749
+ pod
750
+ pog
751
+ pol
752
+ pom
753
+ pon
754
+ pop
755
+ por
756
+ port
757
+ pos
758
+ post
759
+ pot
760
+ pow
761
+ pu
762
+ pub
763
+ pul
764
+ pun
765
+ punc
766
+ pur
767
+ pus
768
+ put
769
+ py
770
+ pyt
771
+ qa
772
+ qu
773
+ ra
774
+ rab
775
+ rac
776
+ rach
777
+ rack
778
+ ract
779
+ rad
780
+ raf
781
+ raft
782
+ rag
783
+ ragg
784
+ rah
785
+ ral
786
+ ram
787
+ ran
788
+ ranc
789
+ rand
790
+ rang
791
+ rank
792
+ rans
793
+ rant
794
+ rap
795
+ raph
796
+ ras
797
+ rass
798
+ rat
799
+ raw
800
+ re
801
+ reb
802
+ rec
803
+ red
804
+ ref
805
+ reg
806
+ rel
807
+ ren
808
+ renc
809
+ rench
810
+ rent
811
+ rep
812
+ rer
813
+ res
814
+ resh
815
+ ress
816
+ rest
817
+ ret
818
+ rew
819
+ ri
820
+ rib
821
+ ric
822
+ rich
823
+ rick
824
+ rid
825
+ rif
826
+ rig
827
+ righ
828
+ right
829
+ ril
830
+ rill
831
+ rim
832
+ rin
833
+ ring
834
+ rink
835
+ rint
836
+ rip
837
+ ris
838
+ rish
839
+ rism
840
+ rist
841
+ rit
842
+ rix
843
+ ro
844
+ rob
845
+ roc
846
+ rod
847
+ rof
848
+ rog
849
+ rol
850
+ roll
851
+ rom
852
+ ron
853
+ ronc
854
+ rong
855
+ rop
856
+ ror
857
+ ros
858
+ ross
859
+ rost
860
+ rot
861
+ roth
862
+ row
863
+ rown
864
+ ru
865
+ rub
866
+ ruc
867
+ rud
868
+ rum
869
+ run
870
+ rup
871
+ rupt
872
+ rus
873
+ rush
874
+ rust
875
+ rut
876
+ ry
877
+ ryn
878
+ ryp
879
+ rys
880
+ ryth
881
+ sa
882
+ sab
883
+ sac
884
+ sacc
885
+ sal
886
+ salt
887
+ sam
888
+ san
889
+ sanc
890
+ sand
891
+ sant
892
+ sap
893
+ sapp
894
+ sar
895
+ sas
896
+ saw
897
+ se
898
+ sec
899
+ sed
900
+ seg
901
+ sel
902
+ semb
903
+ sen
904
+ sent
905
+ sep
906
+ ser
907
+ ses
908
+ set
909
+ sex
910
+ si
911
+ sib
912
+ sic
913
+ sig
914
+ sil
915
+ simp
916
+ sin
917
+ sing
918
+ sip
919
+ sis
920
+ sit
921
+ six
922
+ so
923
+ sol
924
+ som
925
+ son
926
+ sop
927
+ sor
928
+ sot
929
+ su
930
+ sub
931
+ subs
932
+ subt
933
+ suc
934
+ suf
935
+ sul
936
+ sulp
937
+ sum
938
+ sun
939
+ sup
940
+ supp
941
+ sur
942
+ surp
943
+ sus
944
+ sy
945
+ syc
946
+ syl
947
+ sym
948
+ symp
949
+ syn
950
+ sync
951
+ synch
952
+ sys
953
+ ta
954
+ tab
955
+ tac
956
+ tag
957
+ tal
958
+ tam
959
+ tan
960
+ tand
961
+ tang
962
+ tant
963
+ tap
964
+ tar
965
+ tard
966
+ tas
967
+ tat
968
+ te
969
+ tec
970
+ tech
971
+ ted
972
+ teg
973
+ tel
974
+ tem
975
+ temp
976
+ ten
977
+ tent
978
+ tep
979
+ ter
980
+ terc
981
+ tern
982
+ terp
983
+ ters
984
+ tes
985
+ tet
986
+ ti
987
+ tib
988
+ tic
989
+ tick
990
+ tics
991
+ tid
992
+ tif
993
+ tig
994
+ til
995
+ till
996
+ tin
997
+ ting
998
+ tip
999
+ tir
1000
+ tis
1001
+ tish
1002
+ tism
1003
+ tist
1004
+ tit
1005
+ to
1006
+ toc
1007
+ tock
1008
+ tog
1009
+ tom
1010
+ ton
1011
+ top
1012
+ tor
1013
+ tors
1014
+ tos
1015
+ tot
1016
+ tow
1017
+ tu
1018
+ tum
1019
+ tun
1020
+ tur
1021
+ tus
1022
+ ty
1023
+ typ
1024
+ ub
1025
+ uc
1026
+ uch
1027
+ ud
1028
+ ug
1029
+ ugh
1030
+ ught
1031
+ ul
1032
+ ult
1033
+ um
1034
+ un
1035
+ unb
1036
+ unc
1037
+ und
1038
+ unf
1039
+ ung
1040
+ unp
1041
+ uns
1042
+ unt
1043
+ up
1044
+ ur
1045
+ us
1046
+ ust
1047
+ ut
1048
+ uth
1049
+ uts
1050
+ va
1051
+ vab
1052
+ vac
1053
+ val
1054
+ van
1055
+ var
1056
+ vas
1057
+ ve
1058
+ ved
1059
+ vel
1060
+ ven
1061
+ vent
1062
+ ver
1063
+ verc
1064
+ verp
1065
+ vers
1066
+ vert
1067
+ ves
1068
+ vet
1069
+ vi
1070
+ vib
1071
+ vic
1072
+ vich
1073
+ vid
1074
+ vil
1075
+ vin
1076
+ ving
1077
+ vir
1078
+ vis
1079
+ vism
1080
+ vit
1081
+ vo
1082
+ vol
1083
+ vor
1084
+ vu
1085
+ vul
1086
+ vy
1087
+ wa
1088
+ wag
1089
+ wal
1090
+ wan
1091
+ war
1092
+ ward
1093
+ wards
1094
+ was
1095
+ we
1096
+ web
1097
+ wed
1098
+ wel
1099
+ well
1100
+ wer
1101
+ wes
1102
+ wi
1103
+ wic
1104
+ wil
1105
+ win
1106
+ wind
1107
+ wing
1108
+ wis
1109
+ wit
1110
+ wo
1111
+ wolf
1112
+ won
1113
+ wor
1114
+ word
1115
+ work
1116
+ worm
1117
+ wort
1118
+ wy
1119
+ xa
1120
+ xant
1121
+ xe
1122
+ xed
1123
+ xer
1124
+ xi
1125
+ xil
1126
+ xin
1127
+ xis
1128
+ xo
1129
+ xor
1130
+ xu
1131
+ xy
1132
+ ys
1133
+ za
1134
+ zab
1135
+ zar
1136
+ ze
1137
+ zed
1138
+ zen
1139
+ zer
1140
+ zi
1141
+ zing
1142
+ zo
1143
+ zon
1144
+ zu
1145
+ zy