@@ -8,9 +8,10 @@ import strings
88pub struct LoremCfg {
99pub :
1010 paragraphs int = 3
11- words_per_sentence int = 12 // baseline clause length
12- sentences_per_paragraph int = 5
13- commas_per_sentence int = 2 // baseline comma density
11+ words_per_sentence int = 12 // varies ±20%
12+ sentences_per_paragraph int = 5 // varies ±20%
13+ commas_per_sentence int = 2 // varies ±20%
14+ seed int // seed for random generator
1415}
1516
1617// lorem_generate generates Lorem Ipsum–style text using the supplied
2122// `words_per_sentence` and `sentences_per_paragraph` parameters are randomly
2223// varied by ±20% to create natural variation, while `paragraphs` is used
2324// exactly as specified. The `commas_per_sentence` parameter serves as a
24- // baseline density that may vary in actual output.
25+ // baseline density that may vary in actual output. [LoremCfg](#LoremCfg)
2526pub fn lorem_generate (cfg LoremCfg) string {
26- lorem_words := [
27- 'lorem' ,
28- 'ipsum' ,
29- 'dolor' ,
30- 'sit' ,
31- 'amet' ,
32- 'consectetur' ,
33- 'adipiscing' ,
34- 'elit' ,
35- 'sed' ,
36- 'do' ,
37- 'eiusmod' ,
38- 'tempor' ,
39- 'incididunt' ,
40- 'ut' ,
41- 'labore' ,
42- 'et' ,
43- 'dolore' ,
44- 'magna' ,
45- 'aliqua' ,
46- 'enim' ,
47- 'ad' ,
48- 'minim' ,
49- 'veniam' ,
50- 'quis' ,
51- 'nostrud' ,
52- 'exercitation' ,
53- 'ullamco' ,
54- 'laboris' ,
55- 'nisi' ,
56- 'aliquip' ,
57- 'ex' ,
58- 'ea' ,
59- 'commodo' ,
60- 'consequat' ,
61- 'phasellus' ,
62- 'faucibus' ,
63- 'scelerisque' ,
64- 'eleifend' ,
65- 'vestibulum' ,
66- 'fringilla' ,
67- 'pellentesque' ,
68- 'habitant' ,
69- 'morbi' ,
70- 'tristique' ,
71- 'senectus' ,
72- 'netus' ,
73- 'malesuada' ,
74- 'fames' ,
75- 'turpis' ,
76- 'egestas' ,
77- 'sapien' ,
78- 'sodales' ,
79- 'vivamus' ,
80- 'fermentum' ,
81- 'curabitur' ,
82- 'rhoncus' ,
83- 'suscipit' ,
84- 'ultrices' ,
85- 'placerat' ,
86- 'imperdiet' ,
87- 'convallis' ,
88- 'bibendum' ,
89- 'volutpat' ,
90- 'accumsan' ,
91- 'iaculis' ,
92- 'ornare' ,
93- ]
27+ lorem_words := (
28+ 'lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor ' +
29+ 'incididunt ut labore et dolore magna aliqua enim ad minim veniam quis nostrud ' +
30+ 'exercitation ullamco laboris nisi aliquip ex ea' ).split (' ' )
9431
9532 comma_marks := ['‚' , ';' ]
9633 sentence_marks := ['.' , '…' , '!' , '?' ]
9734
35+ if cfg.seed != 0 {
36+ rand.seed ([u32 (cfg.seed), u32 (cfg.seed ^ 0x9e3779b9 )])
37+ }
38+
9839 mut out := strings.new_builder (2048 )
9940
10041 for p in 0 .. cfg.paragraphs {
0 commit comments