├── .gitignore
├── LICENSE
├── README.mkd
├── autoload
└── fake.vim
├── doc
└── fake.txt
├── plugin
└── fake.vim
└── src
├── country
├── female_name
├── gtld
├── job
├── male_name
├── nonsense
├── surname
└── word
/.gitignore:
--------------------------------------------------------------------------------
1 | *~
2 | *.bak
3 | *.swp
4 | .DS_Store
5 | .directory
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License
2 |
3 | Copyright (c) 2016 Takahiro Endo
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | "Software"), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included
14 | in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/README.mkd:
--------------------------------------------------------------------------------
1 | # Vim-Fake
2 |
3 | Vim-fake is a vim plugin to provide a generator of random dummy/filler text,
4 | which is useful to generate a nonsense text like [_Lorem ipsum_](https://en.wikipedia.org/wiki/Lorem_ipsum).
5 |
6 | ```vim
7 | :echo fake#gen("paragraph")
8 |
9 | Ignota autem nostrud albucius sagittis no fabulas erat eam ridens
10 | et per moderatius 98 movet? Sea iure est integre metus adipisci
11 | justo id con ultrices omnes minim odioaccommodare. Consul omnium
12 | enim volumus lectus habeo fuisset pri utinam sem tamquam no.
13 | ```
14 |
15 | ## Usage
16 |
17 | ### Generate
18 |
19 | `fake#gen({keyname})` is to generate a random data,
20 | where the `{keyname}` is a data source name.
21 | For example, if you get a country name, use `"country"`.
22 |
23 | `fake#gen()` returns a different answer for each execution.
24 |
25 | ```vim
26 | :echo fake#gen("country")
27 | Canada
28 | :echo fake#gen("country")
29 | Nigeria
30 | :echo fake#gen("country")
31 | Indonesia
32 | ```
33 |
34 | The following built-in dictionaries({keyname}) are available as data sources.
35 | The dictionary is a simple text file which is like `/usr/share/dict/words` on UNIX.
36 | `fake#gen({keyname})` chooses and returns a random line from the {keyname} dictionary.
37 |
38 | | {keyname} | Contents | Order |
39 | |:--------------|:----------------------------|:--------------------|
40 | | male_name | Male names in the world | Population |
41 | | female_name | Female names in the world | Population |
42 | | surname | Surnames in the world | Population |
43 | | country | Country names | Population |
44 | | gtld | gTLD | Number of websites |
45 | | job | Job names | |
46 | | word | English words | |
47 | | nonsense | Nonsense words | |
48 |
49 |
50 | ### Replace
51 |
52 | To replace the following `dummy` texts with real names
53 |
54 | ```xml
55 |
56 | - dummy
57 | - dummy
58 | - dummy
59 | - dummy
60 |
61 | ```
62 |
63 | Type next, `:%s/dummy/\=fake#gen("male_name")/g`
64 |
65 | ```xml
66 |
67 | - Steve
68 | - Rodney
69 | - Leonard
70 | - Adam
71 |
72 | ```
73 |
74 | ### Replace Placeholder
75 |
76 | To substitute multiple places with placeholder,
77 |
78 | ```xml
79 |
80 | FAKE__male_name__
81 | FAKE__country__
82 | FAKE__job__
83 |
84 |
85 | FAKE__male_name__
86 | FAKE__country__
87 | FAKE__job__
88 |
89 | ```
90 |
91 | `:FakeSubstitute` command is to substitute each `FAKE__{keyname}__` with
92 | `fake#gen({keyname})`, respectively.
93 |
94 | ```xml
95 |
96 | Bill
97 | Pakistan
98 | Animal Trainer
99 |
100 |
101 | Willard
102 | Bangladesh
103 | Civil Engineer
104 |
105 | ```
106 |
107 | ### Insert
108 |
109 | To insert these fake texts in the insert-mode,
110 | use the expression register like `=fake#gen("male_name")`
111 |
112 | More easily, you probably want to use with a snippet plugin.
113 |
114 | [vim-fake & neosnippet example - Gist](https://gist.github.com/tkhren/9fbc7227c2e9d2f4319c)
115 |
116 | 
117 |
118 | ## More Generators
119 |
120 | **You can define a new generator in various combination of the existing `{keyname}s`.**
121 |
122 | `fake#define({keyname}, {code})` defines a new `{keyname}`,
123 | where the `{code}` is a vimL expression.
124 |
125 | `fake#gen({keyname})` will return `eval({code})` if the `{keyname}` is defined.
126 | Otherwise, it will search `{keyname}` dictionary on `g:fake_src_paths` and
127 | return a random line of the one.
128 | The later code is equivalent to `fake#choice(fake#load({keyname}))`.
129 |
130 |
131 | There are some definition examples,
132 |
133 | ```vim
134 | "" Choose a random element from a list
135 | call fake#define('sex', 'fake#choice(["male", "female"])')
136 |
137 | "" Get a name of male or female
138 | "" fake#int(1) returns 0 or 1
139 | call fake#define('name', 'fake#int(1) ? fake#gen("male_name")'
140 | \ . ' : fake#gen("female_name")')
141 |
142 | "" Get a full name
143 | call fake#define('fullname', 'fake#gen("name") . " " . fake#gen("surname")')
144 |
145 | "" Get a nonsense text like Lorem ipsum
146 | call fake#define('sentense', 'fake#capitalize('
147 | \ . 'join(map(range(fake#int(3,15)),"fake#gen(\"nonsense\")"))'
148 | \ . ' . fake#chars(1,"..............!?"))')
149 |
150 | call fake#define('paragraph', 'join(map(range(fake#int(3,10)),"fake#gen(\"sentense\")"))')
151 |
152 | "" Alias
153 | call fake#define('lipsum', 'fake#gen("paragraph")')
154 | ```
155 |
156 | After these definitions,
157 |
158 | ```vim
159 | :echo fake#gen("sex")
160 | female
161 |
162 | :echo fake#gen("fullname")
163 | Janet Berry
164 |
165 | :echo fake#gen("sentense")
166 | Explicari con hendrerit dolore efficiendi laoreet!
167 |
168 | :echo fake#gen("paragraph")
169 | Vim vitae fugit vel torquatos! Neque veniam summo tamquam nulla
170 | hendrerit mucius at commodo repudiare sint sodales in. Audiam
171 | detracto erant enim laudem error error lucilius definitiones integre.
172 | Eam veri gravida recteque sit con te agam posidonium fabulas
173 | omittantur diam feugiat noster. Denique bibendum exerci populo usu
174 | netus exerci. Fusce mutat posidonium el est nominati o iriure nec
175 | quidam soluta accusam? Felis pericula leo aeque turpis ne illum integer.
176 | Cetero nullam sonet zril vulputate. Cetero corrumpit quisque nam doming
177 | turpis mutat solet.
178 | ```
179 |
180 |
181 | ## Weighted Choice
182 |
183 | ```
184 | * fake#load({keyname})
185 | Search {keyname} dictionary on g:fake_src_paths and
186 | return a lines list of the one.
187 |
188 | * fake#choice({list})
189 | Return a random element from the list
190 |
191 | * fake#get({list}, {rate})
192 | Return an element at the {rate} from the list.
193 | {rate} must be a floating point number between 0.0 and 1.0
194 | This is equivalent to list[floor(len(list) * rate)]
195 |
196 | * fake#betapdf({a}, {b})
197 | Return a random floting point number between 0.0 and 1.0 that
198 | has the occurrence of the Beta probability distribution,
199 | where the shape parameters a,b > 0
200 | ```
201 |
202 | The `fake#choice({list})` chooses a random element of the given list,
203 | which its choice is uniformly flat and not biased.
204 | If you need weighted choice, try a combination of `fake#get()` and `fake#betapdf()`.
205 |
206 | `fake#betapdf()` is useful as the second argument of `fake#get()`, and its shape chart
207 | indicates its occurrence tendency or frequency. Refer to the following websites
208 | about beta distribution or a way to decide the shape parameters _a,b_.
209 |
210 | [Beta distribution - Wolfram|Alpha](http://www.wolframalpha.com/input/?i=beta+distribution)
211 | [http://keisan.casio.com/exec/system/1180573226](http://keisan.casio.com/exec/system/1180573226)
212 |
213 | To tell the truth, the built-in "country" dictionary is ordered by population.
214 | If you need to frequently get "China" or "India" which has huge population,
215 |
216 | ```vim
217 | "" Get a country weighted by population distribution
218 | call fake#define('country', 'fake#get(fake#load("country"),'
219 | \ . 'fake#betapdf(0.2, 4.0))')
220 |
221 | :echo fake#gen("country")
222 | China
223 | :echo fake#gen("country")
224 | India
225 | :echo fake#gen("country")
226 | China
227 | ```
228 |
229 | ##### The chart of betapdf(0.2, 4.0)
230 | ")
231 |
232 | ##### Other examples
233 |
234 | ```vim
235 | "" Get an age weighted by generation distribution
236 | call fake#define('age', 'float2nr(floor(110 * fake#betapdf(1.0, 1.45)))')
237 |
238 | "" Get a domain (ordered by number of websites)
239 | call fake#define('gtld', 'fake#get(fake#load("gtld"),'
240 | \ . 'fake#betapdf(0.2, 3.0))')
241 |
242 | call fake#define('email', 'tolower(substitute(printf("%s@%s.%s",'
243 | \ . 'fake#gen("name"),'
244 | \ . 'fake#gen("surname"),'
245 | \ . 'fake#gen("gtld")), "\\s", "-", "g"))')
246 | ```
247 |
248 |
249 | ## Add More Dictionaries
250 |
251 | You can add your favorite dictionaries.
252 | `g:fake_src_paths` is a list of directory that contains dictionaries,
253 | which will be used in `fake#load()` or `fake#gen()` as its search path.
254 |
255 | ```vim
256 | let g:fake_src_paths = ['/home/user/.vim/fake_src1',
257 | \ '/home/user/.vim/fake_src2']
258 | ```
259 |
260 |
261 | ## Others
262 |
263 | Please note the following two points,
264 |
265 | * This plugin uses `sha256()` as a pseudo-random generator, so that means its
266 | distribution uniformity maybe worse than the other generator like
267 | Mersenne Twister or XorShift.
268 |
269 | * The built-in dictionaries are subject to change in future for
270 | quality improvement without any announcement. If you have dissatisfaction
271 | with the contents, please add your original dictionary on the `g:fake_src_paths`.
272 |
--------------------------------------------------------------------------------
/autoload/fake.vim:
--------------------------------------------------------------------------------
1 | " ===============================================================
2 | " Fake - Random dummy/filler text generator
3 | " ===============================================================
4 | let s:save_cpo = &cpo
5 | set cpo&vim
6 |
7 | "" Initialize global vaiables
8 | let g:fake_bootstrap = get(g:, 'fake_bootstrap', 0)
9 | let g:fake_src_paths = get(g:, 'fake_src_paths', [])
10 |
11 | "" Add the fallback directory
12 | let srcpath_list = [fnamemodify(expand(''), ':p:h:h:gs!\\!/!') . '/src']
13 | let s:srcpath = join(extend(srcpath_list, g:fake_src_paths, 0), ',')
14 |
15 | "" Caches
16 | let s:fake_codes = {}
17 | let s:fake_cache = {}
18 | let s:fake_charset_cache = {}
19 |
20 | "================================================================
21 | " Utility functions
22 | "================================================================
23 | function! s:path_isfile(path) abort "{{{1
24 | return filereadable(resolve(expand(a:path)))
25 | endfunction
26 | "}}}1
27 |
28 | function! s:path_isdir(path) abort "{{{1
29 | return isdirectory(resolve(expand(a:path)))
30 | endfunction
31 | "}}}1
32 |
33 | function! s:charset(pattern) abort "{{{1
34 | if has_key(s:fake_charset_cache, a:pattern)
35 | return s:fake_charset_cache[a:pattern]
36 | endif
37 |
38 | let uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
39 | let lowercase = 'abcdefghijklmnopqrstuvwxyz'
40 | let letters = uppercase . lowercase
41 | let digits = '0123456789'
42 | let hexdigits = '0123456789ABCDEF'
43 | let octdigits = '01234567'
44 | let keywords = uppercase . lowercase . digits . '_'
45 |
46 | let cs = a:pattern
47 | let cs = substitute(cs, '\\w', keywords , 'g')
48 | let cs = substitute(cs, '\\u', uppercase, 'g')
49 | let cs = substitute(cs, '\\l', lowercase, 'g')
50 | let cs = substitute(cs, '\\d', digits, 'g')
51 | let cs = substitute(cs, '\\x', hexdigits, 'g')
52 | let cs = substitute(cs, '\\o', octdigits, 'g')
53 |
54 | let s:fake_charset_cache[a:pattern] = cs
55 | return cs
56 | endfunction
57 | "}}}1
58 |
59 | "================================================================
60 | " Pseudo-Random Generator
61 | "================================================================
62 |
63 | let s:Random = {}
64 |
65 | function! s:Random.initialize(seed) abort "{{{1
66 | let int_max = 0x7fffffffffffffff " for 32 and 64bit systems
67 | let self.RAND_MAX = int_max
68 | let self._HEX_MAX = printf('%x', int_max)
69 | let self._MASK_WIDTH = len(self._HEX_MAX)
70 | let self._r = a:seed
71 | let self._buffer = ''
72 | endfunction
73 | "}}}1
74 |
75 | function! s:Random.randombits() abort "{{{1
76 | if len(self._buffer) < self._MASK_WIDTH
77 | let self._buffer = tolower(sha256(self._r))
78 | endif
79 |
80 | let hash = self._buffer[:self._MASK_WIDTH - 1]
81 | let self._buffer = self._buffer[self._MASK_WIDTH:]
82 |
83 | if hash > self._HEX_MAX
84 | let hash = tr(hash[0], '89abcdef', '01234567') . hash[1:]
85 | endif
86 |
87 | let self._r = str2nr(hash, 16)
88 |
89 | return self._r
90 | endfunction
91 | "}}}1
92 |
93 | call s:Random.initialize(reltime()[1])
94 |
95 | "================================================================
96 | " General
97 | "================================================================
98 | function! fake#bits() abort "{{{1
99 | return s:Random.randombits()
100 | endfunction
101 | "}}}1
102 |
103 | function! fake#int(...) abort "{{{1
104 | "" Return a random integer
105 | "" int() range [0, MAX_INT]
106 | "" int(a) range [0, a]
107 | "" int(a,b) range [a, b]
108 |
109 | let r = s:Random.randombits()
110 | if a:0 >= 2
111 | let a = float2nr(a:000[0])
112 | let b = float2nr(a:000[1])
113 | elseif a:0 == 1
114 | let a = 0
115 | let b = float2nr(a:000[0])
116 | else
117 | return r
118 | endif
119 |
120 | let [a,b] = (a > b) ? [b,a] : [a,b]
121 | return (r % (b - a + 1) + a)
122 | endfunction
123 | "}}}1
124 |
125 | function! fake#float(...) abort "{{{1
126 | "" Return a random float
127 | "" float() range [0.0, 1.0]
128 | "" float(a) range [0, a]
129 | "" float(a,b) range [a, b]
130 | if a:0 >= 2
131 | let a = get(a:000, 0) * 1.0
132 | let b = get(a:000, 1) * 1.0
133 | elseif a:0 == 1
134 | let a = 0.0
135 | let b = get(a:000, 0) * 1.0
136 | else
137 | let a = 0.0
138 | let b = 1.0
139 | endif
140 |
141 | let r = s:Random.randombits()
142 | let [a,b] = (a > b) ? [b,a] : [a,b]
143 | return ((1.0 * r / s:Random.RAND_MAX) * (b - a) + a)
144 | endfunction
145 | "}}}1
146 |
147 | function! fake#chars(length, ...) abort "{{{1
148 | let pattern = get(a:000, 0, '\u\l\d')
149 | let chars = s:charset(pattern)
150 | let mx = strlen(chars) - 1
151 | let pw = []
152 | for i in range(a:length)
153 | call add(pw, strpart(chars, fake#int(0, mx), 1))
154 | endfor
155 | return join(pw, '')
156 | endfunction
157 | "}}}1
158 |
159 | function! fake#choice(list) abort "{{{1
160 | return get(a:list, fake#int(0, len(a:list)-1), '')
161 | endfunction
162 | "}}}1
163 |
164 | function! fake#get(list, rate) abort "{{{1
165 | "" `rate` that must be in [0.0, 1.0] is a relative position
166 | "" against the whole list.
167 | ""
168 | "" If rate=0.0, return the first element of the list.
169 | "" If rate=0.5, return an element at `len(list)/2`.
170 | "" If rate=1.0, return the last element of the list.
171 |
172 | let idx = float2nr(floor(len(a:list) * a:rate))
173 | return get(a:list, idx)
174 | endfunction
175 | "}}}1
176 |
177 | function! fake#load(dictname) abort "{{{1
178 | if has_key(s:fake_cache, a:dictname)
179 | return s:fake_cache[a:dictname]
180 | endif
181 |
182 | let found = split(globpath(s:srcpath, a:dictname))
183 |
184 | if empty(found)
185 | echohl ErrorMsg
186 | echo printf('The `%s` was not defined or found in g:fake_src_paths.',
187 | \ a:dictname)
188 | echohl None
189 | return []
190 | endif
191 |
192 | if s:path_isfile(found[0])
193 | let lines = readfile(found[0])
194 | let s:fake_cache[a:dictname] = lines
195 | return s:fake_cache[a:dictname]
196 | else
197 | echohl ErrorMsg
198 | echo printf('`%s` is a directory. `%s` must be a valid file.',
199 | \ found[0],
200 | \ a:dictname)
201 | echohl None
202 | return []
203 | endif
204 | endfunction
205 | "}}}1
206 |
207 | function! fake#define(keyname, code) abort "{{{1
208 | let s:fake_codes[a:keyname] = a:code
209 | endfunction
210 | "}}}1
211 |
212 | function! fake#has_keyname(keyname) abort "{{{1
213 | if has_key(s:fake_codes, a:keyname) || has_key(s:fake_cache, a:keyname)
214 | return 1
215 | endif
216 |
217 | let found = split(globpath(s:srcpath, a:keyname))
218 |
219 | if empty(found) || !s:path_isfile(found[0])
220 | return 0
221 | endif
222 |
223 | return 1
224 | endfunction
225 | "}}}1
226 |
227 | function! fake#get_keynames() abort "{{{1
228 | let in_memory_keys = keys(s:fake_codes) + keys(s:fake_cache)
229 |
230 | let files = filter(split(globpath(s:srcpath, '*')), 's:path_isfile(v:val)')
231 | let file_keys = map(files, 'fnamemodify(v:val, ":t")')
232 |
233 | return uniq(sort(in_memory_keys + file_keys))
234 | endfunction
235 | "}}}1
236 |
237 | function! fake#gen(keyname) abort "{{{1
238 | if has_key(s:fake_codes, a:keyname)
239 | return eval(s:fake_codes[a:keyname])
240 | else
241 | return fake#choice(fake#load(a:keyname))
242 | endif
243 | endfunction
244 | "}}}1
245 |
246 | function! fake#free_cache() abort "{{{1
247 | " echomsg "Called free_cache()"
248 | let s:fake_cache = {}
249 | let s:fake_charset_cache = {}
250 | endfunction
251 | "}}}1
252 |
253 | "================================================================
254 | " Utility Functions
255 | "================================================================
256 | function! fake#gammapdf(a, b) abort "{{{1
257 | if a:a <= 0.0 || a:b <= 0.0
258 | echomsg 'Error'
259 | endif
260 |
261 | if a:a > 1.0
262 | let nv = sqrt(2.0 * a:a - 1.0)
263 | let sv = 1.0 + log(4.5)
264 |
265 | while 1
266 | let u1 = fake#float()
267 | if u1 < 1.0e-6
268 | continue
269 | endif
270 | let u2 = 1.0 - fake#float()
271 | let v = log(u1/(1.0 - u1)) / nv
272 | let x = a:a * exp(v)
273 | let z = u1 * u1 * u2
274 | let r = a:a + (a:a + nv) * v - x - log(4)
275 | let w = r + sv - 4.5 * z
276 | if w >= 0.0 || r >= log(z)
277 | return x * a:b
278 | endif
279 | endwhile
280 |
281 | elseif a:a == 1.0
282 | let u1 = fake#float()
283 | while u1 <= 1.0e-6
284 | let u1 = fake#float()
285 | endwhile
286 | return -1.0 * log(u1) * a:b
287 |
288 | else
289 | let E = exp(1)
290 | while 1
291 | let u1 = fake#float()
292 | let v = (E + a:a) / E
293 | let p = v * u1
294 | let x = (p <= 1.0) ?
295 | \ pow(p, (1.0/a:a)) :
296 | \ (-1.0 * log((v - p)/a:a))
297 |
298 | let u2 = fake#float()
299 | if p > 1.0
300 | if u2 <= pow(x, (a:a - 1.0))
301 | break
302 | endif
303 | elseif u2 <= exp(-1.0 * x)
304 | break
305 | endif
306 | endwhile
307 | return x * a:b
308 | endif
309 | endfunction
310 | " }}}1
311 |
312 | function! fake#betapdf(a, b) abort "{{{1
313 | let x = fake#gammapdf(a:a, 1.0)
314 | return (x > 0.0) ? (x / (x + fake#gammapdf(a:b, 1.0))) : 0.0
315 | endfunction
316 | "}}}1
317 |
318 | function! fake#capitalize(s) "{{{1
319 | return toupper(strpart(a:s,0,1)) . tolower(strpart(a:s,1))
320 | endfunction
321 | "}}}1
322 |
323 | function! fake#titlize(s) "{{{1
324 | return substitute(a:s, '\v(\s)?(\w)(\w*)', '\1\U\2\L\3', 'g')
325 | endfunction
326 | "}}}1
327 |
328 | "================================================================
329 | " Basic Derivatives
330 | "================================================================
331 | if !empty(g:fake_bootstrap)
332 | "" Choice a random element from a list
333 | call fake#define('sex', 'fake#choice(["male", "female"])')
334 |
335 | "" Get a name of male or female
336 | call fake#define('name', 'fake#int(1) ? fake#gen("male_name")'
337 | \ . ' : fake#gen("female_name")')
338 |
339 | "" Get a full name
340 | call fake#define('fullname', 'fake#gen("name") . " " . fake#gen("surname")')
341 |
342 | "" Get an age weighted by generation distribution
343 | call fake#define('age', 'float2nr(floor(110 * fake#betapdf(1.0, 1.45)))')
344 |
345 | "" Get a country weighted by population distribution
346 | call fake#define('country', 'fake#get(fake#load("country"),'
347 | \ . 'fake#betapdf(0.2, 4.0))')
348 |
349 | "" Get a domain (ordered by number of websites)
350 | call fake#define('gtld', 'fake#get(fake#load("gtld"),'
351 | \ . 'fake#betapdf(0.2, 3.0))')
352 |
353 | call fake#define('email', 'tolower(substitute(printf("%s@%s.%s",'
354 | \ . 'fake#gen("name"),'
355 | \ . 'fake#gen("surname"),'
356 | \ . 'fake#gen("gtld")), "\\s", "-", "g"))')
357 |
358 | "" Get a nonsense text like Lorem ipsum
359 | call fake#define('_nonsense', 'fake#int(99) ? fake#gen("nonsense") : (fake#chars(fake#int(1,4),"\\d"))')
360 |
361 | call fake#define('sentense', 'fake#capitalize('
362 | \ . 'join(map(range(fake#int(3,15)),"fake#gen(\"_nonsense\")"))'
363 | \ . ' . fake#chars(1,"..............!?"))')
364 |
365 | call fake#define('paragraph', 'join(map(range(fake#int(3,10)),"fake#gen(\"sentense\")"))')
366 |
367 | "" Alias
368 | call fake#define('lipsum', 'fake#gen("paragraph")')
369 |
370 | "" Overwrite the existing keyname
371 | " call fake#define('lipsum', 'join(map(range(fake#int(3,15)),"fake#gen(\"word\")"))')
372 | endif
373 |
374 |
375 | let &cpo = s:save_cpo
376 | unlet s:save_cpo
377 |
378 | " vim: ft=vim fenc=utf-8 ff=unix foldmethod=marker:
379 |
--------------------------------------------------------------------------------
/doc/fake.txt:
--------------------------------------------------------------------------------
1 | *fake.txt* Random dummy/filler text generator. *fake*
2 |
3 | Version: 0.1.0
4 | Author : tkhren
5 | License: MIT License
6 |
7 | ==============================================================================
8 | CONTENTS *fake-contents*
9 |
10 | INTRODUCTION |fake-introduction|
11 | INTERFACE |fake-interface|
12 | CUSTOMIZING |fake-customizing|
13 | OTHERS |fake-others|
14 | CHANGELOG |fake-changelog|
15 |
16 |
17 | ==============================================================================
18 | INTRODUCTION *fake-introduction*
19 |
20 | Vim-fake is a Vim plugin to provide a generator of random dummy/filler text,
21 | which is useful to generate a nonsense text like "Lorem ipsum".
22 | >
23 | :echo fake#gen("paragraph")
24 |
25 | Ignota autem nostrud albucius sagittis no fabulas erat eam ridens
26 | et per moderatius 98 movet? Sea iure est integre metus adipisci
27 | justo id con ultrices omnes minim odioaccommodare. Consul omnium
28 | enim volumus lectus habeo fuisset pri utinam sem tamquam no.
29 | <
30 | Latest version:
31 | https://github.com/tkhren/vim-fake
32 |
33 |
34 | ------------------------------------------------------------------------------
35 | Generate ~
36 |
37 | `fake#gen({keyname})` is to generate a random data,
38 | where the `{keyname}` is a data source name.
39 | For example, if you get a country name, use `"country"`.
40 |
41 | |fake#gen()| returns a different answer for each execution.
42 | >
43 | :echo fake#gen("country")
44 | Canada
45 | :echo fake#gen("country")
46 | Nigeria
47 | :echo fake#gen("country")
48 | Indonesia
49 | <
50 |
51 | The following built-in dictionaries({keyname}) are available as data sources.
52 | The dictionary is a simple text file which is like `/usr/share/dict/words` on UNIX.
53 | `fake#gen({keyname})` chooses and returns a random line from the {keyname} dictionary.
54 |
55 | | {keyname} | Contents | Order |
56 | | ------------- | --------------------------- | ------------------- |
57 | | male_name | Male names in the world | Population |
58 | | female_name | Female names in the world | Population |
59 | | surname | Surnames in the world | Population |
60 | | country | Country names | Population |
61 | | gtld | gTLD | Number of websites |
62 | | job | Job names | |
63 | | word | English words | |
64 | | nonsense | Nonsense words | |
65 |
66 | ------------------------------------------------------------------------------
67 | Replace ~
68 |
69 | To replace the following `dummy` texts with real names
70 |
71 | >
72 |
73 | - dummy
74 | - dummy
75 | - dummy
76 | - dummy
77 |
78 | <
79 |
80 | Type next, `:%s/dummy/\=fake#gen("male_name")/g`
81 |
82 | >
83 |
84 | - Steve
85 | - Rodney
86 | - Leonard
87 | - Adam
88 |
89 | <
90 | ------------------------------------------------------------------------------
91 | Replace Placeholder ~
92 |
93 | To substitute multiple places with placeholder,
94 |
95 | >
96 |
97 | FAKE__male_name__
98 | FAKE__country__
99 | FAKE__job__
100 |
101 |
102 | FAKE__male_name__
103 | FAKE__country__
104 | FAKE__job__
105 |
106 | <
107 |
108 | |:FakeSubstitute| command is to substitute each `FAKE__{keyname}__` with
109 | `fake#gen({keyname})`, respectively.
110 |
111 | >
112 |
113 | Bill
114 | Pakistan
115 | Animal Trainer
116 |
117 |
118 | Willard
119 | Bangladesh
120 | Civil Engineer
121 |
122 | <
123 | ------------------------------------------------------------------------------
124 | Insert ~
125 |
126 | To insert these fake texts in the insert-mode,
127 | use the expression register like `=fake#gen("male_name")`
128 |
129 | More easily, you probably want to use with a snippet plugin.
130 |
131 |
132 | ==============================================================================
133 | INTERFACE *fake-interface*
134 |
135 | Variables ~
136 |
137 | g:fake_src_paths *g:fake_src_paths*
138 | (Default: [])
139 | Directory list. The each directory must contain dictionary source
140 | files. |fake#load()| will use it with |globpath()| to get a {keyname}
141 | dictionary, and the first match found will be used.
142 | If the given {keyname} is not found on the paths, it will find
143 | built-in source directory (`{THIS_PLUGIN_DIR}/src`) as fallback.
144 | >
145 | let g:fake_src_paths = ['/home/user/.vim/fake_src1',
146 | \ . '/home/user/.vim/fake_src2']
147 | <
148 |
149 | g:fake_bootstrap *g:fake_bootstrap*
150 | (Default: 0)
151 | If this variable is non-zero, load some definitions.
152 | See |fake-customizing|
153 |
154 | ------------------------------------------------------------------------------
155 | Functions ~
156 |
157 | fake#int() *fake#int()*
158 | fake#int({max})
159 | fake#int({min}, {max})
160 | Return a random integer
161 |
162 | FUNCTION RANGE
163 | int() [0, MAX_INT]
164 | int({max}) [0, {max}]
165 | int({min}, {max}) [{min}, {max}]
166 |
167 | fake#float() *fake#float()*
168 | fake#float({max})
169 | fake#float({min}, {max})
170 | Return a random floating point number
171 |
172 | FUNCTION RANGE
173 | float() [0.0, 1.0]
174 | float({max}) [0.0, {max}]
175 | float({min}, {max}) [{min}, {max}]
176 |
177 | fake#chars({length}, [{charset}]) *fake#chars()*
178 | Return a string consists of random characters.
179 | This function is useful to generate a password.
180 | Some character sets are available: \w, \u, \l, \d, \x, \o
181 | >
182 | :echo fake#chars(8, 'abc')
183 | cbabccab
184 |
185 | :echo fake#chars(8, '\d')
186 | 94610285
187 | <
188 | fake#choice({list}) *fake#choice()*
189 | Choose a random element from the {list}.
190 |
191 | fake#get({list}, {rate}) *fake#get()*
192 | Get an element at {rate} from the {list}.
193 | {rate} is a relative position against the whole list, and
194 | must be a floating point number in [0.0, 1.0]
195 |
196 | If rate=0.0, return the first element of the {list}.
197 | If rate=0.5, return an element at `len(list)/2`.
198 | If rate=1.0, return the last element of the {list}.
199 |
200 | This is equivalent to `list[floor(len(list)*rate)]`.
201 |
202 | See also |fake#betapdf()|
203 |
204 | fake#load({dictname}) *fake#load()*
205 | Return a list of all lines of a prepared dictionary file named
206 | {dictname}. Glob searching the {dictname} in the |g:fake_src_paths|,
207 | the first found dictionary will be loaded.
208 |
209 | The loaded dictionary will be kept on memory until calling
210 | |fake#free_cache()|
211 |
212 | fake#define({keyname}, {code}) *fake#define()*
213 | Define a code snippet that will be executed in fake#gen().
214 | The {code} must be an expression capable of evaluating with *eval()* .
215 | {keyname} should consist of [a-zA-Z0-9_/]
216 |
217 | fake#gen({keyname}) *fake#gen()*
218 | If {keyname} is registered with |fake#define()| , return `eval(code)`.
219 | Otherwise, return `fake#choice(fake#load(keyname))`.
220 |
221 | fake#free_cache() *fake#free_cache()*
222 | Free cached dictionaries from memory.
223 | This function will be called when |BufHidden| as an AutoCommand
224 |
225 |
226 | Utility functions ~
227 |
228 | fake#betapdf({a}, {b}) *fake#betapdf()*
229 | Return a random floting point number between 0.0 and 1.0 that
230 | has the occurrence of the Beta probability distribution,
231 | where the shape parameters a,b > 0
232 |
233 | This function is useful as the second argument of |fake#get()|
234 | for weighted choice.
235 |
236 | Beta Distribution Calculator
237 | http://keisan.casio.com/exec/system/1180573226
238 |
239 | Example)
240 | Get age weighted by generation distribution.
241 | >
242 | call fake#define('age', 'float2nr(floor('
243 | \ . '110 * fake#betapdf(1.0, 1.45)'
244 | \ . '))')
245 | <
246 | Get country weighted by population distribution
247 | (* "country" dictionary is ordered by population)
248 | Most of cases, `fake#gen("country")` will frequently return
249 | "China" or "India"
250 | >
251 | call fake#define('country', 'fake#get(fake#load("country"),'
252 | \ . 'fake#betapdf(0.4, 6.0))')
253 | <
254 |
255 | fake#capitalize({str}) *fake#capitalize()*
256 | fake#titlize({str}) *fake#titlize()*
257 | Convert letter case. See also |toupper()| and |tolower()| .
258 | >
259 | fake#capitalize("SAMPLE TEXT") => "Sample text"
260 | fake#titlize("SAMPLE TEXT") => "Sample Text"
261 | <
262 | ------------------------------------------------------------------------------
263 | Commands ~
264 |
265 | :FakeSubstitute *:FakeSubstitute*
266 | :[range]FakeSubstitute
267 | Substitute each `FAKE__{keyname}__` with `fake#gen({keyname})`.
268 |
269 | See |fake-introduction|
270 |
271 |
272 | ==============================================================================
273 | CUSTOMIZING *fake-customizing*
274 |
275 | You can define a new generator in various combination of the existing
276 | {keyname}s.
277 |
278 | `fake#define({keyname},{code})` defines a new {keyname}, where the {code}
279 | is a vimL expression.
280 |
281 | `fake#gen({keyname})` will return `eval({code})` if the {keyname} is defined.
282 | Otherwise, it will search {keyname} dictionary on |g:fake_src_paths| and
283 | return a random line of the one. The later code is equivalent to
284 | `fake#choice(fake#load({keyname}))`.
285 |
286 |
287 | There are some definition examples,
288 | >
289 | "" Choose a random element from a list
290 | call fake#define('sex', 'fake#choice(["male", "female"])')
291 |
292 | "" Get a name of male or female
293 | call fake#define('name', 'fake#int(1) ? fake#gen("male_name")'
294 | \ . ' : fake#gen("female_name")')
295 |
296 | "" Get a full name
297 | call fake#define('fullname', 'fake#gen("name") . " " . fake#gen("surname")')
298 |
299 | "" Get a nonsense text like Lorem ipsum
300 | call fake#define('sentense', 'fake#capitalize('
301 | \ . 'join(map(range(fake#int(3,15)),"fake#gen(\"nonsense\")"))'
302 | \ . ' . fake#chars(1,"..............!?"))')
303 |
304 | call fake#define('paragraph', 'join(map(range(fake#int(3,10)),'
305 | \ . '"fake#gen(\"sentense\")"))')
306 |
307 | "" Alias
308 | call fake#define('lipsum', 'fake#gen("paragraph")')
309 | <
310 | After these definitions,
311 | >
312 | :echo fake#gen("sex")
313 | female
314 |
315 | :echo fake#gen("fullname")
316 | Janet Berry
317 |
318 | :echo fake#gen("sentense")
319 | Explicari con hendrerit dolore efficiendi laoreet!
320 |
321 | :echo fake#gen("paragraph")
322 | Vim vitae fugit vel torquatos! Neque veniam summo tamquam nulla
323 | hendrerit mucius at commodo repudiare sint sodales in. Audiam
324 | detracto erant enim laudem error error lucilius definitiones integre.
325 | Eam veri gravida recteque sit con te agam posidonium fabulas
326 | omittantur diam feugiat noster. Denique bibendum exerci populo usu
327 | netus exerci. Fusce mutat posidonium el est nominati o iriure nec
328 | quidam soluta accusam? Felis pericula leo aeque turpis ne illum integer.
329 | Cetero nullam sonet zril vulputate. Cetero corrumpit quisque nam doming
330 | turpis mutat solet.
331 | <
332 |
333 | ------------------------------------------------------------------------------
334 | Weighted Choice ~
335 |
336 | The |fake#choice()| chooses a random element of the given list,
337 | which its choice is uniformly flat and not biased.
338 | If you need weighted choice, try a combination of |fake#get()| and |fake#betapdf()|.
339 |
340 | |fake#betapdf()| is useful as the second argument of |fake#get()|, and its shape
341 | chart ingicates its occurrence tendency or frequency.
342 |
343 | To tell the truth, the built-in "country" dictionary is ordered by population.
344 | If you need to frequently get "China" or "India" which has huge population,
345 |
346 | >
347 | call fake#define('country', 'fake#get(fake#load("country"),'
348 | \ . 'fake#betapdf(0.2, 4.0))')
349 |
350 |
351 | :echo fake#gen("country")
352 | China
353 | :echo fake#gen("country")
354 | India
355 | :echo fake#gen("country")
356 | China
357 | <
358 | On the other hand,
359 | >
360 | "" Get an age weighted by generation distribution
361 | call fake#define('age', 'float2nr(floor(110 * fake#betapdf(1.0, 1.45)))')
362 |
363 | "" Get a domain (its occurrence is ordered by number of websites)
364 | call fake#define('gtld', 'fake#get(fake#load("gtld"),'
365 | \ . 'fake#betapdf(0.2, 3.0))')
366 |
367 | call fake#define('email', 'tolower(substitute(printf("%s@%s.%s",'
368 | \ . 'fake#gen("name"),'
369 | \ . 'fake#gen("surname"),'
370 | \ . 'fake#gen("gtld")), "\\s", "-", "g"))')
371 | <
372 |
373 | The above definitions will be loaded when |g:fake_bootstrap| is not empty.
374 |
375 | ==============================================================================
376 | OTHERS *fake-others*
377 |
378 | Please note the following two points,
379 |
380 | * This plugin uses |sha256()| as pseudo-random generator, so that means its
381 | distribution uniformity maybe worse than the other generator like
382 | Mersenne Twister or XorShift.
383 |
384 | * The built-in dictionaries are subject to change in future for
385 | quality improvement without any announcement. If you have dissatisfaction
386 | with the contents, please add your original dictionary on the
387 | |g:fake_src_paths|.
388 |
389 |
390 | ------------------------------------------------------------------------------
391 | Data sources ~
392 |
393 | surname
394 | http://www.sofeminine.co.uk/
395 | male_name
396 | http://names.mongabay.com/male_names.htm
397 | female_name
398 | http://names.mongabay.com/female_names.htm
399 | word
400 | http://www.momswhothink.com/reading/list-of-nouns.html
401 | job
402 | http://kids.usa.gov/teens/jobs/a-z-list/
403 | country
404 | http://www.worldometers.info/world-population/population-by-country/
405 |
406 | ==============================================================================
407 | CHANGELOG *fake-changelog*
408 |
409 | 0.1.0 2016-1-30
410 | - Some Bugfixes
411 |
412 | 0.0.2 2016-1-26
413 | - Some Bugfixes
414 |
415 | 0.0.1 2016-1-16
416 | - Initial version.
417 |
418 | ==============================================================================
419 | vim:tw=78:ts=8:ft=help:norl:fen:fdl=0:fdm=marker:
420 |
--------------------------------------------------------------------------------
/plugin/fake.vim:
--------------------------------------------------------------------------------
1 | " ============================================================================
2 | " Fake - Random dummy/filler text generator
3 | " ============================================================================
4 |
5 | if exists('g:loaded_fake')
6 | finish
7 | endif
8 |
9 | let s:save_cpo = &cpo
10 | set cpo&vim
11 |
12 | augroup AutoCmdFake
13 | autocmd!
14 | augroup END
15 |
16 | autocmd! AutoCmdFake BufHidden * call fake#free_cache()
17 |
18 |
19 | function! s:FakeSubstitute(...) range
20 | let firstline = get(a:000, 0)
21 | let lastline = get(a:000, 1)
22 | let pat = 'FAKE__\([[:alnum:]\/_-]\{-}\)__'
23 | let sub = '\=fake#has_keyname(submatch(1))?fake#gen(submatch(1)):submatch(0)'
24 |
25 | silent execute printf(':%s,%ss/%s/%s/ge', firstline, lastline, pat, sub)
26 | endfunction
27 |
28 | command! -range=% FakeSubstitute :call FakeSubstitute(, )
29 |
30 |
31 | let &cpo = s:save_cpo
32 | let g:loaded_fake = 1
33 |
34 | unlet s:save_cpo
35 |
36 | " vim: ft=vim fenc=utf-8 ff=unix foldmethod=marker:
37 |
--------------------------------------------------------------------------------
/src/country:
--------------------------------------------------------------------------------
1 | China
2 | India
3 | U.S.A.
4 | Indonesia
5 | Brazil
6 | Pakistan
7 | Nigeria
8 | Bangladesh
9 | Russia
10 | Japan
11 | Mexico
12 | Philippines
13 | Ethiopia
14 | Vietnam
15 | Egypt
16 | Germany
17 | Iran
18 | Turkey
19 | Congo
20 | Thailand
21 | France
22 | U.K.
23 | Italy
24 | Burma
25 | South Africa
26 | Tanzania
27 | South Korea
28 | Colombia
29 | Spain
30 | Kenya
31 | Ukraine
32 | Argentina
33 | Algeria
34 | Uganda
35 | Sudan
36 | Poland
37 | Canada
38 | Iraq
39 | Morocco
40 | Afghanistan
41 | Venezuela
42 | Peru
43 | Malaysia
44 | Saudi Arabia
45 | Uzbekistan
46 | Nepal
47 | Mozambique
48 | Ghana
49 | North Korea
50 | Yemen
51 | Australia
52 | Madagascar
53 | Cameroon
54 | Angola
55 | Syria
56 | Romania
57 | Sri Lanka
58 | Côte d'Ivoire
59 | Niger
60 | Chile
61 | Burkina Faso
62 | Malawi
63 | Netherlands
64 | Kazakhstan
65 | Ecuador
66 | Guatemala
67 | Mali
68 | Cambodia
69 | Zambia
70 | Zimbabwe
71 | Senegal
72 | Chad
73 | Rwanda
74 | Guinea
75 | South Sudan
76 | Cuba
77 | Belgium
78 | Greece
79 | Tunisia
80 | Bolivia
81 | Somalia
82 | Czech Republic
83 | Portugal
84 | Benin
85 | Dominican Republic
86 | Burundi
87 | Haiti
88 | Hungary
89 | Sweden
90 | Azerbaijan
91 | Serbia
92 | United Arab Emirates
93 | Belarus
94 | Austria
95 | Tajikistan
96 | Honduras
97 | Switzerland
98 | Israel
99 | Jordan
100 | Papua New Guinea
101 | Hong Kong
102 | Bulgaria
103 | Togo
104 | Paraguay
105 | Laos
106 | Eritrea
107 | El Salvador
108 | Libya
109 | Sierra Leone
110 | Nicaragua
111 | Denmark
112 | Kyrgyzstan
113 | Singapore
114 | Slovakia
115 | Finland
116 | Turkmenistan
117 | Norway
118 | Lebanon
119 | Costa Rica
120 | Central African Republic
121 | Ireland
122 | Congo
123 | New Zealand
124 | State of Palestine
125 | Liberia
126 | Georgia
127 | Croatia
128 | Mauritania
129 | Oman
130 | Panama
131 | Bosnia and Herzegovina
132 | Puerto Rico
133 | Kuwait
134 | Moldova
135 | Uruguay
136 | Albania
137 | Lithuania
138 | Armenia
139 | Mongolia
140 | Jamaica
141 | Namibia
142 | Qatar
143 | Macedonia
144 | Lesotho
145 | Slovenia
146 | Latvia
147 | Botswana
148 | Gambia
149 | Guinea-Bissau
150 | Gabon
151 | Trinidad and Tobago
152 | Bahrain
153 | Estonia
154 | Swaziland
155 | Mauritius
156 | Cyprus
157 | Timor-Leste
158 | Fiji
159 | Djibouti
160 | Réunion
161 | Guyana
162 | Equatorial Guinea
163 | Bhutan
164 | Comoros
165 | Montenegro
166 | Western Sahara
167 | Macau
168 | Solomon Islands
169 | Suriname
170 | Luxembourg
171 | Cape Verde
172 | Guadeloupe
173 | Malta
174 | Brunei
175 | Martinique
176 | Bahamas
177 | Maldives
178 | Belize
179 | Iceland
180 | Barbados
181 | French Polynesia
182 | New Caledonia
183 | Vanuatu
184 | French Guiana
185 | Mayotte
186 | Sao Tome and Principe
187 | Samoa
188 | Saint Lucia
189 | Guam
190 | Channel Islands
191 | Curaçao
192 | Saint Vincent and the Grenadines
193 | United States Virgin Islands
194 | Grenada
195 | Tonga
196 | Kiribati
197 | Micronesia
198 | Aruba
199 | Seychelles
200 | Antigua and Barbuda
201 | Isle of Man
202 | Andorra
203 | Dominica
204 | Bermuda
205 | Cayman Islands
206 | Greenland
207 | American Samoa
208 | Saint Kitts and Nevis
209 | Northern Mariana Islands
210 | Marshall Islands
211 | Faeroe Islands
212 | Sint Maarten (Dutch part)
213 | Monaco
214 | Liechtenstein
215 | Turks and Caicos Islands
216 | San Marino
217 | Gibraltar
218 | British Virgin Islands
219 | Palau
220 | Cook Islands
221 | Caribbean Netherlands
222 | Anguilla
223 | Wallis and Futuna Islands
224 | Nauru
225 | Tuvalu
226 | Saint Pierre and Miquelon
227 | Montserrat
228 | Saint Helena
229 | Falkland Islands (Malvinas)
230 | Niue
231 | Tokelau
232 | Holy See
233 |
--------------------------------------------------------------------------------
/src/female_name:
--------------------------------------------------------------------------------
1 | Mary
2 | Patricia
3 | Linda
4 | Barbara
5 | Elizabeth
6 | Jennifer
7 | Maria
8 | Susan
9 | Margaret
10 | Dorothy
11 | Lisa
12 | Nancy
13 | Karen
14 | Betty
15 | Helen
16 | Sandra
17 | Donna
18 | Carol
19 | Ruth
20 | Sharon
21 | Michelle
22 | Laura
23 | Sarah
24 | Kimberly
25 | Deborah
26 | Jessica
27 | Shirley
28 | Cynthia
29 | Angela
30 | Melissa
31 | Brenda
32 | Amy
33 | Anna
34 | Rebecca
35 | Virginia
36 | Kathleen
37 | Pamela
38 | Martha
39 | Debra
40 | Amanda
41 | Stephanie
42 | Carolyn
43 | Christine
44 | Marie
45 | Janet
46 | Catherine
47 | Frances
48 | Ann
49 | Joyce
50 | Diane
51 | Alice
52 | Julie
53 | Heather
54 | Teresa
55 | Doris
56 | Gloria
57 | Evelyn
58 | Jean
59 | Cheryl
60 | Mildred
61 | Katherine
62 | Joan
63 | Ashley
64 | Judith
65 | Rose
66 | Janice
67 | Kelly
68 | Nicole
69 | Judy
70 | Christina
71 | Kathy
72 | Theresa
73 | Beverly
74 | Denise
75 | Tammy
76 | Irene
77 | Jane
78 | Lori
79 | Rachel
80 | Marilyn
81 | Andrea
82 | Kathryn
83 | Louise
84 | Sara
85 | Anne
86 | Jacqueline
87 | Wanda
88 | Bonnie
89 | Julia
90 | Ruby
91 | Lois
92 | Tina
93 | Phyllis
94 | Norma
95 | Paula
96 | Diana
97 | Annie
98 | Lillian
99 | Emily
100 | Robin
101 | Peggy
102 | Crystal
103 | Gladys
104 | Rita
105 | Dawn
106 | Connie
107 | Florence
108 | Tracy
109 | Edna
110 | Tiffany
111 | Carmen
112 | Rosa
113 | Cindy
114 | Grace
115 | Wendy
116 | Victoria
117 | Edith
118 | Kim
119 | Sherry
120 | Sylvia
121 | Josephine
122 | Thelma
123 | Shannon
124 | Sheila
125 | Ethel
126 | Ellen
127 | Elaine
128 | Marjorie
129 | Carrie
130 | Charlotte
131 | Monica
132 | Esther
133 | Pauline
134 | Emma
135 | Juanita
136 | Anita
137 | Rhonda
138 | Hazel
139 | Amber
140 | Eva
141 | Debbie
142 | April
143 | Leslie
144 | Clara
145 | Lucille
146 | Jamie
147 | Joanne
148 | Eleanor
149 | Valerie
150 | Danielle
151 | Megan
152 | Alicia
153 | Suzanne
154 | Michele
155 | Gail
156 | Bertha
157 | Darlene
158 | Veronica
159 | Jill
160 | Erin
161 | Geraldine
162 | Lauren
163 | Cathy
164 | Joann
165 | Lorraine
166 | Lynn
167 | Sally
168 | Regina
169 | Erica
170 | Beatrice
171 | Dolores
172 | Bernice
173 | Audrey
174 | Yvonne
175 | Annette
176 | June
177 | Samantha
178 | Marion
179 | Dana
180 | Stacy
181 | Ana
182 | Renee
183 | Ida
184 | Vivian
185 | Roberta
186 | Holly
187 | Brittany
188 | Melanie
189 | Loretta
190 | Yolanda
191 | Jeanette
192 | Laurie
193 | Katie
194 | Kristen
195 | Vanessa
196 | Alma
197 | Sue
198 | Elsie
199 | Beth
200 | Jeanne
201 | Vicki
202 | Carla
203 | Tara
204 | Rosemary
205 | Eileen
206 | Terri
207 | Gertrude
208 | Lucy
209 | Tonya
210 | Ella
211 | Stacey
212 | Wilma
213 | Gina
214 | Kristin
215 | Jessie
216 | Natalie
217 | Agnes
218 | Vera
219 | Willie
220 | Charlene
221 | Bessie
222 | Delores
223 | Melinda
224 | Pearl
225 | Arlene
226 | Maureen
227 | Colleen
228 | Allison
229 | Tamara
230 | Joy
231 | Georgia
232 | Constance
233 | Lillie
234 | Claudia
235 | Jackie
236 | Marcia
237 | Tanya
238 | Nellie
239 | Minnie
240 | Marlene
241 | Heidi
242 | Glenda
243 | Lydia
244 | Viola
245 | Courtney
246 | Marian
247 | Stella
248 | Caroline
249 | Dora
250 | Jo
251 | Vickie
252 | Mattie
253 | Terry
254 | Maxine
255 | Irma
256 | Mabel
257 | Marsha
258 | Myrtle
259 | Lena
260 | Christy
261 | Deanna
262 | Patsy
263 | Hilda
264 | Gwendolyn
265 | Jennie
266 | Nora
267 | Margie
268 | Nina
269 | Cassandra
270 | Leah
271 | Penny
272 | Kay
273 | Priscilla
274 | Naomi
275 | Carole
276 | Brandy
277 | Olga
278 | Billie
279 | Dianne
280 | Tracey
281 | Leona
282 | Jenny
283 | Felicia
284 | Sonia
285 | Miriam
286 | Velma
287 | Becky
288 | Bobbie
289 | Violet
290 | Kristina
291 | Toni
292 | Misty
293 | Mae
294 | Shelly
295 | Daisy
296 | Ramona
297 | Sherri
298 | Erika
299 | Katrina
300 | Claire
301 |
--------------------------------------------------------------------------------
/src/gtld:
--------------------------------------------------------------------------------
1 | com
2 | net
3 | de
4 | org
5 | uk
6 | cn
7 | info
8 | ru
9 | nl
10 | eu
11 | br
12 | fr
13 | au
14 | it
15 | biz
16 | tk
17 | ca
18 | pl
19 | co
20 | us
21 | es
22 | ch
23 | in
24 | be
25 | se
26 | jp
27 | at
28 | dk
29 | cz
30 | kr
31 | za
32 | xyz
33 | mobi
34 | me
35 |
--------------------------------------------------------------------------------
/src/job:
--------------------------------------------------------------------------------
1 | Zoo Keeper
2 | Bookkeeping Clerk
3 | Actor/Actress
4 | Fisherman
5 | Security/Gurdman
6 | Design/Print Specialist
7 | Mathematician
8 | Budget Analyst
9 | Fitness Instructor
10 | Social Worker
11 | Actuary
12 | Desktop Publisher
13 | Musician
14 | Camera Technician
15 | Flight Attendant
16 | Software Developer
17 | Animal Keeper
18 | Diplomat
19 | Nurse
20 | Food Scientist
21 | Car Mechanic
22 | Sports Coach
23 | Animal Trainer
24 | Doctor
25 | Pet Docter
26 | Forecaster
27 | Statistician
28 | Carpenter
29 | Animator
30 | Drafter
31 | Pharmacist
32 | Foreign Service Officer
33 | Student
34 | Announcer
35 | Chef/Cooks
36 | Economist
37 | Pipe/Valve Engineer
38 | Hardware Engineer
39 | Taxi/Bus Driver
40 | Childcare Worker
41 | Aquarium Career
42 | Electrical Engineer
43 | Plane Pilot
44 | Hotelman/Hotelwoman
45 | Teacher
46 | Archeologist
47 | City Planner
48 | Environmental Scientist
49 | Plant/Factory Engineer
50 | Housekeeper
51 | Telephone Operator
52 | Architect
53 | Civil Engineer
54 | Farmer
55 | Police Officer
56 | Human Resources Specialist
57 | Therapist/Healthcare
58 | Army Dentist
59 | Comic Creator
60 | Farmer/Agricultural
61 | Psycologist
62 | illustrator
63 | Train Crew
64 | Artist
65 | Accountant
66 | Computer Support Specialist
67 | Fashion Designer
68 | Real Estate Agent
69 | Judge/Court Clerk
70 | Travel Agent
71 | Astronomer
72 | Fashion Model
73 | Reporter
74 | Cost Estimator
75 | Lawer
76 | Waiter/Waitress
77 | Barber
78 | Film Director
79 | Dancer
80 | Researcher/Scientist
81 | Librarian
82 | Web Developer
83 | Bartender
84 | Financial Analyst
85 | Sailor
86 | Database Administrator
87 | Loan Officer
88 | Writer/Editor
89 | Bird Specialist
90 | Firefighter
91 | Secretary
92 | Dentist
93 |
--------------------------------------------------------------------------------
/src/male_name:
--------------------------------------------------------------------------------
1 | James
2 | John
3 | Robert
4 | Michael
5 | William
6 | David
7 | Richard
8 | Charles
9 | Joseph
10 | Thomas
11 | Christopher
12 | Daniel
13 | Paul
14 | Mark
15 | Donald
16 | George
17 | Kenneth
18 | Steven
19 | Edward
20 | Brian
21 | Ronald
22 | Anthony
23 | Kevin
24 | Jason
25 | Matthew
26 | Gary
27 | Timothy
28 | Jose
29 | Larry
30 | Jeffrey
31 | Frank
32 | Scott
33 | Eric
34 | Stephen
35 | Andrew
36 | Raymond
37 | Gregory
38 | Joshua
39 | Jerry
40 | Dennis
41 | Walter
42 | Patrick
43 | Peter
44 | Harold
45 | Douglas
46 | Henry
47 | Carl
48 | Arthur
49 | Ryan
50 | Roger
51 | Joe
52 | Juan
53 | Jack
54 | Albert
55 | Jonathan
56 | Justin
57 | Terry
58 | Gerald
59 | Keith
60 | Samuel
61 | Willie
62 | Ralph
63 | Lawrence
64 | Nicholas
65 | Roy
66 | Benjamin
67 | Bruce
68 | Brandon
69 | Adam
70 | Harry
71 | Fred
72 | Wayne
73 | Billy
74 | Steve
75 | Louis
76 | Jeremy
77 | Aaron
78 | Randy
79 | Howard
80 | Eugene
81 | Carlos
82 | Russell
83 | Bobby
84 | Victor
85 | Martin
86 | Ernest
87 | Phillip
88 | Todd
89 | Jesse
90 | Craig
91 | Alan
92 | Shawn
93 | Clarence
94 | Sean
95 | Philip
96 | Chris
97 | Johnny
98 | Earl
99 | Jimmy
100 | Antonio
101 | Danny
102 | Bryan
103 | Tony
104 | Luis
105 | Mike
106 | Stanley
107 | Leonard
108 | Nathan
109 | Dale
110 | Manuel
111 | Rodney
112 | Curtis
113 | Norman
114 | Allen
115 | Marvin
116 | Vincent
117 | Glenn
118 | Jeffery
119 | Travis
120 | Jeff
121 | Chad
122 | Jacob
123 | Lee
124 | Melvin
125 | Alfred
126 | Kyle
127 | Francis
128 | Bradley
129 | Jesus
130 | Herbert
131 | Frederick
132 | Ray
133 | Joel
134 | Edwin
135 | Don
136 | Eddie
137 | Ricky
138 | Troy
139 | Randall
140 | Barry
141 | Alexander
142 | Bernard
143 | Mario
144 | Leroy
145 | Francisco
146 | Marcus
147 | Micheal
148 | Theodore
149 | Clifford
150 | Miguel
151 | Oscar
152 | Jay
153 | Jim
154 | Tom
155 | Calvin
156 | Alex
157 | Jon
158 | Ronnie
159 | Bill
160 | Lloyd
161 | Tommy
162 | Leon
163 | Derek
164 | Warren
165 | Darrell
166 | Jerome
167 | Floyd
168 | Leo
169 | Alvin
170 | Tim
171 | Wesley
172 | Gordon
173 | Dean
174 | Greg
175 | Jorge
176 | Dustin
177 | Pedro
178 | Derrick
179 | Dan
180 | Lewis
181 | Zachary
182 | Corey
183 | Herman
184 | Maurice
185 | Vernon
186 | Roberto
187 | Clyde
188 | Glen
189 | Hector
190 | Shane
191 | Ricardo
192 | Sam
193 | Rick
194 | Lester
195 | Brent
196 | Ramon
197 | Charlie
198 | Tyler
199 | Gilbert
200 | Gene
201 | Marc
202 | Reginald
203 | Ruben
204 | Brett
205 | Angel
206 | Nathaniel
207 | Rafael
208 | Leslie
209 | Edgar
210 | Milton
211 | Raul
212 | Ben
213 | Chester
214 | Cecil
215 | Duane
216 | Franklin
217 | Andre
218 | Elmer
219 | Brad
220 | Gabriel
221 | Ron
222 | Mitchell
223 | Roland
224 | Arnold
225 | Harvey
226 | Jared
227 | Adrian
228 | Karl
229 | Cory
230 | Claude
231 | Erik
232 | Darryl
233 | Jamie
234 | Neil
235 | Jessie
236 | Christian
237 | Javier
238 | Fernando
239 | Clinton
240 | Ted
241 | Mathew
242 | Tyrone
243 | Darren
244 | Lonnie
245 | Lance
246 | Cody
247 | Julio
248 | Kelly
249 | Kurt
250 | Allan
251 | Nelson
252 | Guy
253 | Clayton
254 | Hugh
255 | Max
256 | Dwayne
257 | Dwight
258 | Armando
259 | Felix
260 | Jimmie
261 | Everett
262 | Jordan
263 | Ian
264 | Wallace
265 | Ken
266 | Bob
267 | Jaime
268 | Casey
269 | Alfredo
270 | Alberto
271 | Dave
272 | Ivan
273 | Johnnie
274 | Sidney
275 | Byron
276 | Julian
277 | Isaac
278 | Morris
279 | Clifton
280 | Willard
281 | Daryl
282 | Ross
283 | Virgil
284 | Andy
285 | Marshall
286 | Salvador
287 | Perry
288 | Kirk
289 | Sergio
290 | Marion
291 | Tracy
292 | Seth
293 | Kent
294 | Terrance
295 | Rene
296 | Eduardo
297 | Terrence
298 | Enrique
299 | Freddie
300 | Wade
301 |
--------------------------------------------------------------------------------
/src/nonsense:
--------------------------------------------------------------------------------
1 | a
2 | a
3 | ac
4 | ac
5 | accommodare
6 | accumsan
7 | accusam
8 | ad
9 | ad
10 | adhuc
11 | adipisci
12 | adipiscing
13 | admodum
14 | adversarium
15 | aenean
16 | aeque
17 | aeterno
18 | agam
19 | albucius
20 | alia
21 | alii
22 | aliquam
23 | aliquet
24 | aliquip
25 | altera
26 | amet
27 | an
28 | an
29 | ancillae
30 | animal
31 | ante
32 | antiopam
33 | apeirian
34 | appareat
35 | appellantur
36 | appetere
37 | arcu
38 | argumentum
39 | assentior
40 | assum
41 | at
42 | at
43 | atqui
44 | auctor
45 | audiam
46 | audire
47 | augue
48 | aut
49 | autem
50 | bibendum
51 | blandit
52 | bonorum
53 | brute
54 | causae
55 | cetero
56 | ceteros
57 | commodo
58 | comprehensam
59 | con
60 | conceptam
61 | congue
62 | consectetur
63 | constituto
64 | consul
65 | convenire
66 | corrumpit
67 | cotidieque
68 | cras
69 | cu
70 | cu
71 | cum
72 | curabitur
73 | cursus
74 | debet
75 | debitis
76 | definitiones
77 | delicata
78 | denique
79 | deserunt
80 | detracto
81 | diam
82 | dicam
83 | dicant
84 | dicat
85 | dico
86 | dicta
87 | dignissim
88 | dis
89 | disputando
90 | dissentiet
91 | doctus
92 | dolor
93 | dolore
94 | dolores
95 | doming
96 | donec
97 | dui
98 | duis
99 | duo
100 | ea
101 | ea
102 | eam
103 | efficiendi
104 | efficitur
105 | egestas
106 | eget
107 | ei
108 | ei
109 | eius
110 | el
111 | el
112 | electram
113 | eleifend
114 | eligendi
115 | elit
116 | eloquentiam
117 | enim
118 | eos
119 | erant
120 | erat
121 | eripuit
122 | eros
123 | error
124 | eruditi
125 | est
126 | et
127 | et
128 | etiam
129 | eu
130 | eu
131 | eum
132 | ex
133 | ex
134 | exerci
135 | explicari
136 | fabulas
137 | facilisi
138 | facilisis
139 | falli
140 | fames
141 | faucibus
142 | felis
143 | feugiat
144 | forensibus
145 | fuga
146 | fugit
147 | fuisset
148 | fusce
149 | graeco
150 | gravida
151 | gubergren
152 | habemus
153 | habeo
154 | habitant
155 | hac
156 | harum
157 | has
158 | hendrerit
159 | hinc
160 | his
161 | homero
162 | honestatis
163 | id
164 | id
165 | ignota
166 | iisque
167 | illum
168 | impedit
169 | imperdiet
170 | in
171 | in
172 | inani
173 | indoctum
174 | inimicus
175 | insolens
176 | integer
177 | integre
178 | intellegat
179 | interdum
180 | interesset
181 | ipsum
182 | iriure
183 | iudico
184 | iure
185 | ius
186 | iuvaret
187 | justo
188 | laboramus
189 | labores
190 | lacinia
191 | lacus
192 | laoreet
193 | latine
194 | laudem
195 | lectus
196 | leo
197 | libero
198 | ligula
199 | lobortis
200 | lorem
201 | lucilius
202 | maecenas
203 | magna
204 | malesuada
205 | malis
206 | massa
207 | mattis
208 | mauris
209 | maximus
210 | mazim
211 | mea
212 | mediocrem
213 | mei
214 | mel
215 | meliore
216 | mentitum
217 | metus
218 | mi
219 | mi
220 | minim
221 | minimum
222 | moderatius
223 | modo
224 | modus
225 | molestie
226 | mollis
227 | morbi
228 | movet
229 | mucius
230 | mus
231 | mutat
232 | nam
233 | natum
234 | ne
235 | ne
236 | nec
237 | nemo
238 | nemore
239 | neque
240 | netus
241 | nibh
242 | nisi
243 | nisl
244 | no
245 | no
246 | noluisse
247 | nominati
248 | non
249 | noster
250 | nostrud
251 | nulla
252 | nullam
253 | numquam
254 | nunc
255 | nusquam
256 | o
257 | o
258 | oblique
259 | ocurreret
260 | odio
261 | odit
262 | offendit
263 | officiis
264 | omittam
265 | omittantur
266 | omnes
267 | omnis
268 | omnium
269 | on
270 | on
271 | oportere
272 | orci
273 | ornare
274 | ornatus
275 | patrioque
276 | pede
277 | per
278 | percipit
279 | perfecto
280 | pericula
281 | perpetua
282 | persecuti
283 | persius
284 | pertinax
285 | phaedrum
286 | pharetra
287 | philosophia
288 | placerat
289 | platonem
290 | ponderum
291 | populo
292 | porta
293 | posidonium
294 | possim
295 | postea
296 | posuere
297 | praesent
298 | pretium
299 | pri
300 | prima
301 | primis
302 | pro
303 | probatus
304 | probo
305 | prompta
306 | propriae
307 | purto
308 | purus
309 | putant
310 | putent
311 | quaeque
312 | quaestio
313 | quam
314 | quando
315 | qui
316 | quia
317 | quidam
318 | quis
319 | quisque
320 | quo
321 | quod
322 | quodsi
323 | quos
324 | rationibus
325 | rebum
326 | recteque
327 | recusabo
328 | repudiandae
329 | repudiare
330 | rhoncus
331 | ridens
332 | risus
333 | rutrum
334 | sadipscing
335 | sagittis
336 | saperet
337 | sapien
338 | scelerisque
339 | scripta
340 | scriptorem
341 | sea
342 | sed
343 | sem
344 | semper
345 | senectus
346 | similique
347 | sint
348 | sit
349 | sodales
350 | soleat
351 | solet
352 | soluta
353 | sonet
354 | suas
355 | summo
356 | suscipit
357 | tale
358 | tamquam
359 | te
360 | te
361 | tellus
362 | tempor
363 | timeam
364 | tincidunt
365 | torquatos
366 | tota
367 | tristique
368 | turpis
369 | ultrices
370 | urbanitas
371 | urna
372 | usu
373 | ut
374 | ut
375 | utinam
376 | utroque
377 | varius
378 | vehicula
379 | vel
380 | velit
381 | veniam
382 | veri
383 | vero
384 | verterem
385 | viderer
386 | vidisse
387 | vim
388 | viris
389 | vis
390 | vitae
391 | vituperata
392 | vivamus
393 | vivendo
394 | viverra
395 | vix
396 | volumus
397 | voluptatibus
398 | vulputate
399 | wisi
400 | zril
401 |
--------------------------------------------------------------------------------
/src/surname:
--------------------------------------------------------------------------------
1 | Smith
2 | Jones
3 | Taylor
4 | Williams
5 | Brown
6 | Davies
7 | Evans
8 | Wilson
9 | Thomas
10 | Roberts
11 | Johnson
12 | Lewis
13 | Walker
14 | Robinson
15 | Wood
16 | Thompson
17 | White
18 | Watson
19 | Jackson
20 | Wright
21 | Green
22 | Harris
23 | Cooper
24 | King
25 | Lee
26 | Martin
27 | Clarke
28 | James
29 | Morgan
30 | Hughes
31 | Edwards
32 | Hill
33 | Moore
34 | Clark
35 | Harrison
36 | Scott
37 | Young
38 | Morris
39 | Hall
40 | Ward
41 | Turner
42 | Carter
43 | Phillips
44 | Mitchell
45 | Patel
46 | Adams
47 | Campbell
48 | Anderson
49 | Allen
50 | Cook
51 | Bailey
52 | Parker
53 | Miller
54 | Davis
55 | Murphy
56 | Price
57 | Bell
58 | Baker
59 | Griffiths
60 | Kelly
61 | Simpson
62 | Marshall
63 | Collins
64 | Bennett
65 | Cox
66 | Richardson
67 | Fox
68 | Gray
69 | Rose
70 | Chapman
71 | Hunt
72 | Robertson
73 | Shaw
74 | Reynolds
75 | Lloyd
76 | Ellis
77 | Richards
78 | Russell
79 | Wilkinson
80 | Khan
81 | Graham
82 | Stewart
83 | Reid
84 | Murray
85 | Powell
86 | Palmer
87 | Holmes
88 | Rogers
89 | Stevens
90 | Walsh
91 | Hunter
92 | Thomson
93 | Matthews
94 | Ross
95 | Owen
96 | Mason
97 | Knight
98 | Kennedy
99 | Butler
100 | Saunders
101 | Cole
102 | Pearce
103 | Dean
104 | Foster
105 | Harvey
106 | Hudson
107 | Gibson
108 | Mills
109 | Berry
110 | Barnes
111 | Pearson
112 | Kaur
113 | Booth
114 | Dixon
115 | Grant
116 | Gordon
117 | Lane
118 | Harper
119 | Ali
120 | Hart
121 | Mcdonald
122 | Brooks
123 | Ryan
124 | Carr
125 | Macdonald
126 | Hamilton
127 | Johnston
128 | West
129 | Gill
130 | Dawson
131 | Armstrong
132 | Gardner
133 | Stone
134 | Andrews
135 | Williamson
136 | Barker
137 | George
138 | Fisher
139 | Cunningham
140 | Watts
141 | Webb
142 | Lawrence
143 | Bradley
144 | Jenkins
145 | Wells
146 | Chambers
147 | Spencer
148 | Poole
149 | Atkinson
150 | Lawson
151 | Day
152 | Woods
153 | Rees
154 | Fraser
155 | Black
156 | Fletcher
157 | Hussain
158 | Willis
159 | Marsh
160 | Ahmed
161 | Doyle
162 | Lowe
163 | Burns
164 | Hopkins
165 | Nicholson
166 | Parry
167 | Newman
168 | Jordan
169 | Henderson
170 | Howard
171 | Barrett
172 | Burton
173 | Riley
174 | Porter
175 | Byrne
176 | Houghton
177 | John
178 | Perry
179 | Baxter
180 | Ball
181 | Mccarthy
182 | Elliott
183 | Burke
184 | Gallagher
185 | Duncan
186 | Cooke
187 | Austin
188 | Read
189 | Wallace
190 | Hawkins
191 | Hayes
192 | Francis
193 | Sutton
194 | Davidson
195 | Sharp
196 | Holland
197 | Moss
198 | May
199 | Bates
200 | Morrison
201 | Bob
202 | Oliver
203 | Kemp
204 | Page
205 | Arnold
206 | Shah
207 | Stevenson
208 | Ford
209 | Potter
210 | Flynn
211 | Warren
212 | Kent
213 | Alexander
214 | Field
215 | Freeman
216 | Begum
217 | Rhodes
218 | O neill
219 | Middleton
220 | Payne
221 | Stephenson
222 | Pritchard
223 | Gregory
224 | Bond
225 | Webster
226 | Dunn
227 | Donnelly
228 | Lucas
229 | Long
230 | Jarvis
231 | Cross
232 | Stephens
233 | Reed
234 | Coleman
235 | Nicholls
236 | Bull
237 | Bartlett
238 | O brien
239 | Curtis
240 | Bird
241 | Patterson
242 | Tucker
243 | Bryant
244 | Lynch
245 | Mackenzie
246 | Ferguson
247 | Cameron
248 | Lopez
249 | Haynes
250 | Bolton
251 | Hardy
252 | Heath
253 | Davey
254 | Rice
255 | Jacobs
256 | Parsons
257 | Ashton
258 | Robson
259 | French
260 | Farrell
261 | Walton
262 | Gilbert
263 | Mcintyre
264 | Newton
265 | Norman
266 | Higgins
267 | Hodgson
268 | Sutherland
269 | Kay
270 | Bishop
271 | Burgess
272 | Simmons
273 | Hutchinson
274 | Moran
275 | Frost
276 | Sharma
277 | Slater
278 | Greenwood
279 | Kirk
280 | Fernandez
281 | Garcia
282 | Atkins
283 | Daniel
284 | Beattie
285 | Maxwell
286 | Todd
287 | Charles
288 | Paul
289 | Crawford
290 | O connor
291 | Park
292 | Forrest
293 | Love
294 | Rowland
295 | Connolly
296 | Sheppard
297 | Harding
298 | Banks
299 | Rowe
300 |
--------------------------------------------------------------------------------
/src/word:
--------------------------------------------------------------------------------
1 | able
2 | account
3 | achieve
4 | achiever
5 | acoustics
6 | act
7 | action
8 | activity
9 | actor
10 | addition
11 | adjustment
12 | advertisement
13 | advice
14 | aftermath
15 | afternoon
16 | afterthought
17 | agreement
18 | air
19 | airplane
20 | airport
21 | alarm
22 | alley
23 | amount
24 | amusement
25 | anger
26 | angle
27 | animal
28 | answer
29 | ant
30 | ants
31 | apparatus
32 | apparel
33 | apple
34 | apples
35 | appliance
36 | approval
37 | arch
38 | argument
39 | arithmetic
40 | arm
41 | army
42 | art
43 | attack
44 | attempt
45 | attention
46 | attraction
47 | aunt
48 | babies
49 | baby
50 | back
51 | badge
52 | bag
53 | bait
54 | balance
55 | ball
56 | balloon
57 | balls
58 | banana
59 | band
60 | base
61 | baseball
62 | basin
63 | basket
64 | basketball
65 | bat
66 | bath
67 | battle
68 | bead
69 | beam
70 | bean
71 | bear
72 | bears
73 | beast
74 | bed
75 | bedroom
76 | beds
77 | bee
78 | beef
79 | beetle
80 | beggar
81 | beginner
82 | behavior
83 | belief
84 | believe
85 | bell
86 | bells
87 | berry
88 | bike
89 | bikes
90 | bird
91 | birds
92 | birth
93 | birthday
94 | bit
95 | bite
96 | blade
97 | blood
98 | blow
99 | board
100 | boat
101 | boats
102 | body
103 | bomb
104 | bone
105 | book
106 | books
107 | boot
108 | border
109 | bottle
110 | boundary
111 | box
112 | boy
113 | boys
114 | brain
115 | brake
116 | branch
117 | brass
118 | bread
119 | breakfast
120 | breath
121 | brick
122 | bridge
123 | brother
124 | brothers
125 | brush
126 | bubble
127 | bucket
128 | building
129 | bulb
130 | bun
131 | burn
132 | burst
133 | bushes
134 | business
135 | butter
136 | button
137 | cabbage
138 | cable
139 | cactus
140 | cake
141 | cakes
142 | calculator
143 | calendar
144 | camera
145 | camp
146 | can
147 | cannon
148 | canvas
149 | cap
150 | caption
151 | car
152 | card
153 | care
154 | carpenter
155 | carriage
156 | cars
157 | cart
158 | cast
159 | cat
160 | cats
161 | cattle
162 | cause
163 | cave
164 | celery
165 | cellar
166 | cemetery
167 | cent
168 | chain
169 | chair
170 | chairs
171 | chalk
172 | chance
173 | change
174 | channel
175 | cheese
176 | cherries
177 | cherry
178 | chess
179 | chicken
180 | chickens
181 | children
182 | chin
183 | church
184 | circle
185 | clam
186 | class
187 | clock
188 | clocks
189 | cloth
190 | cloud
191 | clouds
192 | clover
193 | club
194 | coach
195 | coal
196 | coast
197 | coat
198 | cobweb
199 | coil
200 | collar
201 | color
202 | comb
203 | comfort
204 | committee
205 | company
206 | comparison
207 | competition
208 | condition
209 | connection
210 | control
211 | cook
212 | copper
213 | copy
214 | cord
215 | cork
216 | corn
217 | cough
218 | country
219 | cover
220 | cow
221 | cows
222 | crack
223 | cracker
224 | crate
225 | crayon
226 | cream
227 | creator
228 | creature
229 | credit
230 | crib
231 | crime
232 | crook
233 | crow
234 | crowd
235 | crown
236 | crush
237 | cry
238 | cub
239 | cup
240 | current
241 | curtain
242 | curve
243 | cushion
244 | dad
245 | daughter
246 | day
247 | death
248 | debt
249 | decision
250 | deer
251 | degree
252 | design
253 | desire
254 | desk
255 | destruction
256 | detail
257 | development
258 | digestion
259 | dime
260 | dinner
261 | dinosaurs
262 | direction
263 | dirt
264 | discovery
265 | discussion
266 | disease
267 | disgust
268 | distance
269 | distribution
270 | division
271 | dock
272 | doctor
273 | dog
274 | dogs
275 | doll
276 | dolls
277 | donkey
278 | door
279 | downtown
280 | drain
281 | drawer
282 | dress
283 | drink
284 | driving
285 | drop
286 | drug
287 | drum
288 | duck
289 | ducks
290 | dust
291 | dust
292 | ear
293 | earth
294 | earthquake
295 | edge
296 | education
297 | effect
298 | egg
299 | eggnog
300 | eggs
301 | elbow
302 | end
303 | engine
304 | error
305 | event
306 | example
307 | exchange
308 | existence
309 | expansion
310 | experience
311 | expert
312 | eye
313 | eyes
314 | face
315 | fact
316 | fairies
317 | fall
318 | family
319 | fan
320 | fang
321 | farm
322 | farmer
323 | father
324 | faucet
325 | fear
326 | feast
327 | feather
328 | feeling
329 | feet
330 | fiction
331 | field
332 | fifth
333 | fight
334 | finger
335 | fire
336 | fireman
337 | fish
338 | flag
339 | flame
340 | flavor
341 | flesh
342 | flight
343 | flock
344 | floor
345 | flower
346 | flowers
347 | fly
348 | fog
349 | fold
350 | food
351 | foot
352 | force
353 | fork
354 | form
355 | fowl
356 | frame
357 | friction
358 | friend
359 | friends
360 | frog
361 | frogs
362 | front
363 | fruit
364 | fuel
365 | furniture
366 | furniture
367 | galley
368 | game
369 | garden
370 | gate
371 | geese
372 | ghost
373 | giants
374 | giraffe
375 | girl
376 | girls
377 | glass
378 | glove
379 | glue
380 | goat
381 | gold
382 | goldfish
383 | good-bye
384 | goose
385 | government
386 | governor
387 | grade
388 | grain
389 | grandfather
390 | grandmother
391 | grape
392 | grass
393 | grip
394 | ground
395 | group
396 | growth
397 | guide
398 | guitar
399 | gun
400 | gun
401 | hair
402 | haircut
403 | hall
404 | hammer
405 | hand
406 | hands
407 | harbor
408 | harmony
409 | hat
410 | hate
411 | head
412 | health
413 | hearing
414 | heart
415 | heat
416 | help
417 | hen
418 | hill
419 | history
420 | hobbies
421 | hole
422 | holiday
423 | home
424 | honey
425 | hook
426 | hope
427 | horn
428 | horse
429 | horses
430 | hose
431 | hospital
432 | hot
433 | hour
434 | house
435 | houses
436 | humor
437 | hydrant
438 | hydrant
439 | ice
440 | icicle
441 | idea
442 | impulse
443 | income
444 | increase
445 | industry
446 | ink
447 | insect
448 | instrument
449 | insurance
450 | interest
451 | invention
452 | iron
453 | island
454 | island
455 | jail
456 | jam
457 | jar
458 | jeans
459 | jelly
460 | jellyfish
461 | jewel
462 | join
463 | joke
464 | journey
465 | judge
466 | juice
467 | jump
468 | kettle
469 | key
470 | kick
471 | kiss
472 | kite
473 | kitten
474 | kittens
475 | kitty
476 | knee
477 | knife
478 | knot
479 | knowledge
480 | laborer
481 | lace
482 | ladybug
483 | lake
484 | lamp
485 | land
486 | language
487 | laugh
488 | lawyer
489 | lead
490 | leaf
491 | learning
492 | leather
493 | leg
494 | legs
495 | letter
496 | letters
497 | lettuce
498 | level
499 | library
500 | lift
501 | light
502 | limit
503 | line
504 | linen
505 | lip
506 | liquid
507 | list
508 | lizards
509 | loaf
510 | lock
511 | locket
512 | look
513 | loss
514 | love
515 | low
516 | lumber
517 | lunch
518 | lunchroom
519 | lunchroom
520 | machine
521 | magic
522 | maid
523 | mailbox
524 | man
525 | manager
526 | map
527 | marble
528 | mark
529 | market
530 | mask
531 | mass
532 | match
533 | meal
534 | measure
535 | meat
536 | meeting
537 | memory
538 | men
539 | metal
540 | mice
541 | middle
542 | milk
543 | mind
544 | mine
545 | minister
546 | mint
547 | minute
548 | mist
549 | mitten
550 | mom
551 | money
552 | monkey
553 | month
554 | moon
555 | morning
556 | mother
557 | motion
558 | mountain
559 | mouth
560 | move
561 | muscle
562 | music
563 | music
564 | nail
565 | name
566 | nation
567 | neck
568 | need
569 | needle
570 | nerve
571 | nest
572 | net
573 | news
574 | night
575 | noise
576 | north
577 | nose
578 | note
579 | notebook
580 | number
581 | nut
582 | oatmeal
583 | observation
584 | ocean
585 | offer
586 | office
587 | oil
588 | operation
589 | opinion
590 | orange
591 | oranges
592 | order
593 | organization
594 | ornament
595 | oven
596 | owl
597 | owner
598 | page
599 | pail
600 | pain
601 | paint
602 | pan
603 | pancake
604 | paper
605 | parcel
606 | parent
607 | park
608 | part
609 | partner
610 | party
611 | passenger
612 | paste
613 | patch
614 | payment
615 | peace
616 | pear
617 | pen
618 | pencil
619 | person
620 | pest
621 | pet
622 | pets
623 | pickle
624 | picture
625 | pie
626 | pies
627 | pig
628 | pigs
629 | pin
630 | pipe
631 | pizzas
632 | place
633 | plane
634 | planes
635 | plant
636 | plantation
637 | plants
638 | plastic
639 | plate
640 | play
641 | playground
642 | pleasure
643 | plot
644 | plough
645 | pocket
646 | point
647 | poison
648 | police
649 | polish
650 | pollution
651 | popcorn
652 | porter
653 | position
654 | pot
655 | potato
656 | powder
657 | power
658 | price
659 | print
660 | prison
661 | process
662 | produce
663 | profit
664 | property
665 | prose
666 | protest
667 | pull
668 | pump
669 | punishment
670 | purpose
671 | push
672 | quarter
673 | quartz
674 | queen
675 | question
676 | quicksand
677 | quiet
678 | quill
679 | quilt
680 | quince
681 | quiver
682 | rabbit
683 | rabbits
684 | rail
685 | railway
686 | rain
687 | rainstorm
688 | rake
689 | range
690 | rat
691 | rate
692 | ray
693 | reaction
694 | reading
695 | reason
696 | receipt
697 | recess
698 | record
699 | regret
700 | relation
701 | religion
702 | representative
703 | request
704 | respect
705 | rest
706 | reward
707 | rhythm
708 | rice
709 | riddle
710 | rifle
711 | ring
712 | rings
713 | river
714 | road
715 | robin
716 | rock
717 | rod
718 | roll
719 | roof
720 | room
721 | root
722 | rose
723 | route
724 | rub
725 | rule
726 | run
727 | sack
728 | sail
729 | salt
730 | sand
731 | scale
732 | scarecrow
733 | scarf
734 | scene
735 | scent
736 | school
737 | science
738 | scissors
739 | screw
740 | sea
741 | seashore
742 | seat
743 | secretary
744 | seed
745 | selection
746 | self
747 | sense
748 | servant
749 | shade
750 | shake
751 | shame
752 | shape
753 | sheep
754 | sheet
755 | shelf
756 | ship
757 | shirt
758 | shock
759 | shoe
760 | shoes
761 | shop
762 | show
763 | side
764 | sidewalk
765 | sign
766 | silk
767 | silver
768 | sink
769 | sister
770 | sisters
771 | size
772 | skate
773 | skin
774 | skirt
775 | sky
776 | slave
777 | sleep
778 | sleet
779 | slip
780 | slope
781 | smash
782 | smell
783 | smile
784 | smoke
785 | snail
786 | snails
787 | snake
788 | snakes
789 | sneeze
790 | snow
791 | soap
792 | society
793 | sock
794 | soda
795 | sofa
796 | son
797 | song
798 | songs
799 | sort
800 | sound
801 | soup
802 | space
803 | spade
804 | spark
805 | spiders
806 | sponge
807 | spoon
808 | spot
809 | spring
810 | spy
811 | square
812 | squirrel
813 | stage
814 | stamp
815 | star
816 | start
817 | statement
818 | station
819 | steam
820 | steel
821 | stem
822 | step
823 | stew
824 | stick
825 | sticks
826 | stitch
827 | stocking
828 | stomach
829 | stone
830 | stop
831 | store
832 | story
833 | stove
834 | stranger
835 | straw
836 | stream
837 | street
838 | stretch
839 | string
840 | structure
841 | substance
842 | sugar
843 | suggestion
844 | suit
845 | summer
846 | sun
847 | support
848 | surprise
849 | sweater
850 | swim
851 | swing
852 | system
853 | table
854 | tail
855 | talk
856 | tank
857 | taste
858 | tax
859 | teaching
860 | team
861 | teeth
862 | temper
863 | tendency
864 | tent
865 | territory
866 | test
867 | texture
868 | theory
869 | thing
870 | things
871 | thought
872 | thread
873 | thrill
874 | throat
875 | throne
876 | thumb
877 | thunder
878 | ticket
879 | tiger
880 | time
881 | tin
882 | title
883 | toad
884 | toe
885 | toes
886 | tomatoes
887 | tongue
888 | tooth
889 | toothbrush
890 | toothpaste
891 | top
892 | touch
893 | town
894 | toy
895 | toys
896 | trade
897 | trail
898 | train
899 | trains
900 | tramp
901 | transport
902 | tray
903 | treatment
904 | tree
905 | trees
906 | trick
907 | trip
908 | trouble
909 | trousers
910 | truck
911 | trucks
912 | tub
913 | turkey
914 | turn
915 | twig
916 | twist
917 | umbrella
918 | uncle
919 | underwear
920 | unit
921 | use
922 | vacation
923 | value
924 | van
925 | vase
926 | vegetable
927 | veil
928 | vein
929 | verse
930 | vessel
931 | vest
932 | view
933 | visitor
934 | voice
935 | volcano
936 | volleyball
937 | voyage
938 | voyage
939 | walk
940 | wall
941 | war
942 | wash
943 | waste
944 | watch
945 | water
946 | wave
947 | waves
948 | wax
949 | way
950 | wealth
951 | weather
952 | week
953 | weight
954 | wheel
955 | whip
956 | whistle
957 | wilderness
958 | wind
959 | window
960 | wine
961 | wing
962 | winter
963 | wire
964 | wish
965 | woman
966 | women
967 | wood
968 | wool
969 | word
970 | work
971 | worm
972 | wound
973 | wren
974 | wrench
975 | wrist
976 | writer
977 | writing
978 | yard
979 | year
980 | zebra
981 |
--------------------------------------------------------------------------------