The user may uses a different codepage/encoding which is not unicode, so we'd like to get rid of that
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import re 
 | 
						|
import os
 | 
						|
import glob
 | 
						|
from tabnanny import check
 | 
						|
 | 
						|
def pad_start(s, n, c = ' '):
 | 
						|
   if len(s) >= n:
 | 
						|
      return s
 | 
						|
   return c * (n - len(s)) + s
 | 
						|
 | 
						|
def safe_unicode(s):
 | 
						|
   res = ""
 | 
						|
   for c in s:
 | 
						|
      res += r"\u{}".format(pad_start(hex(ord(c))[2:], 4, '0'))
 | 
						|
   return res
 | 
						|
 | 
						|
def main():
 | 
						|
   print('export const LANGS = {')
 | 
						|
   for fn in glob.glob('../../../src/lang/*'):
 | 
						|
      lang = os.path.basename(fn)[:-3]
 | 
						|
      if lang == 'template': continue
 | 
						|
      print('  %s: {'%lang)
 | 
						|
      for ln in open(fn, encoding='utf-8'):
 | 
						|
         ln = ln.strip()
 | 
						|
         if ln.startswith('("'):
 | 
						|
            toks = ln.split('", "')
 | 
						|
            assert(len(toks) == 2)
 | 
						|
            a = toks[0][2:]
 | 
						|
            b = toks[1][:-3]
 | 
						|
            print('    "%s": "%s",'%(safe_unicode(a), safe_unicode(b)))
 | 
						|
      print('  },')
 | 
						|
   print('}')
 | 
						|
   check_if_retry = ['', False]
 | 
						|
   KEY_MAP = ['', False]
 | 
						|
   for ln in open('../../../src/client.rs', encoding='utf-8'):
 | 
						|
      ln = ln.strip()
 | 
						|
      if 'check_if_retry' in ln:
 | 
						|
         check_if_retry[1] = True
 | 
						|
         continue
 | 
						|
      if ln.startswith('}') and check_if_retry[1]:
 | 
						|
         check_if_retry[1] = False
 | 
						|
         continue
 | 
						|
      if check_if_retry[1]:
 | 
						|
         ln = removeComment(ln)
 | 
						|
         check_if_retry[0] += ln + '\n'
 | 
						|
      if 'KEY_MAP' in ln:
 | 
						|
         KEY_MAP[1] = True
 | 
						|
         continue
 | 
						|
      if '.collect' in ln and KEY_MAP[1]:
 | 
						|
         KEY_MAP[1] = False
 | 
						|
         continue
 | 
						|
      if KEY_MAP[1] and ln.startswith('('):
 | 
						|
         ln = removeComment(ln)
 | 
						|
         toks = ln.split('", Key::')
 | 
						|
         assert(len(toks) == 2)
 | 
						|
         a = toks[0][2:]
 | 
						|
         b = toks[1].replace('ControlKey(ControlKey::', '').replace("Chr('", '').replace("' as _)),", '').replace(')),', '')
 | 
						|
         KEY_MAP[0] += '  "%s": "%s",\n'%(a, b)
 | 
						|
   print()
 | 
						|
   print('export function checkIfRetry(msgtype: string, title: string, text: string) {')
 | 
						|
   print('  return %s'%check_if_retry[0].replace('to_lowercase', 'toLowerCase').replace('contains', 'indexOf').replace('!', '').replace('")', '") < 0'))
 | 
						|
   print(';}')
 | 
						|
   print()
 | 
						|
   print('export const KEY_MAP: any = {')
 | 
						|
   print(KEY_MAP[0])
 | 
						|
   print('}')
 | 
						|
   for ln in open('../../../Cargo.toml', encoding='utf-8'):
 | 
						|
      if ln.startswith('version ='):
 | 
						|
         print('export const ' + ln)
 | 
						|
      
 | 
						|
 | 
						|
def removeComment(ln):
 | 
						|
   return re.sub('\s+\/\/.*$', '', ln)
 | 
						|
 | 
						|
main()
 |