Closed gazayas closed 7 years ago
んんんん、できたけど、気になる 文字列は 「macccho」から「まっcちょ」になるから str[place-1]をしないといけない(#romaji_to_small_tsuで)
とにかく放っとく。今一番大事な問題じゃない
いや〜まだダメだと思う。 コメントの方にこう書いた:
# while文が良くないかもしれない
# 最後に/([a-zA-Z])/にマッチしてしまったらエラーを返したいけど、
# while文だと、もしそのエラーを生じるはずのものが次のwhile文に入っていたら、
# while文を出ることはない。それは困る。
romaji_to_small_tsuを入れなかったら、"mattttte"みたいな文字列を書くと次のようになる
何かできるかもしれない
str_ary = str.split("")
str_ary.each do |char|
if char =~ /([a-z])/ # str.downcaseをした筈だから
place = str =~ (/[a-z]/)
romaji_to_small_tsu(str, place)
end
end
それでも再起は要らないよつな気がする。 とにかくこれで解決できると思う。 もっとすっきりした書き方にしたい。
実装したらこのIssueをcloseして、コードの方に
# fixme: refactoring (Issue #12)
を書いたらいいかもしれない。
できたけど、また見直した方がいいかもしれない わーい
romajiで#small_tsu_to_romajiを呼ぶことができるけど、#hiraganaの場合は「dokkkan」みたいな文字列を渡したら「kk」は「っ」に変換されてほしい
下記のはダメだ... また再帰的にした方がいい 今回は
str[place + 1]
じゃなくてstr[place - 1]
ただ、「dokkkan」だと... 「どkkっかん」になって... 適当に文字が残っていたら「っ」に変える訳にはいかない...if str[place + 1] == "っ" then str[place] == "っ" end
... でも最後の文字からmatchしないとダメだ...