#
# このソースコードは blanco Frameworkにより自動生成されました。
#

#
# 全角カタカナ→全角ひらがなの文字列変換のサンプル。blancoStringConverterの実装には影響しません。
#
class SampleZenKatakana2HiraganaStringConverter

    #
    # 文字列置換定義。
    #
    STRING_CONVERT_DEF = [[ 'ヴ', 'う゛' ], [ 'ァ', 'ぁ' ], [ 'ア', 'あ' ], [ 'ィ', 'ぃ' ], [ 'イ', 'い' ], [ 'ゥ', 'ぅ' ], [ 'ウ', 'う' ], [ 'ェ', 'ぇ' ], [ 'エ', 'え' ], [ 'ォ', 'ぉ' ], [ 'オ', 'お' ], [ 'カ', 'か' ], [ 'ガ', 'が' ], [ 'キ', 'き' ], [ 'ギ', 'ぎ' ], [ 'ク', 'く' ], [ 'グ', 'ぐ' ], [ 'ケ', 'け' ], [ 'ゲ', 'げ' ], [ 'コ', 'こ' ], [ 'ゴ', 'ご' ], [ 'サ', 'さ' ], [ 'ザ', 'ざ' ], [ 'シ', 'し' ], [ 'ジ', 'じ' ], [ 'ス', 'す' ], [ 'ズ', 'ず' ], [ 'セ', 'せ' ], [ 'ゼ', 'ぜ' ], [ 'ソ', 'そ' ], [ 'ゾ', 'ぞ' ], [ 'タ', 'た' ], [ 'ダ', 'だ' ], [ 'チ', 'ち' ], [ 'ヂ', 'ぢ' ], [ 'ッ', 'っ' ], [ 'ツ', 'つ' ], [ 'ヅ', 'づ' ], [ 'テ', 'て' ], [ 'デ', 'で' ], [ 'ト', 'と' ], [ 'ド', 'ど' ], [ 'ナ', 'な' ], [ 'ニ', 'に' ], [ 'ヌ', 'ぬ' ], [ 'ネ', 'ね' ], [ 'ノ', 'の' ], [ 'ハ', 'は' ], [ 'バ', 'ば' ], [ 'パ', 'ぱ' ], [ 'ヒ', 'ひ' ], [ 'ビ', 'び' ], [ 'ピ', 'ぴ' ], [ 'フ', 'ふ' ], [ 'ブ', 'ぶ' ], [ 'プ', 'ぷ' ], [ 'ヘ', 'へ' ], [ 'ベ', 'べ' ], [ 'ペ', 'ぺ' ], [ 'ホ', 'ほ' ], [ 'ボ', 'ぼ' ], [ 'ポ', 'ぽ' ], [ 'マ', 'ま' ], [ 'ミ', 'み' ], [ 'ム', 'む' ], [ 'メ', 'め' ], [ 'モ', 'も' ], [ 'ャ', 'ゃ' ], [ 'ヤ', 'や' ], [ 'ュ', 'ゅ' ], [ 'ユ', 'ゆ' ], [ 'ョ', 'ょ' ], [ 'ヨ', 'よ' ], [ 'ラ', 'ら' ], [ 'リ', 'り' ], [ 'ル', 'る' ], [ 'レ', 'れ' ], [ 'ロ', 'ろ' ], [ 'ヮ', 'ゎ' ], [ 'ワ', 'わ' ], [ 'ヰ', 'ゐ' ], [ 'ヱ', 'ゑ' ], [ 'ヲ', 'を' ], [ 'ン', 'ん' ], [ 'ヵ', 'か' ], [ 'ヶ', 'け' ] ]

    #
    # 文字列変換定義に従い、文字列を変換します。
    #
    # param argCheck 変換対象の文字列。
    # return 文字列変換定義にしたがって変換された文字列。変換定義にひとつも合致しない場合には元の文字列が戻ります。
    #
    def convert(argCheck)
        if argCheck.nil?
            raise ArgumentError, "メソッド[convert]のパラメータ[argCheck]にnilが与えられました。しかし、このパラメータにnilを与えることはできません"
        end

        wrkString = ''
        index = 0
        while index < argCheck.length()
            look = argCheck.slice(index, argCheck.length()-index)
            isFound = false
            for indexDef in 0..STRING_CONVERT_DEF.length-1
                if look.index(STRING_CONVERT_DEF[indexDef][0]) == 0
                    wrkString += STRING_CONVERT_DEF[indexDef][1]
                    index += STRING_CONVERT_DEF[indexDef][0].length()
                    isFound = true
                    break
                end
            end
            if !isFound
                wrkString += look.slice(/./)
                index = index + look.slice(/./).length()
            end
        end

        return wrkString
    end
end
