# 平仮名繰り返し記号\r
# ゝ 309d [ヒラガナクリカエシ] クリカエシ\r
# ゞ 309e [ヒラガナダクテンクリカエシ] クリカエシ ダクテン\r
- #{ 'text':'すゝめ', 'input':'ススメ'},\r
- #{ 'text':'いすゞ', 'input':'イスズ'},\r
- #{ 'text':'づゝ', 'input':'ヅツ'},\r
- #{ 'text':'ぶゞ', 'input':'ブブ'},\r
+ { 'text':'すゝめ', 'input':'ススメ'},\r
+ { 'text':'すゞめ', 'input':'スズメ'},\r
+ { 'text':'いすゞ', 'input':'イスズ'},\r
+ { 'text':'づゝ', 'input':'ヅツ'},\r
+ { 'text':'ぶゞ', 'input':'ブブ'},\r
+ { 'text':'ふゞ', 'input':'フブ'},\r
\r
# 片仮名繰り返し記号\r
# ヽ 30fd [カタカナクリカエシ] クリカエシ\r
RE_KATAKANA = re.compile('^[ァ-ヾ]+$')\r
RE_HIRAGANA = re.compile('^[ぁ-ゞ]+$')\r
\r
+NO_DAKUON_DIC = {\r
+ 'ヅ' : 'ツ',\r
+}\r
+\r
+DAKUON_DIC = {\r
+ 'フ' : 'ブ',\r
+ 'ブ' : 'ブ',\r
+}\r
+\r
+def to_no_dakuon_kana(s):\r
+ if s in NO_DAKUON_DIC:\r
+ return NO_DAKUON_DIC[s]\r
+ return s\r
+\r
+def to_dakuon_kana(s):\r
+ if s in DAKUON_DIC:\r
+ return DAKUON_DIC[s]\r
+ return s\r
+\r
def japanese_braille_separate(inbuf, logwrite):\r
text = inbuf\r
if RE_MB_ALPHA_NUM_SPACE.match(text):\r
li[pos].output = '⠼'\r
\r
# 記号を Unicode 正規化\r
- for mo in li:\r
+ for i in xrange(0, len(li)):\r
+ mo = li[i]\r
if mo.hinshi1 == '記号' and mo.hinshi2 == '一般':\r
- mo.output = mo.nhyouki\r
+ if mo.hyouki == 'ゝ' and i > 0:\r
+ mo.output = to_no_dakuon_kana(li[i-1].output)\r
+ elif mo.hyouki == 'ゞ' and i > 0:\r
+ mo.output = to_dakuon_kana(li[i-1].output)\r
+ else:\r
+ mo.output = mo.nhyouki\r
if mo.hyouki == '.' and mo.hinshi1 == '名詞' and mo.hinshi2 == '数':\r
mo.output = '.'\r
if mo.hyouki == ',' and mo.hinshi1 == '名詞' and mo.hinshi2 == '数':\r