Skip to content

Commit 3a39713

Browse files
committed
Enhance lorem_generate with seed-based randomness and optimize word list initialization in lorem_ipsum.v
1 parent ab3d074 commit 3a39713

File tree

1 file changed

+13
-72
lines changed

1 file changed

+13
-72
lines changed

lorem_ipsum.v

Lines changed: 13 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ import strings
88
pub struct LoremCfg {
99
pub:
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
@@ -21,80 +22,20 @@ pub:
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)
2526
pub 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

Comments
 (0)