/*
 * このソースコードは blanco Frameworkによって自動生成されています。
 */

/**
 * デフォルトコンストラクタ
 * @fileoverview このソースコードは blanco Frameworkによって自動生成されています。
 * @class 全角ひらがな→全角カタカナの文字列変換のサンプル。blancoStringConverterの実装には影響しません。
 * @constructor
 */
function SampleZenHiragana2KatakanaStringConverter() {
    /* パラメータの数、型チェックを行います。 */
    if (arguments.length !== 0) {
        throw new Error("[ArgumentException]: SampleZenHiragana2KatakanaStringConverter.SampleZenHiragana2KatakanaStringConverter のパラメータは[0]個である必要があります。しかし実際には[" + arguments.length +  "]個のパラメータを伴って呼び出されました。");
    }

}

/**
 * 文字列置換定義。
 * @type string[][]
 */
SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF = [[ "う゛", "ヴ" ]/* No.1 説明:濁音を先に定義します。 */, [ "ぁ", "ァ" ]/* No.2 */, [ "あ", "ア" ]/* No.3 */, [ "ぃ", "ィ" ]/* No.4 */, [ "い", "イ" ]/* No.5 */, [ "ぅ", "ゥ" ]/* No.6 */, [ "う", "ウ" ]/* No.7 */, [ "ぇ", "ェ" ]/* No.8 */, [ "え", "エ" ]/* No.9 */, [ "ぉ", "ォ" ]/* No.10 */, [ "お", "オ" ]/* No.11 */, [ "か", "カ" ]/* No.12 */, [ "が", "ガ" ]/* No.13 */, [ "き", "キ" ]/* No.14 */, [ "ぎ", "ギ" ]/* No.15 */, [ "く", "ク" ]/* No.16 */, [ "ぐ", "グ" ]/* No.17 */, [ "け", "ケ" ]/* No.18 */, [ "げ", "ゲ" ]/* No.19 */, [ "こ", "コ" ]/* No.20 */, [ "ご", "ゴ" ]/* No.21 */, [ "さ", "サ" ]/* No.22 */, [ "ざ", "ザ" ]/* No.23 */, [ "し", "シ" ]/* No.24 */, [ "じ", "ジ" ]/* No.25 */, [ "す", "ス" ]/* No.26 */, [ "ず", "ズ" ]/* No.27 */, [ "せ", "セ" ]/* No.28 */, [ "ぜ", "ゼ" ]/* No.29 */, [ "そ", "ソ" ]/* No.30 */, [ "ぞ", "ゾ" ]/* No.31 */, [ "た", "タ" ]/* No.32 */, [ "だ", "ダ" ]/* No.33 */, [ "ち", "チ" ]/* No.34 */, [ "ぢ", "ヂ" ]/* No.35 */, [ "っ", "ッ" ]/* No.36 */, [ "つ", "ツ" ]/* No.37 */, [ "づ", "ヅ" ]/* No.38 */, [ "て", "テ" ]/* No.39 */, [ "で", "デ" ]/* No.40 */, [ "と", "ト" ]/* No.41 */, [ "ど", "ド" ]/* No.42 */, [ "な", "ナ" ]/* No.43 */, [ "に", "ニ" ]/* No.44 */, [ "ぬ", "ヌ" ]/* No.45 */, [ "ね", "ネ" ]/* No.46 */, [ "の", "ノ" ]/* No.47 */, [ "は", "ハ" ]/* No.48 */, [ "ば", "バ" ]/* No.49 */, [ "ぱ", "パ" ]/* No.50 */, [ "ひ", "ヒ" ]/* No.51 */, [ "び", "ビ" ]/* No.52 */, [ "ぴ", "ピ" ]/* No.53 */, [ "ふ", "フ" ]/* No.54 */, [ "ぶ", "ブ" ]/* No.55 */, [ "ぷ", "プ" ]/* No.56 */, [ "へ", "ヘ" ]/* No.57 */, [ "べ", "ベ" ]/* No.58 */, [ "ぺ", "ペ" ]/* No.59 */, [ "ほ", "ホ" ]/* No.60 */, [ "ぼ", "ボ" ]/* No.61 */, [ "ぽ", "ポ" ]/* No.62 */, [ "ま", "マ" ]/* No.63 */, [ "み", "ミ" ]/* No.64 */, [ "む", "ム" ]/* No.65 */, [ "め", "メ" ]/* No.66 */, [ "も", "モ" ]/* No.67 */, [ "ゃ", "ャ" ]/* No.68 */, [ "や", "ヤ" ]/* No.69 */, [ "ゅ", "ュ" ]/* No.70 */, [ "ゆ", "ユ" ]/* No.71 */, [ "ょ", "ョ" ]/* No.72 */, [ "よ", "ヨ" ]/* No.73 */, [ "ら", "ラ" ]/* No.74 */, [ "り", "リ" ]/* No.75 */, [ "る", "ル" ]/* No.76 */, [ "れ", "レ" ]/* No.77 */, [ "ろ", "ロ" ]/* No.78 */, [ "ゎ", "ヮ" ]/* No.79 */, [ "わ", "ワ" ]/* No.80 */, [ "ゐ", "ヰ" ]/* No.81 */, [ "ゑ", "ヱ" ]/* No.82 */, [ "を", "ヲ" ]/* No.83 */, [ "ん", "ン" ]/* No.84 */ ];

/**
 * 文字列変換定義に従い、文字列を変換します。
 * @addon
 * @param {string} argCheck 変換対象の文字列。
 * @return 文字列変換定義にしたがって変換された文字列。変換定義にひとつも合致しない場合には元の文字列が戻ります。
 * @type string
 */
SampleZenHiragana2KatakanaStringConverter.prototype.convert = function(/* string */ argCheck) {
    /* パラメータの数、型チェックを行います。 */
    if (arguments.length !== 1) {
        throw new Error("[ArgumentException]: SampleZenHiragana2KatakanaStringConverter.convert のパラメータは[1]個である必要があります。しかし実際には[" + arguments.length +  "]個のパラメータを伴って呼び出されました。");
    }
    if (typeof(argCheck) != "string") {
        throw new Error("[ArgumentException]: SampleZenHiragana2KatakanaStringConverter.convert の1番目のパラメータは[string]型でなくてはなりません。しかし実際には[" + typeof(argCheck) + "]型が与えられました。");
    }

    var wrkString = "";
    for (var index = 0; index < argCheck.length; ) {
        var look = argCheck.substring(index);
        var isFound = false;
        for (var indexDef = 0; indexDef < SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF.length; indexDef++) {
            var wrkStrComp = look;
            if (look.length > SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF[indexDef][0].length) {
                wrkStrComp = wrkStrComp.substring(0, SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF[indexDef][0].length);
            }
            if (wrkStrComp === SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF[indexDef][0]) {
                wrkString += SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF[indexDef][1];
                index += SampleZenHiragana2KatakanaStringConverter.STRING_CONVERT_DEF[indexDef][0].length;
                isFound = true;
                break;
            }
        }
        if (!isFound) {
            wrkString += argCheck.charAt(index);
            index = index + 1;
        }
    }

    return wrkString;
};
/* クラス[SampleZenHiragana2KatakanaStringConverter]宣言の終了。 */
