1if not modules then modules = { } end modules [ ' util-ran ' ] = {
2 version = 1 . 001 ,
3 comment = " companion to luat-lib.mkiv " ,
4 author = " Hans Hagen, PRAGMA-ADE, Hasselt NL " ,
5 copyright = " PRAGMA ADE / ConTeXt Development Team " ,
6 license = " see context related readme files "
7}
8
9local random = math . random
10local concat = table . concat
11local sub , upper = string . sub , string . upper
12
13local randomizers = utilities . randomizers or { }
14utilities . randomizers = randomizers
15
16local l_one = " bcdfghjklmnpqrstvwxz "
17local l_two = " aeiouy "
18
19local u_one = upper ( l_one )
20local u_two = upper ( l_two )
21
22local n_one = # l_one
23local n_two = # l_two
24
25function randomizers . word ( min , max , separator )
26 local t = { }
27 for i = 1 , random ( min , max ) do
28 if i % 2 = = 0 then
29 local r = random ( 1 , n_one )
30 t [ i ] = sub ( l_one , r , r )
31 else
32 local r = random ( 1 , n_two )
33 t [ i ] = sub ( l_two , r , r )
34 end
35 end
36 return concat ( t , separator )
37end
38
39function randomizers . initials ( min , max )
40 if not min then
41 if not max then
42 min , max = 1 , 3
43 else
44 min , max = 1 , min
45 end
46 elseif not max then
47 max = min
48 end
49 local t = { }
50 local n = random ( min or 1 , max or 3 )
51 local m = 0
52 for i = 1 , n do
53 m = m + 1
54 if i % 2 = = 0 then
55 local r = random ( 1 , n_one )
56 t [ m ] = sub ( u_one , r , r )
57 else
58 local r = random ( 1 , n_two )
59 t [ m ] = sub ( u_two , r , r )
60 end
61 m = m + 1
62 t [ m ] = " . "
63 end
64 return concat ( t )
65end
66
67function randomizers . firstname ( min , max )
68 if not min then
69 if not max then
70 min , max = 3 , 10
71 else
72 min , max = 1 , min
73 end
74 elseif not max then
75 max = min
76 end
77 local t = { }
78 local n = random ( min , max )
79 local b = true
80 if n % 2 = = 0 then
81 local r = random ( 1 , n_two )
82 t [ 1 ] = sub ( u_two , r , r )
83 b = true
84 else
85 local r = random ( 1 , n_one )
86 t [ 1 ] = sub ( u_one , r , r )
87 b = false
88 end
89 for i = 2 , n do
90 if b then
91 local r = random ( 1 , n_one )
92 t [ i ] = sub ( l_one , r , r )
93 b = false
94 else
95 local r = random ( 1 , n_two )
96 t [ i ] = sub ( l_two , r , r )
97 b = true
98 end
99 end
100 return concat ( t , separator )
101end
102
103randomizers . surname = randomizers . firstname
104
105
106
107
108 |