diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-01-22 21:43:38 -0500 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-01-24 20:15:25 -0500 |
commit | 1fa8a596266340606de3b090f0081f8ed1627065 (patch) | |
tree | d53e909b6fb54b54c13243637f0f28fd33cdc982 | |
parent | 9b509d50a94110f92ac52db2ff9566d1104e33c6 (diff) |
Create new character/string testing functions
-rw-r--r-- | ext/mixed/js/japanese.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/ext/mixed/js/japanese.js b/ext/mixed/js/japanese.js index 956d246a..98ce9fc4 100644 --- a/ext/mixed/js/japanese.js +++ b/ext/mixed/js/japanese.js @@ -112,6 +112,58 @@ const JP_JAPANESE_RANGES = [ ]; +// Helper functions + +function _jpIsCharCodeInRanges(charCode, ranges) { + for (const [min, max] of ranges) { + if (charCode >= min && charCode <= max) { + return true; + } + } + return false; +} + + +// Character code testing functions + +function jpIsCharCodeKanji(charCode) { + return _jpIsCharCodeInRanges(charCode, JP_CJK_RANGES); +} + +function jpIsCharCodeKana(charCode) { + return _jpIsCharCodeInRanges(charCode, JP_KANA_RANGES); +} + +function jpIsCharCodeJapanese(charCode) { + return _jpIsCharCodeInRanges(charCode, JP_JAPANESE_RANGES); +} + + +// String testing functions + +function jpIsStringEntirelyKana(str) { + if (str.length === 0) { return false; } + for (let i = 0, ii = str.length; i < ii; ++i) { + if (!jpIsCharCodeKana(str.charCodeAt(i))) { + return false; + } + } + return true; +} + +function jpIsStringPartiallyJapanese(str) { + if (str.length === 0) { return false; } + for (let i = 0, ii = str.length; i < ii; ++i) { + if (jpIsCharCodeJapanese(str.charCodeAt(i))) { + return true; + } + } + return false; +} + + +// Old character/string testing functions + function jpIsKanji(c) { const code = c.charCodeAt(0); return ( @@ -155,6 +207,9 @@ function jpIsAnyCharacterJapanese(text) { return false; } + +// Conversion functions + function jpKatakanaToHiragana(text) { let result = ''; for (const c of text) { |