Greasy Fork is available in English.

covconv

いまアッシュヒョークいるんだけどっいけそうならいこうっ!

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name           covconv
// @namespace      net.ghippos.covconv
// @description    いまアッシュヒョークいるんだけどっいけそうならいこうっ!
// @version        5
// @include        *
// @grant          none
// ==/UserScript==
(function () {
  var dic = [
    // 標準辞書
    {
      'ja_JP': 'アイコン',
      'kv_JP': 'アイヨン'
    },
    {
      'ja_JP': 'アピール',
      'kv_JP': 'アッピル'
    },
    {
      'ja_JP': 'アルバム',
      'kv_JP': 'アユバム'
    },
    {
      'ja_JP': 'アンコール',
      'kv_JP': 'アンコッル'
    },
    {
      'ja_JP': 'イメージ',
      'kv_JP': 'イメッジ'
    },
    {
      'ja_JP': '(イヤホン|イヤフォン)',
      'kv_JP': 'イヤヒョン'
    },
    {
      'ja_JP': 'インストール',
      'kv_JP': 'インスヨッル'
    },
    {
      'ja_JP': 'インチ',
      'kv_JP': 'インヨ'
    },
    {
      'ja_JP': 'インポータント',
      'kv_JP': 'インポッタンッ'
    },
    {
      'ja_JP': 'ウェブ',
      'kv_JP': 'ウェッブ'
    },
    {
      'ja_JP': 'エアコン',
      'kv_JP': 'エアヨン'
    },
    {
      'ja_JP': 'エナジードリンク',
      'kv_JP': 'エナヨードリンポ'
    },
    {
      'ja_JP': 'エロゲ',
      'kv_JP': 'エヨゲ'
    },
    {
      'ja_JP': 'オペレーティング',
      'kv_JP': 'オペレッティンッ'
    },
    {
      'ja_JP': 'カニクリームコロッケ',
      'kv_JP': 'コニクリッムカラッケ'
    },
    {
      'ja_JP': 'カラースキーム',
      'kv_JP': 'カラースキッム'
    },
    {
      'ja_JP': 'カップル',
      'kv_JP': 'カプル'
    },
    {
      'ja_JP': 'カーテン',
      'kv_JP': 'カッテン'
    },
    {
      'ja_JP': 'きめ(.)|キメ(.)',
      'kv_JP': 'キメ$1'
    },
    {
      'ja_JP': 'キーワード',
      'kv_JP': 'キッワーヨ'
    },
    {
      'ja_JP': 'クリーニング',
      'kv_JP': 'クリニンッ'
    },
    {
      'ja_JP': 'ケーブル',
      'kv_JP': 'ケッブル'
    },
    {
      'ja_JP': 'ココア',
      'kv_JP': 'ココヤ'
    },
    {
      'ja_JP': 'コンクリート',
      'kv_JP': 'コンクリッヨ'
    },
    {
      'ja_JP': 'コネクション',
      'kv_JP': 'コネクヒョン'
    },
    {
      'ja_JP': 'コンパイラ',
      'kv_JP': 'コンパイヤ'
    },
    {
      'ja_JP': 'コンパイル',
      'kv_JP': 'コンパイユ'
    },
    {
      'ja_JP': '(サイコロ|さいころ)',
      'kv_JP': 'サイコヨ'
    },
    {
      'ja_JP': 'サドル',
      'kv_JP': 'サドル'
    },
    {
      'ja_JP': 'サークル',
      'kv_JP': 'サックル'
    },
    {
      'ja_JP': 'シュリンク',
      'kv_JP': 'シュリンクッ'
    },
    {
      'ja_JP': 'ショップ',
      'kv_JP': 'チョップ'
    },
    {
      'ja_JP': 'ステーキ',
      'kv_JP': 'ステッキ'
    },
    {
      'ja_JP': 'スタック',
      'kv_JP': 'スタッポ'
    },
    {
      'ja_JP': 'スマホ',
      'kv_JP': 'スマヒョ'
    },
    {
      'ja_JP': 'スマートフォン',
      'kv_JP': 'スマーヨヒョン'
    },
    {
      'ja_JP': 'スパークリング',
      'kv_JP': 'スパークリンッ'
    },
    {
      'ja_JP': 'スリープ',
      'kv_JP': 'スリップ'
    },
    {
      'ja_JP': 'スーツケース',
      'kv_JP': 'スーユケース'
    },
    {
      'ja_JP': 'スーツ',
      'kv_JP': 'スッツ'
    },
    {
      'ja_JP': 'セックス',
      'kv_JP': 'セックヨ'
    },
    {
      'ja_JP': '(ソウル|ソール)',
      'kv_JP': 'ソッル'
    },
    {
      'ja_JP': 'ダイヤグラム',
      'kv_JP': 'ダイヤグラミュ'
    },
    {
      'ja_JP': 'ダブルクォーターパウンダー',
      'kv_JP': 'ダブユクォッターパウンヤー'
    },
    {
      'ja_JP': 'ダブルチーズバーガー',
      'kv_JP': 'ダブユチッズバッガー'
    },
    {
      'ja_JP': 'ダンボール',
      'kv_JP': 'ダンボッル'
    },
    {
      'ja_JP': 'テクニカル',
      'kv_JP': 'テクニカユ'
    },
    {
      'ja_JP': 'テクニシャン',
      'kv_JP': 'テクニヒャン'
    },
    {
      'ja_JP': 'テンション',
      'kv_JP': 'テンヨン'
    },
    {
      'ja_JP': 'ディスプレイ',
      'kv_JP': 'ディスプヨイ'
    },
    {
      'ja_JP': 'テーブル',
      'kv_JP': 'テーブユ'
    },
    {
      'ja_JP': 'トイレクイックル',
      'kv_JP': 'ヨイレクイックヨ'
    },
    {
      'ja_JP': 'トイレ',
      'kv_JP': 'ヨイレ'
    },
    {
      'ja_JP': 'ドル',
      'kv_JP': 'ヨル'
    },
    {
      'ja_JP': 'トートロジー',
      'kv_JP': 'トントロジー'
    },
    {
      'ja_JP': 'ノートパソコン',
      'kv_JP': 'ノーヨパヨヨン'
    },
    {
      'ja_JP': 'バイオリン',
      'kv_JP': 'バイヨリン'
    },
    {
      'ja_JP': 'バレーボール',
      'kv_JP': 'バリボール'
    },
    {
      'ja_JP': 'ハッカソン',
      'kv_JP': 'ハッカヨン'
    },
    {
      'ja_JP': 'バックアップ',
      'kv_JP': 'バッヨアップ'
    },
    {
      'ja_JP': 'バージョン',
      'kv_JP': 'バジヨン'
    },
    {
      'ja_JP': 'パーセント',
      'kv_JP': 'パッセント'
    },
    {
      'ja_JP': 'ビデオ',
      'kv_JP': 'ヴィデオ'
    },
    {
      'ja_JP': '(ビヤガーデン|ビアガーデン)',
      'kv_JP': 'ビヤガデッム'
    },
    {
      'ja_JP': 'ビーフジャーキー',
      'kv_JP': 'ビッフジャッキー'
    },
    {
      'ja_JP': 'ピロピロ',
      'kv_JP': 'ピロピロ'
    },
    {
      'ja_JP': 'フラグ',
      'kv_JP': 'フヤグ'
    },
    {
      'ja_JP': 'ブルートゥース',
      'kv_JP': 'ブルーヨーユ'
    },
    {
      'ja_JP': 'ブース',
      'kv_JP': 'ブース'
    },
    {
      'ja_JP': 'フロー',
      'kv_JP': 'フヨー'
    },
    {
      'ja_JP': 'フィルタリング',
      'kv_JP': 'フィルタリンッ'
    },
    {
      'ja_JP': 'フォロワー',
      'kv_JP': 'ヒョロヤー'
    },
    {
      'ja_JP': 'フォロー',
      'kv_JP': 'ヒョロー'
    },
    {
      'ja_JP': 'フォース',
      'kv_JP': 'ヒョース'
    },
    {
      'ja_JP': 'プラグイン',
      'kv_JP': 'プラギン'
    },
    {
      'ja_JP': 'プログラミング',
      'kv_JP': 'プヨグヤミンッ'
    },
    {
      'ja_JP': 'プログラム',
      'kv_JP': 'プヨグロム'
    },
    {
      'ja_JP': 'プログレス',
      'kv_JP': 'プヤグレス'
    },
    {
      'ja_JP': '(プロセッサ|プロセッサー)',
      'kv_JP': 'プヨセッサ'
    },
    {
      'ja_JP': 'プロフィール',
      'kv_JP': 'プロフィッル'
    },
    {
      'ja_JP': 'プロセス',
      'kv_JP': 'プヨセス'
    },
    {
      'ja_JP': 'プロモーション',
      'kv_JP': 'プヨモッション'
    },
    {
      'ja_JP': 'ベストエフォート',
      'kv_JP': 'ベストエフォット'
    },
    {
      'ja_JP': 'ベビースター',
      'kv_JP': 'ベビッスヤッ'
    },
    {
      'ja_JP': 'マグロ',
      'kv_JP': 'マグロ'
    },
    {
      'ja_JP': 'ミステイク',
      'kv_JP': 'ミステック'
    },
    {
      'ja_JP': 'ミーティング',
      'kv_JP': 'メッティン'
    },
    {
      'ja_JP': 'メイド',
      'kv_JP': 'メイヨ'
    },
    {
      'ja_JP': 'メール',
      'kv_JP': 'メーユ'
    },
    {
      'ja_JP': 'モンスター',
      'kv_JP': 'モンスヤー'
    },
    {
      'ja_JP': 'モーニング',
      'kv_JP': 'モッニン'
    },
    {
      'ja_JP': 'ライティング',
      'kv_JP': 'ライティンッ'
    },
    {
      'ja_JP': 'ラーメン',
      'kv_JP': 'ラメンッ'
    },
    {
      'ja_JP': 'リア充',
      'kv_JP': 'リアッジュ'
    },
    {
      'ja_JP': 'リサイクル',
      'kv_JP': 'リサイクユ'
    },
    {
      'ja_JP': 'ロックスター',
      'kv_JP': 'ロップスヤー'
    },
    {
      'ja_JP': 'ローマ',
      'kv_JP': 'ヨーマ'
    },
    {
      'ja_JP': '群論',
      'kv_JP': 'グンヨン'
    },
    {
      'ja_JP': '圏論',
      'kv_JP': 'ケンヨン'
    },
    
    // 英こふ辞書
    {
      'ja_JP': '(アイパッドエアー|iPad\sAir)',
      'kv_JP': 'アイパッヨエヤー'
    },
    {
      'ja_JP': '(アイパッド|iPad)',
      'kv_JP': 'アイパッヨ'
    },
    {
      'ja_JP': '(アイフォーン|アイフォン|iPhone)',
      'kv_JP': 'アイヒョーン'
    },
    {
      'ja_JP': '(アンドロイド|android)',
      'kv_JP': 'アンヨヨイヨ'
    },
    {
      'ja_JP': 'arch\slinux',
      'kv_JP': 'アチョーリナクス'
    },
    {
      'ja_JP': '(アーチ|arch)',
      'kv_JP': 'アチョー'
    },
    {
      'ja_JP': '(インストール|install)',
      'kv_JP': 'インスヨッル'
    },
    {
      'ja_JP': '(インティオス|インテュオス|intuos)',
      'kv_JP': 'インチュオス'
    },
    {
      'ja_JP': '(ウィンドウズ|ウィンドーズ|windows)',
      'kv_JP': 'ウィンヨッズ'
    },
    {
      'ja_JP': '(エックスビデオズ|エックスビデオ|xvideos|xvideo)',
      'kv_JP': 'エクスヴィデオズ'
    },
    {
      'ja_JP': '(オペラ|Opera)',
      'kv_JP': 'オペッラ'
    },
    {
      'ja_JP': 'GitHub',
      'kv_JP': 'ギッヨパブ'
    },
    {
      'ja_JP': '(グラブ|GRUB)',
      'kv_JP': 'グヤブ'
    },
    {
      'ja_JP': '(シンクパッド|ThinkPad)',
      'kv_JP': 'シンクパッヨ'
    },
    {
      'ja_JP': '(ジェンツー|gentoo)',
      'kv_JP': 'ジェンツー'
    },
    {
      'ja_JP': '(ジャバスクリプト|javascript)',
      'kv_JP': 'ジャヴァスクイプヨ'
    },
    {
      'ja_JP': '(ツイッター|twitter)',
      'kv_JP': 'ツイッタ'
    },
    {
      'ja_JP': '(ツイート|tweet)',
      'kv_JP': 'ツイッヨ'
    },
    {
      'ja_JP': '(テレビ|TV)',
      'kv_JP': 'ティーヴィー'
    },
    {
      'ja_JP': '(タブレット|tablet)',
      'kv_JP': 'タヨヨッヨ'
    },
    {
      'ja_JP': '(ネクサスファイブ|Nexus5|Nexus\s5)',
      'kv_JP': 'ネクサシュファヒヨ'
    },
    {
      'ja_JP': '(バーチャルボックス|virtualbox|virtual\sbox)',
      'kv_JP': 'バチャールボクス'
    },
    {
      'ja_JP': '(ブルーレイ|bluray)',
      'kv_JP': 'ブユレイ'
    },
    {
      'ja_JP': '(プレイヤー|プレイヤ|プレーヤー|プレーヤー|player)',
      'kv_JP': 'プレイヤッ'
    },
    {
      'ja_JP': '(プッシュ|push)',
      'kv_JP': 'プッユ'
    },
    {
      'ja_JP': '(ペースト|paste)',
      'kv_JP': 'ペッスト'
    },
    {
      'ja_JP': '(ボーカロイド|vocaloid)',
      'kv_JP': 'ボーカロイヨ'
    },
    {
      'ja_JP': '(マックミニ|mac\smini|macmini)',
      'kv_JP': 'マッヨミニ'
    },
    {
      'ja_JP': '(マックブックエアー|macbookair|macbook\sair)',
      'kv_JP': 'マッヨブックエヤー'
    },
    {
      'ja_JP': '(マックブックプロ|macbookpro|macbook\spro)',
      'kv_JP': 'マッヨブックプヨ'
    },
    {
      'ja_JP': '(マックブック|macbook)',
      'kv_JP': 'マッヨブック'
    },
    {
      'ja_JP': '(マック|mac)',
      'kv_JP': 'マッヨ'
    },
    {
      'ja_JP': '(メソッド|メゾット|メゾッド)',
      'kv_JP': 'メソッヨ'
    },
    {
      'ja_JP': '(リナックス|linux)',
      'kv_JP': 'リナクス'
    },
    
    // 推測変換
    {
      'ja_JP': 'アル([カ-コガ-ゴ])',
      'kv_JP': 'オル$1'
    },
    {
      'ja_JP': 'アル',
      'kv_JP': 'アヨ'
    },
    {
      'ja_JP': '([ァ-ヶ])(ト|ド|ゴ|テ)$',
      'kv_JP': '$1ヨ'
    },
    {
      'ja_JP': '([ァ-ヶ])(ト|ド|ゴ|テ)([^ァ-ォ])',
      'kv_JP': '$1ヨ$3'
    },
    {
      'ja_JP': '([ァ-ヶ])ース',
      'kv_JP': '$1ーユ'
    },
    {
      'ja_JP': '([ァ-ヶ])テ[^ァ-ォ]',
      'kv_JP': '$1テム'
    },
    {
      'ja_JP': '/([ァ-ヶ])ロ([ァ-ヶ])',
      'kv_JP': '$1ヤ$2'
    },
    {
      'ja_JP': '([ァ-ヶ])ショ([ァ-ヶ])',
      'kv_JP': '$1ヨ$2'
    },
    {
      'ja_JP': '([ァ-ヶ])ング',
      'kv_JP': '$1ンッ'
    },
    {
      'ja_JP': '(リン)([ァ-ヶ])',
      'kv_JP': '$1ポ'
    },
    {
      'ja_JP': '([ァ-ヶ])ー',
      'kv_JP': '$1-'
    },
    {
      'ja_JP': '(、|,|。|.)',
      'kv_JP': 'っ'
    }
  ]; 
  // end of dic[]
  
  var fullKana = new Array('ヴ', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヲ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン');
  var halfKana = new Array('ヴ', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヲ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ャ', 'ュ', 'ョ', 'ッ', 'ア', 'イ', 'ウ', 'エ', 'オ', 'カ', 'キ', 'ク', 'ケ', 'コ', 'サ', 'シ', 'ス', 'セ', 'ソ', 'タ', 'チ', 'ツ', 'テ', 'ト', 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ', 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ', 'マ', 'ミ', 'ム', 'メ', 'モ', 'ヤ', 'ユ', 'ヨ', 'ラ', 'リ', 'ル', 'レ', 'ロ', 'ワ', 'ン');
  
  var regex_covconv = [];
  var regex_kana = [];
    
  function covconv(element) {
    convert(element);
    for (var childElement of element.childNodes) {
      covconv(childElement);
    }
  }
  
  function convert(element) {
    if(!isTextElement(element)){
      return;
    }
  
    var nodeValue = element.nodeValue;
    for (var i = 0; i < regex_covconv.length; i++) {
      if (nodeValue.match(regex_covconv[i])) {
        nodeValue = nodeValue.replace(regex_covconv[i], dic[i].kv_JP);
      }
    }
    nodeValue = toHalfWidth(nodeValue);
    element.nodeValue = nodeValue;
  }
  
  function isTextElement(element){
    if ('parentNode' in element && element.parentNode != null) {
      var nodeName = element.parentNode.nodeName.toLowerCase();
      if ((nodeName == 'style') || (nodeName == 'script') || (nodeName == 'frame')) {
        return false; 
      }
    }
    if (element.nodeName.toLowerCase() != '#text') {
      return false;
    }
    
    return true;
  }
  
  function toHalfWidth(nodeValue) {
    var str = nodeValue;
    for (var i = 0; i < regex_kana.length; i++) {
      str = str.replace(regex_kana[i], halfKana[i]);
    }
    return str;
  }
  
  // start 
  for (var i = 0; i < dic.length; i++) {
    regex_covconv[i] = new RegExp(dic[i].ja_JP, 'gmi');
  }
  for (var i = 0; i < fullKana.length; i++) {
    regex_kana[i] = new RegExp(fullKana[i], 'gmi');
  }
  covconv(window.document);
}) ();