You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.6 KiB
45 lines
1.6 KiB
4 years ago
|
__pragma__ ('noanno')
|
||
|
__pragma__ ('js', """
|
||
|
var fs = require('fs');
|
||
|
var conversion_csv = fs.readFileSync('build/conversions.csv', 'utf8');
|
||
|
""", None)
|
||
|
# above is magically read (browserify plugin) at compile time
|
||
|
# browserify is run from root, so we need build/ in path for this to work
|
||
|
|
||
|
# convert to useful structure
|
||
|
structure_conversions = None
|
||
|
|
||
|
def build_structure_conversions():
|
||
|
global structure_conversions
|
||
|
structure_conversions = []
|
||
|
|
||
|
structure_conversions_raw = [line.split(",") for line in conversion_csv.split("\n")]
|
||
|
for line in structure_conversions_raw:
|
||
|
if min(len(line[0]), len(line[1])) == 0:
|
||
|
continue
|
||
|
|
||
|
# header
|
||
|
if line[1] == "struktura":
|
||
|
continue
|
||
|
|
||
|
vfrom = line[0].replace("?", "\?").replace("%s", "([a-zA-Z螚ȎŠ-]+)")
|
||
|
vmatch = "^" + vfrom + "$"
|
||
|
vto = line[1].replace("<struktura>", "").replace("</struktura>", "").replace("%s", "$1").strip()
|
||
|
|
||
|
structure_conversions.append((__new__(RegExp(vmatch, 'u')),
|
||
|
__new__(RegExp(vfrom, 'u')),
|
||
|
vto))
|
||
|
|
||
|
|
||
|
def convert_structure(structure):
|
||
|
if structure_conversions is None:
|
||
|
build_structure_conversions()
|
||
|
|
||
|
for vmatch, vfrom, vto in structure_conversions:
|
||
|
if vmatch.test(structure):
|
||
|
# for some reason some times this fails to do correct replacement, but this helps #FML
|
||
|
# structure += " "
|
||
|
return structure.replace(vfrom, vto).strip()
|
||
|
|
||
|
return None
|