Utility library for converting between Kanji, Hiragana, Katakana, and Romaji
npm install wanakanaVisit the website to see WanaKana in action.
``html`
#### Install
`shell`
npm install wanakana
#### ES Modules
`javascript`
import * as wanakana from 'wanakana';
// or
import { toKana, isRomaji } from 'wanakana';
#### Node (>=12 supported)
`javascript`
const wanakana = require('wanakana');
`javascript
/ DOM HELPERS /
// Automatically converts text using an eventListener on input
// Sets option: { IMEMode: true } with toKana() as converter by default
wanakana.bind(domElement [, options]);
// Removes event listener
wanakana.unbind(domElement);
/ TEXT CHECKING UTILITIES /
wanakana.isJapanese('泣き虫。!〜2¥zenkaku')
// => true
wanakana.isKana('あーア')
// => true
wanakana.isHiragana('すげー')
// => true
wanakana.isKatakana('ゲーム')
// => true
wanakana.isKanji('切腹')
// => true
wanakana.isKanji('勢い')
// => false
wanakana.isRomaji('Tōkyō and Ōsaka')
// => true
wanakana.toKana('ONAJI buttsuuji')
// => 'オナジ ぶっつうじ'
wanakana.toKana('座禅‘zazen’スタイル')
// => '座禅「ざぜん」スタイル'
wanakana.toKana('batsuge-mu')
// => 'ばつげーむ'
wanakana.toKana('wanakana', { customKanaMapping: { na: 'に', ka: 'bana' }) });
// => 'わにbanaに'
wanakana.toHiragana('toukyou, オオサカ')
// => 'とうきょう、 おおさか'
wanakana.toHiragana('only カナ', { passRomaji: true })
// => 'only かな'
wanakana.toHiragana('wi', { useObsoleteKana: true })
// => 'ゐ'
wanakana.toKatakana('toukyou, おおさか')
// => 'トウキョウ、 オオサカ'
wanakana.toKatakana('only かな', { passRomaji: true })
// => 'only カナ'
wanakana.toKatakana('wi', { useObsoleteKana: true })
// => 'ヰ'
wanakana.toRomaji('ひらがな カタカナ')
// => 'hiragana katakana'
wanakana.toRomaji('ひらがな カタカナ', { upcaseKatakana: true })
// => 'hiragana KATAKANA'
wanakana.toRomaji('つじぎり', { customRomajiMapping: { じ: 'zi', つ: 'tu', り: 'li' }) };
// => 'tuzigili'
/ EXTRA UTILITIES /
wanakana.stripOkurigana('お祝い')
// => 'お祝'
wanakana.stripOkurigana('踏み込む')
// => '踏み込'
wanakana.stripOkurigana('お腹', { leading: true });
// => '腹'
wanakana.stripOkurigana('ふみこむ', { matchKanji: '踏み込む' });
// => 'ふみこ'
wanakana.stripOkurigana('おみまい', { matchKanji: 'お祝い', leading: true });
// => 'みまい'
wanakana.tokenize('ふふフフ')
// => ['ふふ', 'フフ']
wanakana.tokenize('hello 田中さん')
// => ['hello', ' ', '田中', 'さん']
wanakana.tokenize('I said 私はすごく悲しい', { compact: true })
// => [ 'I said ', '私はすごく悲しい']
`
Only the browser build via unpkg or the root wanakana.min.js includes polyfills for older browsers.
Please see CONTRIBUTING.md
* Mims H. Wright – Author
* Duncan Bay – Author
* Geggles – Contributor
* James McNamee – Contributor
Project sponsored by Tofugu & WaniKani
The following ports have been created by the community:
* Python (Starwort/wanakana-py) on PyPI as wanakana-python`
* Java (MasterKale/WanaKanaJava)
* Rust (PSeitz/wana_kana_rust)
* Swift (profburke/WanaKanaSwift)
* Kotlin (esnaultdev/wanakana-kt)
* C# (kmoroz/WanaKanaShaapu)
* Go (deelawn/wanakana)