mirror of
https://github.com/Tiendil/pynames.git
synced 2026-03-11 00:52:34 +01:00
full russian name forms
This commit is contained in:
parent
97a05796b0
commit
446c985dbc
10 changed files with 3195 additions and 2707 deletions
88
helpers/merge_names.py
Normal file
88
helpers/merge_names.py
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
# coding: utf-8
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
|
||||
FIXTURES = ['mongolian/fixtures/mongolian_names_list.json',
|
||||
'russian/fixtures/pagan_names_list.json',
|
||||
'korean/fixtures/korean_names_list.json',
|
||||
'scandinavian/fixtures/scandinavian_names_list.json']
|
||||
|
||||
|
||||
FROM = '/home/tie/repos/other/pynames/pynames/'
|
||||
TO = '/home/tie/repos/mine/pynames/pynames'
|
||||
|
||||
def names_equal(name, original_name):
|
||||
|
||||
for gender in name['genders'].iterkeys():
|
||||
if gender not in original_name['genders']:
|
||||
continue
|
||||
|
||||
languages = name['genders'][gender]
|
||||
original_languages = original_name['genders'][gender]
|
||||
|
||||
|
||||
for language in languages.iterkeys():
|
||||
if language not in original_languages:
|
||||
continue
|
||||
|
||||
text = languages[language] if isinstance(languages[language], basestring) else languages[language][0]
|
||||
original_text = original_languages[language] if isinstance(original_languages[language], basestring) else original_languages[language][0]
|
||||
|
||||
if text == original_text:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def merge_names(name, original_name):
|
||||
for gender, languages in name['genders'].iteritems():
|
||||
for language, data in languages.iteritems():
|
||||
original_name['genders'][gender][language] = data
|
||||
|
||||
|
||||
def merge(data_from, data_to):
|
||||
|
||||
for original_name in data_to:
|
||||
for name in data_from:
|
||||
if names_equal(name, original_name):
|
||||
merge_names(name, original_name)
|
||||
|
||||
|
||||
def pretty_dump(data):
|
||||
content = []
|
||||
content.append(u'{')
|
||||
|
||||
for key, value in data.iteritems():
|
||||
if key != 'names':
|
||||
content.append(u' "%s": %s,' % (key, json.dumps(value, ensure_ascii=False)))
|
||||
|
||||
content.append(u' "names": [')
|
||||
|
||||
names_number = len(data['names'])
|
||||
|
||||
for i, name in enumerate(data['names']):
|
||||
content.append(' ' + json.dumps(name, ensure_ascii=False) + (u',' if i + 1 < names_number else u'') )
|
||||
|
||||
content.append(u' ]')
|
||||
content.append(u'}')
|
||||
|
||||
return u'\n'.join(content)
|
||||
|
||||
|
||||
for fixture in FIXTURES:
|
||||
|
||||
print 'process: ', fixture
|
||||
|
||||
with open(os.path.join(FROM, fixture)) as f:
|
||||
data_from = json.loads(f.read().decode('utf-8'))
|
||||
|
||||
with open(os.path.join(TO, fixture)) as f:
|
||||
data_to = json.loads(f.read().decode('utf-8'))
|
||||
|
||||
merge(data_from['names'], data_to['names'])
|
||||
|
||||
with open(os.path.join(TO, fixture), 'w') as f:
|
||||
f.write(pretty_dump(data_to).encode('utf-8'))
|
||||
# f.write(json.dumps(data_to, indent=2).encode('utf-8'))
|
||||
Loading…
Add table
Add a link
Reference in a new issue