OSDN Git Service

convert all of fontparser classes into functions
[sawarabi-fonts/sawarabi-fonts.git] / script / kanji_num.py
1 # -*- conding: utf-8 -*-
2
3 # Author: mshio <mshio@users.osdn.me>
4
5 __version__ = '0.2'
6
7 import argparse
8 from fontparser import all_of_kanjis
9
10 def get_kanjilist():
11     def parse_source(filepath):
12         with open(filepath, 'r') as fh:
13             chars = [[ord(c) for c in unicode(line.rstrip('\r\n'), 'utf-8')
14                       if not line.startswith('#')] for line in fh]
15         return reduce(lambda x, y: x + y, chars)
16
17     def parse_sources(filepaths):
18         chars = [parse_source(path) for path in filepaths]
19         return reduce(lambda x, y: x + y, chars)
20
21     sources = {'kyouikuKanji': ['data/grade-%d.txt' % n for n in range(1, 7)]}
22     sources.update({
23         ('level%d' % n): ['data/level-%ds.txt' % n] for n in range(1, 5)
24     })
25     return {k: parse_sources(v) for k, v in sources.items()}
26
27 def parse_args():
28     parser = argparse.ArgumentParser()
29     parser.add_argument('font_file', help='path of a font file')
30
31     return parser.parse_args()
32
33 if __name__ == '__main__':
34     args = parse_args()
35
36     all_kanjis = all_of_kanjis(args.font_file)
37     kanjilist = get_kanjilist()
38
39     for k, v in kanjilist.items():
40         count = len(set(v) & set(all_kanjis))
41         print '{key}, {num}'.format(key=k, num=count)