--- /dev/null
+#!/usr/bin/env python3
+
+"""
+jiten-pai
+
+"""
+
+import sys
+
+_PYTHON_VERSION = float("%d.%d" % (sys.version_info.major, sys.version_info.minor))
+if _PYTHON_VERSION < 3.6:
+ raise Exception ('Need Python version 3.6 or later, got version ' + str(sys.version))
+
+import platform
+import io
+import os
+import signal
+import re
+import argparse
+
+
+cfg = {
+ 'dict': '',
+ 'term': '',
+}
+
+
+def parse_cmdline():
+ parser = argparse.ArgumentParser(
+ formatter_class=argparse.RawTextHelpFormatter,
+ description='jiten-pai',
+ epilog=''
+ )
+ parser.add_argument('term', default='^$', help='search term; regex supported')
+ parser.add_argument('-d', '--dict', default=cfg['dict'], help='dictionary file')
+ args = parser.parse_args()
+ if args.dict:
+ cfg['dict'] = args.dict
+ if args.term:
+ cfg['term'] = args.term
+
+
+def dict_lookup(dict_fname, term):
+ with open(dict_fname) as dict_file:
+ # edict example line:
+ # 〆日 [しめび] /(n) time limit/closing day/settlement day (payment)/deadline/
+ re_split = re.compile(r'^(.*) *\[(.*)\] */(.*)/$')
+ re_term = re.compile(term)
+ for line in dict_file:
+ try:
+ kanji, kana, trans = re_split.match(line.strip()).groups()
+ except:
+ continue
+ # for now promiscuously try to match anything anywhere
+ if re_term.search(kanji) is not None or \
+ re_term.search(kana) is not None or \
+ re_term.search(trans) is not None:
+ print("%s (%s) %s" % (kanji, kana, trans))
+
+
+############################################################
+# main function
+
+def main():
+ parse_cmdline()
+ dict_lookup(cfg['dict'], cfg['term'])
+ sys.exit(0)
+
+# run application
+if __name__== "__main__":
+ main()
+
+# EOF