├── .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 | 61 | ``` 62 | 63 | Type next, `:%s/dummy/\=fake#gen("male_name")/g` 64 | 65 | ```xml 66 | 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 | ![fakesnip](https://cloud.githubusercontent.com/assets/534457/13453296/34c4895a-e092-11e5-83d3-d81afee83c37.gif) 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 | ![betapdf(0.2, 4.0)](https://qiita-image-store.s3.amazonaws.com/0/67544/911d3e93-b76f-cf41-de7b-e55dac920ffe.png "The chart of betapdf(0.2, 4.0)") 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 | --------------------------------------------------------------------------------