#!/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()
