Skip to content

Instantly share code, notes, and snippets.

@pixelcort
Created February 23, 2014 12:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save pixelcort/9170845 to your computer and use it in GitHub Desktop.
Save pixelcort/9170845 to your computer and use it in GitHub Desktop.
# coding=UTF-8
#k=u"私は疲れた"
#h=u"わたしはつられた"
import re
def rubyForString(k, h):
expression = u'([^\u3040-\u30ff]*)([\u3040-\u30ff]*)([^\u3040-\u30ff]*)([\u3040-\u30ff]*)([^\u3040-\u30ff]*)([\u3040-\u30ff]*)([^\u3040-\u30ff]*)([\u3040-\u30ff]*)'
kresult = re.search(expression,k)
kgroups = kresult.groups()
krealgroups = []
kanaexpression = ""
for i in range(len(kgroups)):
kgroup = kgroups[i]
if len(kgroup) == 0:
continue
krealgroups.append(kgroup)
isKanji = i % 2 == 0 # Verified
if isKanji:
kanaexpression += u"([\u3040-\u30ff]+)"
else:
kanaexpression += u"(" + kgroup + u")"
# print "is Kanji " + str(isKanji)
# print "group " + group
# print ""
#print "kanaexpression " + kanaexpression
hresult = re.search(kanaexpression, h)
hgroups = hresult.groups()
if len(krealgroups) != len(hgroups):
#print "not equal lengths"
return "".join(hgroups)
output = ""
for i in range(len(hgroups)):
kanji = krealgroups[i]
hiragana = hgroups[i]
if kanji == hiragana:
output += hiragana
else:
output += "<ruby>" + kanji + "<rt>" + hiragana + "</rt></ruby>"
return output
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment