]> granicus.if.org Git - onig/commitdiff
add dict_conv.py
authorK.Kosako <kosako@sofnec.co.jp>
Wed, 24 Jul 2019 08:14:11 +0000 (17:14 +0900)
committerK.Kosako <kosako@sofnec.co.jp>
Wed, 24 Jul 2019 08:14:11 +0000 (17:14 +0900)
harnesses/dict_conv.py [new file with mode: 0644]

diff --git a/harnesses/dict_conv.py b/harnesses/dict_conv.py
new file mode 100644 (file)
index 0000000..f721293
--- /dev/null
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+# dict_conv.py  (Python3 script)
+
+import sys
+
+ENC_UTF16_BE = 1
+ENC_UTF16_LE = 2
+
+def add_char(enc, s, c):
+  if enc == ENC_UTF16_BE:
+    s += "\\x00"
+
+  s += c
+  if enc == ENC_UTF16_LE:
+    s += "\\x00"
+
+  return s
+
+def conv(enc, s):
+  n = len(s)
+  r = ""
+  i = 0
+  while i < n:
+    c = s[i]
+    if c == '\\':
+      c = s[i+1]
+      if c == '\\' or c == '"':
+        r = add_char(enc, r, "\\" + c)
+        i += 2
+        continue
+      else:
+        raise("Unknown escape {0}".format(s))
+
+    r = add_char(enc, r, c)
+    i += 1
+
+  return r
+
+def main(enc):
+  print("# This file was generated by dict_conv.py.")
+  for line in sys.stdin:
+    s = line.strip()
+    if s[0] == '#':
+      print(s)
+      continue
+
+    if s[0] == '"' and s[-1] == '"':
+      s = conv(enc, s[1:-1])
+      print("\"{0}\"".format(s))
+    else:
+      raise("Invalid format {0}".format(s))
+
+def usage(argv):
+  raise RuntimeError("Usage: python {0} utf16_be/utf16_le".format(argv[0]))
+
+
+if __name__ == "__main__":
+  argv = sys.argv
+  argc = len(argv)
+
+  if argc >= 2:
+    s = argv[1]
+    if s == 'utf16_be':
+      enc = ENC_UTF16_BE
+    elif s == 'utf16_le':
+      enc = ENC_UTF16_LE
+    else:
+      usage(argv)
+  else:
+    usage(argv)
+
+  main(enc)