#!/usr/bin/env python3 import os import glob import sys import csv def get_lang(lang): out = {} for ln in open('./src/lang/%s.rs'%lang): ln = ln.strip() if ln.startswith('("'): k, v = line_split(ln) out[k] = v return out def line_split(line): toks = line.split('", "') assert(len(toks) == 2) k = toks[0][2:] v = toks[1][:-3] return k, v def main(): if len(sys.argv) == 1: expand() elif sys.argv[1] == '1': to_csv() else: to_rs(sys.argv[1]) def expand(): for fn in glob.glob('./src/lang/*'): lang = os.path.basename(fn)[:-3] if lang in ['en','cn']: continue dict = get_lang(lang) fw = open("%s.rs"%lang, "wt") for line in open('./src/lang/cn.rs'): line_strip = line.strip() if line_strip.startswith('("'): k, v = line_split(line_strip) if k in dict: line = line.replace(v, dict[k]) else: line = line.replace(v, "") fw.write(line) else: fw.write(line) fw.close() def to_csv(): for fn in glob.glob('./src/lang/*.rs'): lang = os.path.basename(fn)[:-3] csvfile = open('./src/lang/%s.csv'%lang, "wt") csvwriter = csv.writer(csvfile) for line in open(fn): line_strip = line.strip() if line_strip.startswith('("'): k, v = line_split(line_strip) csvwriter.writerow([k, v]) csvfile.close() def to_rs(lang): csvfile = open('%s.csv'%lang, "rt") fw = open("./src/lang/%s.rs"%lang, "wt") fw.write('''lazy_static::lazy_static! { pub static ref T: std::collections::HashMap<&'static str, &'static str> = [ ''') for row in csv.reader(csvfile): fw.write(' ("%s", "%s"),\n'%(row[0].replace('"', '\"'), row[1].replace('"', '\"'))) fw.write(''' ].iter().cloned().collect(); } ''') fw.close() main()