diff -urN v1/ezhtml.py v2/ezhtml.py
--- v1/ezhtml.py 2018-09-16 16:32:39.000000000 +0900
+++ v2/ezhtml.py 2018-09-17 00:15:20.000000000 +0900
@@ -3,6 +3,7 @@
import sys
import yaml
import six
+import nkf
def cv_amp(s, d='enc'):
lst = [ ('&','&'), ('<','<'), ('>','>') ]
@@ -28,15 +29,16 @@
return cv_amp(o)
if __name__ == "__main__":
- fi = sys.stdin if six.PY2 else sys.stdin.buffer
- s = fi.read()
- s = unicode(s, 'utf-8') if six.PY2 else s.decode()
+ b = nkf.get_stdin()
+ opt = nkf.guess(b)
+ u8 = nkf.cvt(b, '-u')
+ s = nkf.dec(u8)
o = yaml.load(s)
s = html_dump(o) + '\n'
- s = s.encode('utf-8') if six.PY2 else s.encode()
- fo = sys.stdout if six.PY2 else sys.stdout.buffer
- fo.write(s)
+ u8 = nkf.enc(s)
+ b = nkf.cvt(u8, opt)
+ nkf.put_stdout(b)
# EOF
diff -urN v1/nkf.py v2/nkf.py
--- v1/nkf.py 1970-01-01 09:00:00.000000000 +0900
+++ v2/nkf.py 2018-09-17 00:15:20.000000000 +0900
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+import sys
+import six
+import subprocess
+
+PIPE = subprocess.PIPE
+
+enc = lambda s: s.encode('utf-8') if six.PY2 else s.encode()
+dec = lambda b: unicode(b, 'utf-8') if six.PY2 else b.decode()
+
+def do_cmd(cmd, in_b):
+ cmd = enc(cmd)
+ proc = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE)
+ proc.stdin.write(in_b)
+ proc.stdin.close()
+ r = proc.stdout.read()
+ proc.wait()
+ return r # out_b
+
+def get_stdin():
+ fi = sys.stdin if six.PY2 else sys.stdin.buffer
+ return fi.read() # b
+
+def put_stdout(b):
+ fo = sys.stdout if six.PY2 else sys.stdout.buffer
+ fo.write(b)
+
+def guess(b):
+ b = do_cmd('nkf -g', b)
+ return dec(b).strip()
+
+def cvt(b, opt):
+ if opt == 'ASCII':
+ return b
+ d = {
+ 'ISO-2022-JP': '-j',
+ 'EUC-JP': '-e',
+ 'Shift_JIS': '-s',
+ 'UTF-8': '-u',
+ }
+ if opt not in d.values():
+ opt = d.get(opt, '-u')
+ return do_cmd('nkf ' + opt, b)
+
+if __name__ == "__main__":
+ b = get_stdin()
+ opt = guess(b)
+ u8 = cvt(b, '-u')
+ s = dec(u8)
+ # ...
+ u8 = enc(s)
+ b = cvt(u8, opt)
+ put_stdout(b)
+# EOF