ebfb81f03f49feb7788a3894d3191ac3d623e749
[ndcode_site.git] / _placeholder / data.mjs
1 #!/usr/bin/env node
2
3 // see https://www.census.gov/topics/population/genealogy/data/1990_census/1990_census_namefiles.html
4
5 import assert from 'assert'
6 import fsPromises from 'fs/promises'
7 import Domain from 'domaingistry'
8
9 let lines = async file => {
10   let result = (await fsPromises.readFile(file)).toString('utf-8').split('\n')
11   if (result[result.length -1].length === 0)
12     result = result.slice(0, -1)
13   return result
14 }
15
16 let capitalize = line => {
17   let i = line.indexOf(' ')
18   assert(i >= 1)
19   let result = line.slice(0, 1).toUpperCase() + line.slice(1, i).toLowerCase()
20   if (result.slice(0, 2) === 'Mc')
21     result =
22       result.slice(0, 2) + result.slice(2, 3).toUpperCase() + result.slice(3)
23   return result
24 }
25
26 let family_names =
27   (await lines('dist.all.last')).slice(0, 500).map(capitalize)
28 family_names.sort()
29
30 let given_names =
31   (
32     (await lines('dist.male.first')).slice(0, 250)
33   ).concat(
34     (await lines('dist.female.first')).slice(0, 250)
35   ).map(capitalize)
36 given_names.sort()
37
38 let separators = ['', '.', '-', '_']
39 separators.sort()
40
41 let domain_names =
42   (
43     (new Domain('email', 'common')).generate()
44   ).concat(
45     (new Domain('email', 'suffix')).generate()
46   ).concat(
47     (new Domain('mail', 'common')).generate()
48   ).concat(
49     (new Domain('mail', 'prefix')).generate()
50   ).concat(
51     (new Domain('mail', 'suffix')).generate()
52   )
53 domain_names.sort()
54
55 let names = {family_names, given_names, separators, domain_names}
56 process.stdout.write(JSON.stringify(names, null, 2) + '\n')