{"version":3,"sources":["src/main/ts/jaconv/hebon.ts","src/main/ts/jaconv/katahira.ts","src/main/ts/jaconv/node.ts","src/main/ts/jaconv/zenhan.ts"],"names":[],"mappings":"AAYA,kBAAU,MAAM,CAAC;IAoDf;;OAEG;IACH,SAAgB,OAAO,CAAC,GAAI,MAAM,UAoEjC;CACF;ACvID,kBAAU,MAAM,CAAC;IAOf;;OAEG;IACH,SAAgB,UAAU,CAAC,GAAI,MAAM,UAQpC;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,GAAI,MAAM,UAQpC;CACF;AC7BD,kBAAU,MAAM,CAAC;CAOhB;ACLD,kBAAU,MAAM,CAAC;IA4Sf;;OAEG;IACH,SAAgB,UAAU,CAAC,GAAI,MAAM,UAEpC;IAED;;OAEG;IACH,SAAgB,UAAU,CAAC,GAAI,MAAM,UAEpC;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,GAAI,MAAM,UAEnC;IAED;;OAEG;IACH,SAAgB,SAAS,CAAC,GAAI,MAAM,UAEnC;IAED;;;OAGG;IACH,SAAgB,KAAK,CAAC,GAAI,MAAM,UAE/B;IAED;;;OAGG;IACH,SAAgB,KAAK,CAAC,GAAI,MAAM,UAE/B;IAED;;;OAGG;IACH,SAAgB,SAAS,CAAC,GAAI,MAAM,UAEnC;CACF","file":"jaconv.d.ts","sourcesContent":["//---------------------------------------------------------------------\n// ヘボン式ローマ字変換\n//\n// Copyright (c) 2011 Kazuhiko Arase\n//\n// URL: https://github.com/kazuhikoarase/jaconv\n//\n// Licensed under the MIT license:\n//  http://www.opensource.org/licenses/mit-license.php\n//\n//---------------------------------------------------------------------\n\nnamespace jaconv {\n\n  // 'ん' は、別途ハンドリングするのでデータに含めない\n  var hebonMap : { [ hiragana : string ] : string } = {\n    'あ':'A','い':'I','う':'U','え':'E','お':'O',\n    'か':'KA','き':'KI','く':'KU','け':'KE','こ':'KO',\n    'さ':'SA','し':'SHI','す':'SU','せ':'SE','そ':'SO',\n    'た':'TA','ち':'CHI','つ':'TSU','て':'TE','と':'TO',\n    'な':'NA','に':'NI','ぬ':'NU','ね':'NE','の':'NO',\n    'は':'HA','ひ':'HI','ふ':'FU','へ':'HE','ほ':'HO',\n    'ま':'MA','み':'MI','む':'MU','め':'ME','も':'MO',\n    'や':'YA','ゆ':'YU','よ':'YO',\n    'ら':'RA','り':'RI','る':'RU','れ':'RE','ろ':'RO',\n    'わ':'WA','ゐ':'I','ゑ':'E','を':'O',\n    'ぁ':'A','ぃ':'I','ぅ':'U','ぇ':'E','ぉ':'O',\n    'が':'GA','ぎ':'GI','ぐ':'GU','げ':'GE','ご':'GO',\n    'ざ':'ZA','じ':'JI','ず':'ZU','ぜ':'ZE','ぞ':'ZO',\n    'だ':'DA','ぢ':'JI','づ':'ZU','で':'DE','ど':'DO',\n    'ば':'BA','び':'BI','ぶ':'BU','べ':'BE','ぼ':'BO',\n    'ぱ':'PA','ぴ':'PI','ぷ':'PU','ぺ':'PE','ぽ':'PO',\n    'きゃ':'KYA','きゅ':'KYU','きょ':'KYO',\n    'しゃ':'SHA','しゅ':'SHU','しょ':'SHO',\n    'ちゃ':'CHA','ちゅ':'CHU','ちょ':'CHO','ちぇ':'CHE',\n    'にゃ':'NYA','にゅ':'NYU','にょ':'NYO',\n    'ひゃ':'HYA','ひゅ':'HYU','ひょ':'HYO',\n    'みゃ':'MYA','みゅ':'MYU','みょ':'MYO',\n    'りゃ':'RYA','りゅ':'RYU','りょ':'RYO',\n    'ぎゃ':'GYA','ぎゅ':'GYU','ぎょ':'GYO',\n    'じゃ':'JA','じゅ':'JU','じょ':'JO',\n    'びゃ':'BYA','びゅ':'BYU','びょ':'BYO',\n    'ぴゃ':'PYA','ぴゅ':'PYU','ぴょ':'PYO'\n  };\n\n  var aaSet : { [ aa : string ] : boolean } = {\n    'AA': true, 'EE': true, 'II': false, // I は連続しても省略しない\n    'OO': true, 'OU': true, 'UU': true\n  };\n\n  var getHebon = function(s : string, index : number) {\n    var h : string = null;\n    var c : string = null;\n    if (index + 1 < s.length) {\n      c = s.substring(index, index + 2);\n      h = hebonMap[c];\n    }\n    if (!h && index < s.length) {\n      c = s.substring(index, index + 1);\n      h = hebonMap[c];\n    }\n    return {c: c, h: h || null};\n  };\n\n  /**\n   * 全角ひらがなをヘボン式ローマ字で半角英文字に変換します。\n   */\n  export function toHebon(s : string) {\n\n    var hebon = '';\n    var lastHebon = '';\n    var lastChar = '';\n    var i = 0;\n\n    while (i < s.length) {\n\n      var hr = getHebon(s, i);\n\n      if (hr.c == 'っ') {\n\n        // 'っち'\n        var nextHr = getHebon(s, i + 1);\n        if (nextHr.h != null) {\n          if (nextHr.h.indexOf('CH') == 0) {\n            hr.h = 'T';\n          } else {\n            hr.h = nextHr.h.substring(0, 1);\n          }\n        }\n\n      } else if (hr.c == 'ん') {\n\n        // B,M,P の前の 'ん' は 'M' とする。\n        var nextHr = getHebon(s, i + 1);\n        if (nextHr.h != null && 'BMP'.indexOf(nextHr.h.charAt(0) ) != -1) {\n          hr.h = 'M';\n        } else {\n          hr.h = 'N';\n        }\n\n      } else if (hr.c == 'ー') {\n\n        // 長音は無視\n        hr.h = '';\n      }\n\n      if (hr.h != null) {\n\n        // 変換できる文字の場合\n        if (lastHebon != null) {\n\n          // 連続する母音の除去\n          var htest = lastHebon + hr.h;\n          if (htest.length > 2) {\n            htest = htest.substring(htest.length - 2);\n          }\n          if (aaSet[htest]) {\n            hr.h = '';\n          }\n        }\n\n        hebon += hr.h;\n\n      } else {\n\n        // 変換できない文字の場合\n        hebon += hr.c;\n      }\n\n      lastHebon = hr.h;\n      lastChar = hr.c;\n      i += hr.c.length;\n    }\n\n    return hebon;\n  }\n}\n","\nnamespace jaconv {\n\n  var minHira = 'ぁ'.charCodeAt(0);\n  var maxHira = 'ゖ'.charCodeAt(0);\n  var minKata= 'ァ'.charCodeAt(0);\n  var maxKata = 'ヶ'.charCodeAt(0);\n\n  /**\n   * 全角ひらがなを全角カタカナに変換します。\n   */\n  export function toKatakana(s : string) {\n    var res = '';\n    for (var i = 0; i < s.length; i += 1) {\n      var cd = s.charCodeAt(i);\n      res += (minHira <= cd && cd <= maxHira)?\n        String.fromCharCode(cd - minHira + minKata) : s.charAt(i);\n    }\n    return res;\n  }\n\n  /**\n   * 全角カタカナを全角ひらがなに変換します。\n   */\n  export function toHiragana(s : string) {\n    var res = '';\n    for (var i = 0; i < s.length; i += 1) {\n      var cd = s.charCodeAt(i);\n      res += (minKata <= cd && cd <= maxKata)?\n        String.fromCharCode(cd - minKata + minHira) : s.charAt(i);\n    }\n    return res;\n  }\n}\n","//---------------------------------------------------------------------\n// node \n//\n\nnamespace jaconv {\n  // export\n  declare var exports : any;\n  declare var module : any;\n  if (typeof exports === 'object') {\n    module.exports = jaconv;\n  }\n}\n","//---------------------------------------------------------------------\n// 全角・半角変換\n//\n// 2005/2/26 Kazuhiko Arase\n//\n\nnamespace jaconv {\n\n  var asciiData = [\n\n    '\\u0020', '\\u3000',\n    '!', '！',\n\n    // 2重引用符\n    //'\\\"', '＂',\n    '\\\"', '”', // 一対多の変換の逆変換は先優先\n    '\\\"', '“',\n\n    '#', '＃',\n    '$', '＄',\n    '%', '％',\n    '&', '＆',\n    '\\'', '’',\n    '(', '（',\n    ')', '）',\n    '*', '＊',\n    '+', '＋',\n    ',', '，',\n    '-', '－',\n    '.', '．',\n    '/', '／',\n    '0', '０',\n    '1', '１',\n    '2', '２',\n    '3', '３',\n    '4', '４',\n    '5', '５',\n    '6', '６',\n    '7', '７',\n    '8', '８',\n    '9', '９',\n    ':', '：',\n    ';', '；',\n    '<', '＜',\n    '=', '＝',\n    '>', '＞',\n    '?', '？',\n    '@', '＠',\n    'A', 'Ａ',\n    'B', 'Ｂ',\n    'C', 'Ｃ',\n    'D', 'Ｄ',\n    'E', 'Ｅ',\n    'F', 'Ｆ',\n    'G', 'Ｇ',\n    'H', 'Ｈ',\n    'I', 'Ｉ',\n    'J', 'Ｊ',\n    'K', 'Ｋ',\n    'L', 'Ｌ',\n    'M', 'Ｍ',\n    'N', 'Ｎ',\n    'O', 'Ｏ',\n    'P', 'Ｐ',\n    'Q', 'Ｑ',\n    'R', 'Ｒ',\n    'S', 'Ｓ',\n    'T', 'Ｔ',\n    'U', 'Ｕ',\n    'V', 'Ｖ',\n    'W', 'Ｗ',\n    'X', 'Ｘ',\n    'Y', 'Ｙ',\n    'Z', 'Ｚ',\n    '[', '［',\n\n    // 円記号\n    //'\\\\', '＼',\n    '\\\\', '￥',\n\n    ']', '］',\n    '^', '＾',\n    '_', '＿',\n    '`', '‘',\n    'a', 'ａ',\n    'b', 'ｂ',\n    'c', 'ｃ',\n    'd', 'ｄ',\n    'e', 'ｅ',\n    'f', 'ｆ',\n    'g', 'ｇ',\n    'h', 'ｈ',\n    'i', 'ｉ',\n    'j', 'ｊ',\n    'k', 'ｋ',\n    'l', 'ｌ',\n    'm', 'ｍ',\n    'n', 'ｎ',\n    'o', 'ｏ',\n    'p', 'ｐ',\n    'q', 'ｑ',\n    'r', 'ｒ',\n    's', 'ｓ',\n    't', 'ｔ',\n    'u', 'ｕ',\n    'v', 'ｖ',\n    'w', 'ｗ',\n    'x', 'ｘ',\n    'y', 'ｙ',\n    'z', 'ｚ',\n    '{', '｛',\n    '|', '｜',\n    '}', '｝',\n    '~', '～'\n  ];\n\n  var kanaData = [\n    '。', '｡',\n    '「', '｢',\n    '」', '｣',\n    '、', '､',\n    '・', '･',\n    'ヲ', 'ｦ',\n\n    'ァ', 'ｧ',\n    'ィ', 'ｨ',\n    'ゥ', 'ｩ',\n    'ェ', 'ｪ',\n    'ォ', 'ｫ',\n\n    'ャ', 'ｬ',\n    'ュ', 'ｭ',\n    'ョ', 'ｮ',\n\n    'ッ', 'ｯ',\n\n    'ー', 'ｰ',\n\n    'ア', 'ｱ',\n    'イ', 'ｲ',\n    'ウ', 'ｳ',\n    'エ', 'ｴ',\n    'オ', 'ｵ',\n\n    'カ', 'ｶ',\n    'キ', 'ｷ',\n    'ク', 'ｸ',\n    'ケ', 'ｹ',\n    'コ', 'ｺ',\n\n    'ガ', 'ｶﾞ',\n    'ギ', 'ｷﾞ',\n    'グ', 'ｸﾞ',\n    'ゲ', 'ｹﾞ',\n    'ゴ', 'ｺﾞ',\n\n    'サ', 'ｻ',\n    'シ', 'ｼ',\n    'ス', 'ｽ',\n    'セ', 'ｾ',\n    'ソ', 'ｿ',\n\n    'ザ', 'ｻﾞ',\n    'ジ', 'ｼﾞ',\n    'ズ', 'ｽﾞ',\n    'ゼ', 'ｾﾞ',\n    'ゾ', 'ｿﾞ',\n\n    'タ', 'ﾀ',\n    'チ', 'ﾁ',\n    'ツ', 'ﾂ',\n    'テ', 'ﾃ',\n    'ト', 'ﾄ',\n\n    'ダ', 'ﾀﾞ',\n    'ヂ', 'ﾁﾞ',\n    'ヅ', 'ﾂﾞ',\n    'デ', 'ﾃﾞ',\n    'ド', 'ﾄﾞ',\n\n    'ナ', 'ﾅ',\n    'ニ', 'ﾆ',\n    'ヌ', 'ﾇ',\n    'ネ', 'ﾈ',\n    'ノ', 'ﾉ',\n\n    'ハ', 'ﾊ',\n    'ヒ', 'ﾋ',\n    'フ', 'ﾌ',\n    'ヘ', 'ﾍ',\n    'ホ', 'ﾎ',\n\n    'バ', 'ﾊﾞ',\n    'ビ', 'ﾋﾞ',\n    'ブ', 'ﾌﾞ',\n    'ベ', 'ﾍﾞ',\n    'ボ', 'ﾎﾞ',\n\n    'パ', 'ﾊﾟ',\n    'ピ', 'ﾋﾟ',\n    'プ', 'ﾌﾟ',\n    'ペ', 'ﾍﾟ',\n    'ポ', 'ﾎﾟ',\n\n    'マ', 'ﾏ',\n    'ミ', 'ﾐ',\n    'ム', 'ﾑ',\n    'メ', 'ﾒ',\n    'モ', 'ﾓ',\n\n    'ヤ', 'ﾔ',\n    'ユ', 'ﾕ',\n    'ヨ', 'ﾖ',\n\n    'ラ', 'ﾗ',\n    'リ', 'ﾘ',\n    'ル', 'ﾙ',\n    'レ', 'ﾚ',\n    'ロ', 'ﾛ',\n\n    'ワ', 'ﾜ',\n    'ン', 'ﾝ',\n\n    'ヴ', 'ｳﾞ',\n\n    '゛', 'ﾞ',\n    '゜', 'ﾟ',\n\n    'ヰ', 'ｲ',\n    'ヱ', 'ｴ',\n    'ヮ', 'ﾜ',\n    'ヵ', 'ｶ',\n    'ヶ', 'ｹ'\n  ];\n\n  declare type StringMap = { [k : string] : string };\n\n  var createConversionMap = function(data : string[]) {\n\n    var map1 : StringMap = {};\n    var map2 : StringMap = {};\n\n    var add = function(s1 : string, s2 : string) {\n      if (!map1[s1]) {\n        map1[s1] = s2;\n      }\n      if (!map2[s2]) {\n        map2[s2] = s1;\n      }\n    };\n\n    var convert = function(s :  string, reverse : boolean) {\n\n      var map = !reverse? map1 : map2;\n\n      var converted = '';\n\n      for (var i = 0; i < s.length; i += 1) {\n\n        if (i + 1 < s.length) {\n          var c = map[s.substring(i, i + 2)];\n          if (c) {\n            converted += c;\n            i += 1;\n            continue;\n          }\n        }\n\n        var c = map[s.substring(i, i + 1)];\n        if (c) {\n          converted += c;\n          continue;\n        }\n\n        // 変換テーブルに該当無し\n        converted += s.substring(i, i + 1);\n      }\n\n      return converted;\n    }\n\n    if (data.length % 2 != 0) {\n      throw 'bad data length:' + data.length;\n    }\n    var len = data.length / 2;\n    for (var i = 0; i < len; i += 1) {\n      add(data[i * 2], data[i * 2 + 1]);\n    }\n\n    return { convert : convert };\n  };\n\n  //---------------------------------------------------------\n  // 全角-半角 マッピング (ASCII)\n  //\n\n  var asciiMap = createConversionMap(asciiData);\n\n  //---------------------------------------------------------\n  // 全角-半角 マッピング (カタカナ)\n  //\n\n  var kanaMap = createConversionMap(kanaData);\n\n  // exports\n\n  /**\n   * 全角英数記号を半角に変換します。\n   */\n  export function toHanAscii(s : string) {\n    return asciiMap.convert(s, true);\n  }\n\n  /**\n   * 半角英数記号を全角に変換します。\n   */\n  export function toZenAscii(s : string) {\n    return asciiMap.convert(s, false);\n  }\n\n  /**\n   * 全角カタカナを半角に変換します。\n   */\n  export function toHanKana(s : string) {\n    return kanaMap.convert(s, false);\n  }\n\n  /**\n   * 半角カタカナを全角に変換します。\n   */\n  export function toZenKana(s : string) {\n    return kanaMap.convert(s, true);\n  }\n\n  /**\n   * 全角英数記号、カタカナを半角に変換します。\n   * (toHanAscii, toHanKana の組み合わせ)\n   */\n  export function toHan(s : string) {\n    return toHanAscii(toHanKana(s) );\n  }\n\n  /**\n   * 半角英数記号、カタカナを全角に変換します。\n   * (toZenAscii, toZenKana の組み合わせ)\n   */\n  export function toZen(s : string) {\n    return toZenAscii(toZenKana(s) );\n  }\n\n  /**\n   * 全角英数記号を半角に、半角カタカナを全角に変換します。\n   * (toHanAscii, toZenKana の組み合わせ)\n   */\n  export function normalize(s : string) {\n    return toHanAscii(toZenKana(s) );\n  }\n}\n"]}