mirror of
https://github.com/veekun/pokedex.git
synced 2024-08-20 18:16:34 +00:00
Add identifier_from_name() function.
Adapted from name2ident() in scripts/migration-i18n.py.
This commit is contained in:
parent
2e7fdf7d10
commit
dbb293e727
1 changed files with 33 additions and 0 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
# encoding: utf-8
|
||||||
|
import re
|
||||||
|
|
||||||
from sqlalchemy import MetaData, Table, engine_from_config, orm
|
from sqlalchemy import MetaData, Table, engine_from_config, orm
|
||||||
|
|
||||||
from ..defaults import get_default_db_uri
|
from ..defaults import get_default_db_uri
|
||||||
|
@ -45,3 +48,33 @@ def connect(uri=None, session_args={}, engine_args={}, engine_prefix=''):
|
||||||
session = MultilangScopedSession(sm)
|
session = MultilangScopedSession(sm)
|
||||||
|
|
||||||
return session
|
return session
|
||||||
|
|
||||||
|
def identifier_from_name(name):
|
||||||
|
"""Make a string safe to use as an identifier.
|
||||||
|
|
||||||
|
Valid characters are lowercase alphanumerics and "-". This function may
|
||||||
|
raise ValueError if it can't come up with a suitable identifier.
|
||||||
|
|
||||||
|
This function is useful for scripts which add things with names.
|
||||||
|
"""
|
||||||
|
if isinstance(name, str):
|
||||||
|
identifier = name.decode('utf-8')
|
||||||
|
else:
|
||||||
|
identifier = name
|
||||||
|
identifier = identifier.lower()
|
||||||
|
identifier = identifier.replace(u'+', u' plus ')
|
||||||
|
identifier = re.sub(u'[ _–]+', u'-', identifier)
|
||||||
|
identifier = re.sub(u"['./;’(),:]", u'', identifier)
|
||||||
|
identifier = identifier.replace(u'é', u'e')
|
||||||
|
identifier = identifier.replace(u'♀', u'-f')
|
||||||
|
identifier = identifier.replace(u'♂', u'-m')
|
||||||
|
if identifier in (u'???', u'????'):
|
||||||
|
identifier = u'unknown'
|
||||||
|
elif identifier == u'!':
|
||||||
|
identifier = u'exclamation'
|
||||||
|
elif identifier == u'?':
|
||||||
|
identifier = u'question'
|
||||||
|
|
||||||
|
if not identifier.replace(u"-", u"").isalnum():
|
||||||
|
raise ValueError(identifier)
|
||||||
|
return identifier
|
||||||
|
|
Loading…
Reference in a new issue