Comparing version 0.1.0 to 0.1.1
@@ -1,2 +0,2 @@ | ||
var map1 = { | ||
var hiraganaMonographs = { | ||
"あ": "A", "い": "I", "う": "U", "え": "E", "お": "O", | ||
@@ -11,3 +11,3 @@ "か": "KA", "き": "KI", "く": "KU", "け": "KE", "こ": "KO", | ||
"ら": "RA", "り": "RI", "る": "RU", "れ": "RE", "ろ": "RO", | ||
"わ": "WA", "ゐ": "I", "'ゑ": "E", "を": "O", "ん": "N", | ||
"わ": "WA", "ゐ": "I", "ゑ": "E", "を": "O", "ん": "N", | ||
"が": "GA", "ぎ": "GI", "ぐ": "GU", "げ": "GE", "ご": "GO", | ||
@@ -20,3 +20,3 @@ "ざ": "ZA", "じ": "JI", "ず": "ZU", "ぜ": "ZE", "ぞ": "ZO", | ||
var map2 = { | ||
var hiraganaDigraphs = { | ||
"きゃ": "KYA", "きゅ": "KYU", "きょ": "KYO", | ||
@@ -35,10 +35,49 @@ "しゃ": "SHA", "しゅ": "SHU", "しょ": "SHO", | ||
exports.fromHiragana = function(str) { | ||
var katakanaMonographs = { | ||
"ア": "A", "イ": "I", "ウ": "U", "エ": "E", "オ": "O", | ||
"カ": "KA", "キ": "KI", "ク": "KU", "ケ": "KE", "コ": "KO", | ||
"サ": "SA", "シ": "SHI", "ス": "SU", "セ": "SE", "ソ": "SO", | ||
"タ": "TA", "チ": "CHI", "ツ": "TSU", "テ": "TE", "ト": "TO", | ||
"ナ": "NA", "ニ": "NI", "ヌ": "NU", "ネ": "NE", "ノ": "NO", | ||
"ハ": "HA", "ヒ": "HI", "フ": "FU", "ヘ": "HE", "ホ": "HO", | ||
"マ": "MA", "ミ": "MI", "ム": "MU", "メ": "ME", "モ": "MO", | ||
"ヤ": "YA", "ユ": "YU", "ヨ": "YO", | ||
"ラ": "RA", "リ": "RI", "ル": "RU", "レ": "RE", "ロ": "RO", | ||
"ワ": "WA", "ヰ": "I", "ヱ": "E", "ヲ": "O", "ン": "N", | ||
"ガ": "GA", "ギ": "GI", "グ": "GU", "ゲ": "GE", "ゴ": "GO", | ||
"ザ": "ZA", "ジ": "JI", "ズ": "ZU", "ゼ": "ZE", "ゾ": "ZO", | ||
"ダ": "DA", "ヂ": "JI", "ヅ": "ZU", "デ": "DE", "ド": "DO", | ||
"バ": "BA", "ビ": "BI", "ブ": "BU", "ベ": "BE", "ボ": "BO", | ||
"パ": "PA", "ピ": "PI", "プ": "PU", "ペ": "PE", "ポ": "PO" | ||
}; | ||
var katakanaDigraphs = { | ||
"キャ": "KYA", "キュ": "KYU", "キョ": "KYO", | ||
"シャ": "SHA", "シュ": "SHU", "ショ": "SHO", | ||
"チャ": "CHA", "チュ": "CHU", "チョ": "CHO", | ||
"ニャ": "NYA", "ニュ": "NYU", "ニョ": "NYO", | ||
"ヒャ": "HYA", "ヒュ": "HYU", "ヒョ": "HYO", | ||
"ミャ": "MYA", "ミュ": "MYU", "ミョ": "MYO", | ||
"リャ": "RYA", "リュ": "RYU", "リョ": "RYO", | ||
"ギャ": "GYA", "ギュ": "GYU", "ギョ": "GYO", | ||
"ジャ": "JA", "ジュ": "JU", "ジョ": "JO", | ||
"ビャ": "BYA", "ビュ": "BYU", "ビョ": "BYO", | ||
"ピャ": "PYA", "ピュ": "PYU", "ピョ": "PYO" | ||
}; | ||
exports.fromKana = function(str) { | ||
// Initial transliteration | ||
for (var key2 in map2) { | ||
str = str.replace(new RegExp(key2, "g"), map2[key2]); | ||
var key; | ||
for (key in hiraganaDigraphs) { | ||
str = str.replace(new RegExp(key, "g"), hiraganaDigraphs[key]); | ||
} | ||
for (var key1 in map1) { | ||
str = str.replace(new RegExp(key1, "g"), map1[key1]); | ||
for (key in katakanaDigraphs) { | ||
str = str.replace(new RegExp(key, "g"), katakanaDigraphs[key]); | ||
} | ||
for (key in hiraganaMonographs) { | ||
str = str.replace(new RegExp(key, "g"), hiraganaMonographs[key]); | ||
} | ||
for (key in katakanaMonographs) { | ||
str = str.replace(new RegExp(key, "g"), katakanaMonographs[key]); | ||
} | ||
// Correct use of sokuon | ||
@@ -49,3 +88,8 @@ str = str.replace(/っC/g, "TC").replace(/っ(.)/g, "$1$1"); | ||
// Correct long vowels | ||
return str.replace(/O[OU]/g, "O").replace(/UU/g, "U"); | ||
str = str.replace(/O[OU]/g, "O").replace(/UU/g, "U"); | ||
// Ignore use of choonpu and tsu | ||
return str.replace(/[ーッ]/g, ""); | ||
}; | ||
// fromHiragana method deprecated in v0.1.1 and will be removed in v0.2.0 | ||
exports.fromHiragana = exports.fromKana; |
{ | ||
"name": "hepburn", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"main": "./lib/hepburn", | ||
"description": "Convert Japanese Hiragana to romaji using Hepburn romanisation", | ||
"description": "Convert Japanese Hiragana and Katakana script to Romaji using Hepburn romanisation", | ||
"repository": { | ||
@@ -22,3 +22,4 @@ "type": "git", | ||
"hiragana", | ||
"katakana" | ||
"katakana", | ||
"romaji" | ||
], | ||
@@ -25,0 +26,0 @@ "author": "Lovell Fuller", |
@@ -1,26 +0,30 @@ | ||
hepburn | ||
======= | ||
# Hepburn | ||
Node.js module for converting Japanese Hiragana to romaji using [Hepburn romanisation](http://en.wikipedia.org/wiki/Hepburn_romanization). | ||
<a href="http://www.flickr.com/photos/fpcorazza/366135465/" target="_blank"><img src="https://farm1.staticflickr.com/151/366135465_38a9464f5a_m.jpg" title="Illustration © Fabio Paiva Corazza 2007" align="right"></a> | ||
Based on Takaaki Komura's [kana2hepburn](https://github.com/emon/kana2hepburn) written in Ruby. | ||
Node.js module for converting Japanese Hiragana and Katakana script to Romaji using [Hepburn romanisation](http://en.wikipedia.org/wiki/Hepburn_romanization). | ||
# Install | ||
Based partly on Takaaki Komura's [kana2hepburn](https://github.com/emon/kana2hepburn). | ||
> `npm install hepburn` | ||
## Install | ||
# Usage | ||
npm install hepburn | ||
> `var hepburn = require("hepburn"); | ||
> var text = hepburn.fromHiragana("ひらがな");` | ||
## Usage | ||
In this example `text` will have the value `HIRAGANA`. | ||
```javascript | ||
var hepburn = require("hepburn"); | ||
var hirigana = hepburn.fromKana("ひらがな"); | ||
var katakana = hepburn.fromKana("カタカナ"); | ||
``` | ||
# Testing | ||
In this example `hirigana` will have the value `HIRAGANA` and `katakana` will have the value `KATAKANA`. | ||
## Testing [](https://travis-ci.org/lovell/hepburn) | ||
Run the unit tests with: | ||
> `node tests/all` | ||
node tests/all | ||
# Licence | ||
## Licence | ||
@@ -27,0 +31,0 @@ Copyright 2013 Lovell Fuller |
var assert = require("assert"); | ||
var hepburn = require("../lib/hepburn"); | ||
var tests = { | ||
var hiraganaTests = { | ||
"ひらがな": "HIRAGANA", | ||
@@ -23,7 +23,19 @@ "あいうえお かきくけこ": "AIUEO KAKIKUKEKO", | ||
"とおる": "TORU", | ||
"さいとう": "SAITO" | ||
"さいとう": "SAITO", | ||
"こんにちは": "KONNICHIHA" | ||
}; | ||
for (var hiragana in tests) { | ||
assert.equal(hepburn.fromHiragana(hiragana), tests[hiragana], "Conversion failed"); | ||
var katakanaTests = { | ||
"カタカナ": "KATAKANA", | ||
"チャーシュー": "CHASHU", | ||
"ちぢむ": "CHIJIMU", | ||
"マッモト": "MAMOTO" | ||
}; | ||
for (var hiragana in hiraganaTests) { | ||
assert.equal(hepburn.fromKana(hiragana), hiraganaTests[hiragana], "Hirigana conversion failed"); | ||
} | ||
for (var katakana in katakanaTests) { | ||
assert.equal(hepburn.fromKana(katakana), katakanaTests[katakana], "Katakana conversion failed"); | ||
} |
7539
6
122
42