Created
March 2, 2025 14:36
-
-
Save 3110/80c897c357ed5dc9e2ccaa35b0e99ca4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
# generate_skk_maru_dict.py - SKK用丸数字辞書生成スクリプト | |
import sys | |
import argparse | |
# 丸数字のUnicode文字コードから生成(1~50) | |
# ①~⑳ (U+2460~U+2473)、㉑~㉟ (U+3251~U+325F)、㊱~㊿ (U+32B1~U+32BF) | |
CIRCLED_NUMS = ''.join([ | |
''.join(chr(i) for i in range(0x2460, 0x2474)), # ①~⑳ | |
''.join(chr(i) for i in range(0x3251, 0x3260)), # ㉑~㉟ | |
''.join(chr(i) for i in range(0x32B1, 0x32C0)) # ㊱~㊿ | |
]) | |
# ヘッダー部分 - 定数 | |
HEADER = """;; -*- mode: fundamental; coding: utf-8 -*- | |
;; | |
;; 丸数字用辞書 | |
;; | |
;; okuri-ari entries. | |
;; okuri-nasi entries.""" | |
def generate_skk_dict(max_num=50): | |
""" | |
指定された最大値までの丸数字を含むSKK辞書を生成する | |
Args: | |
max_num: 生成する丸数字の最大値(デフォルト: 50) | |
Returns: | |
str: 生成されたSKK辞書の内容 | |
""" | |
if max_num < 1 or max_num > 50: | |
raise ValueError("最大値は1~50の範囲で指定してください。") | |
# 指定された最大値までの丸数字を取得 | |
circled_nums = CIRCLED_NUMS[:max_num] | |
# 辞書全体を生成して返す | |
return (HEADER + "\nまるすうじ /" + "/".join(circled_nums) + "/\n" + | |
"\n".join(f"{i} /{maru}/" for i, maru in enumerate(circled_nums, 1))) | |
if __name__ == "__main__": | |
# コマンドライン引数のパース | |
parser = argparse.ArgumentParser(description='SKK用丸数字辞書を生成します。') | |
parser.add_argument('-m', '--max', type=int, default=50, | |
help='生成する丸数字の最大値(1~50、デフォルト: 50)') | |
parser.add_argument('-o', '--output', default='SKK-JISYO.marusuuji', | |
help='出力ファイル名(デフォルト: SKK-JISYO.marusuuji)') | |
args = parser.parse_args() | |
# 引数の範囲チェック | |
if args.max < 1 or args.max > 50: | |
parser.error("最大値は1~50の範囲で指定してください。") | |
try: | |
# SKK辞書を生成 | |
dict_content = generate_skk_dict(args.max) | |
# ファイルに書き込み | |
with open(args.output, 'w', encoding='utf-8') as f: | |
f.write(dict_content) | |
print(f"辞書ファイルを {args.output} に保存しました。") | |
except ValueError as e: | |
parser.error(str(e)) | |
except IOError as e: | |
parser.error(f"ファイル書き込みエラー: {e}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment