JavaScriptおよびGOST-7.79-2000のTranslit



翻訳は女性のようなものです。もし彼らが美しいなら、それは間違っています。本当なら、いです。

モリッツ・ゴットリーブ
公益事業
編集者: Far Manager 3.0ビルド4545 x86
コンパイラー: Microsoft JScript 5.8.18205

Node.js v0.12.0

SpiderMonkey-1.8.5
フォーマッター: js-beautify v1.5.4

芸術的なスタイル2.04
オプティマイザー: Google Closure Compiler v20160208
リンター: JavaScript Lint 0.3.0(Matthias Miller)

Google Closure linter 2.3.17
参照資料
情報: Wiki

GOST PDF
リポジトリ: Github

Npmjs
ソースコード
/* jshint -W100 */ /** * @name translit.js * @author XGuest <xguest@list.ru> * @link https://github.com/xguest/iso_9_js * @version 1.0.4 * @copyright GPL applies. * No warranties XGuest[28.03.2016/07:59:18] translit [ver.1.0.4] * #guid {E7088033-479F-47EF-A573-BBF3520F493C} * * @description     *  ISO 9:1995   7.79-2000     * * @param {String} str   * @param {Number} typ ±  ()  * +      * -  * system A = 1-; * system B = 2-;3-;4-;5-;6-; * @example * function example() { * var a, b = [ * [], * ["", "     ,    !"], * ["", "'і   і і ,  і  !"], * ["", "     ,      !"], * ["", "Ј ќ     ,  ј ј!"], * ["", "     ,    !"], * ["ї", "'ї   '  ,    !"] * ], c, d; * for(a = 1; a < b.length - 1; a++) { * c = b[a][0]; // Language * d = b[a][1]; // Source * e = translit(d, a); // Forward * console.log( * "%s - %s\nSource : %s\nTranslit: %s\nReverse : %s\n", * c, // Language * translit(c, a), // Transliterated language * d, // Source * e, // Forward * translit(e, -1 * a) // Reverse * ); * } * }; **/ function translit(str, typ) { var func = (function(typ) { /** Function Expression *  . * * FINISHED TESTED! *      . * *   . *    2 : *   . *  -  (  ). * * @param {Number} typ * @return {Array}      . **/ function prep (a) { var write = !a ? function(chr, row) {trantab[row] = chr;regarr.push(row);} : function(row, chr) {trantab[row] = chr;regarr.push(row);}; return function(col, row) { //    RegExp var chr = col[abs] || col[0]; //  if (chr) write(chr, row); //    } } var abs = Math.abs(typ); //    if (typ === abs) { //     str = str.replace(/(i(?=.[^\s]+))/ig, '$1`'); // "i`"  . .  . return [prep(), //    function(str) { // str -  . return str.replace(/i``/ig, 'i`'). // "i`"   . .  . replace(/((c)z)(?=[ieyj])/ig, '$1'); // "cz"   "c" }]; } else { //     str = str.replace(/(c)(?=[ieyj])/ig, '$1z'); //   "cz" return [prep(1),function(str) {return str;}];// nop -  . } }(typ)); var iso9 = { //    //  -  // 0 -    // 1 -  4 - MK|MKD -  // 2 - BY|BLR -  5 - RU|RUS -  // 3 - BG|BGR -  6 - UA|UKR -  /*----------0-,-------1-,---2-,---3-,---4-,----5-,---6-*/ '\u0449': [ '', '\u015D', '','sth', '', 'shh','shh'], // '' '\u044F': [ '', '\u00E2', 'ya', 'ya', '', 'ya', 'ya'], // '' '\u0454': [ '', '\u00EA', '', '', '', '', 'ye'], // 'є' '\u0463': [ '', '\u011B', '', 'ye', '', 'ye', ''], //  '\u0456': [ '', '\u00EC', 'i', 'i`', '', 'i`', 'i'], // 'і'  '\u0457': [ '', '\u00EF', '', '', '', '', 'yi'], // 'ї' '\u0451': [ '', '\u00EB', 'yo', '', '', 'yo', ''], // '' '\u044E': [ '', '\u00FB', 'yu', 'yu', '', 'yu', 'yu'], // '' '\u0436': [ 'zh','\u017E'], // '' '\u0447': [ 'ch','\u010D'], // '' '\u0448': [ 'sh', '\u0161', '', '', '', '', ''], // '' '\u0473': [ '','f\u0300', '', 'fh', '', 'fh', ''], //  '\u045F': [ '','d\u0302', '', '', 'dh', '', ''], // 'џ' '\u0491': [ '','g\u0300', '', '', '', '', 'g`'], // 'ґ' '\u0453': [ '', '\u01F5', '', '', 'g`', '', ''], // 'ѓ' '\u0455': [ '', '\u1E91', '', '', 'z`', '', ''], // 'ѕ' '\u045C': [ '', '\u1E31', '', '', 'k`', '', ''], // 'ќ' '\u0459': [ '','l\u0302', '', '', 'l`', '', ''], // 'љ' '\u045A': [ '','n\u0302', '', '', 'n`', '', ''], // 'њ' '\u044D': [ '', '\u00E8', 'e`', '', '', 'e`', ''], // '' '\u044A': [ '', '\u02BA', '', 'a`', '', '``', ''], // '' '\u044B': [ '', 'y', 'y`', '', '', 'y`', ''], // '' '\u045E': [ '', '\u01D4', 'u`', '', '', '', ''], // 'ў' '\u046B': [ '', '\u01CE', '', 'o`', '', '', ''], //  '\u0475': [ '', '\u1EF3', '', 'yh', '', 'yh', ''], //  '\u0446': [ 'cz', 'c'], // '' '\u0430': [ 'a'], // '' '\u0431': [ 'b'], // '' '\u0432': [ 'v'], // '' '\u0433': [ 'g'], // '' '\u0434': [ 'd'], // '' '\u0435': [ 'e'], // '' '\u0437': [ 'z'], // '' '\u0438': [ '', 'i', '', 'i', 'i', 'i', 'y`'], // '' '\u0439': [ '', 'j', 'j', 'j', '', 'j', 'j'], // '' '\u043A': [ 'k'], // '' '\u043B': [ 'l'], // '' '\u043C': [ 'm'], // '' '\u043D': [ 'n'], // '' '\u043E': [ 'o'], // '' '\u043F': [ 'p'], // '' '\u0440': [ 'r'], // '' '\u0441': [ 's'], // '' '\u0442': [ 't'], // '' '\u0443': [ 'u'], // '' '\u0444': [ 'f'], // '' '\u0445': [ 'x', 'h'], // '' '\u044C': [ '', '\u02B9', '`', '`', '', '`', '`'], // '' '\u0458': [ '','j\u030C', '', '', 'j', '', ''], // 'ј' '\u2019': [ '\'','\u02BC'], // ''' '\u2116': [ '#'] // '№' /*----------0-,-------1-,---2-,---3-,---4-,----5-,---6-*/ }, regarr = [], trantab = {}; /* jshint -W030 */ //     RegExp for (var row in iso9) {if (Object.hasOwnProperty.call(iso9, row)) {func[0](iso9[row], row);}} /* jshint +W030 */ return func[1]( //  -  (  ..) str.replace( //  new RegExp(regarr.join('|'), 'gi'),//  RegExp   function(R) { // CallBack  RegExp if (R.toLowerCase() === R) { //      return trantab[R]; } else { return trantab[R.toLowerCase()].toUpperCase(); } })); } module.exports = translit;
      
      



インターネット上の音訳について多くのことが書かれていますが、Habrahabrはそれを見つけませんでした。

JavaScriptのシステムAおよびBのISO 9:1995 7.79-2000標準に対応する、文字変換コードを書き直すことにしました。

ロシア語、ベラルーシ語、ウクライナ語、ブルガリア語、マケドニア語をサポートしています。

ロシア、アルメニア、アゼルバイジャン、ベラルーシ、カザフスタン、キルギスタン、タジキスタン、トルクメニスタン、ウズベキスタンで使用されています。



使用の印象:もちろん、コードを単純化できます。音声規則は十分ではありませんが、標準に従う必要があります。



コメント、コメント、提案を待っています。



PS

2015年2月21日-コードについてコメントしました。

2015年2月22日-パッケージの最初のバージョンを収集しました。ご協力いただきありがとうございます。

2015/02/23-変数の名前が変更されました。

05/18/2015-JSDocにより追加。



All Articles