diff options
Diffstat (limited to 'ext/bg/js')
| -rw-r--r-- | ext/bg/js/options.js | 2 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 13 | ||||
| -rw-r--r-- | ext/bg/js/util.js | 22 | ||||
| -rw-r--r-- | ext/bg/js/yomichan.js | 2 | 
4 files changed, 29 insertions, 10 deletions
| diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js index 49544840..1ea6ed68 100644 --- a/ext/bg/js/options.js +++ b/ext/bg/js/options.js @@ -40,6 +40,7 @@ function formRead() {          optionsNew.scanning.middleMouse = $('#middle-mouse-button-scan').prop('checked');          optionsNew.scanning.selectText = $('#select-matched-text').prop('checked');          optionsNew.scanning.imposter = $('#search-form-text-fields').prop('checked'); +        optionsNew.scanning.alphanumeric = $('#search-alphanumeric').prop('checked');          optionsNew.scanning.delay = parseInt($('#scan-delay').val(), 10);          optionsNew.scanning.length = parseInt($('#scan-length').val(), 10); @@ -127,6 +128,7 @@ $(document).ready(() => {          $('#middle-mouse-button-scan').prop('checked', options.scanning.middleMouse);          $('#select-matched-text').prop('checked', options.scanning.selectText);          $('#search-form-text-fields').prop('checked', options.scanning.imposter); +        $('#search-alphanumeric').prop('checked', options.scanning.alphanumeric);          $('#scan-delay').val(options.scanning.delay);          $('#scan-length').val(options.scanning.length); diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 67430aef..b3b90641 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -41,10 +41,17 @@ class Translator {          });      } -    findTerms(text, dictionaries, softKatakana) { +    findTerms(text, dictionaries, softKatakana, alphanumeric) {          const titles = Object.keys(dictionaries);          const cache = {}; +        if (!alphanumeric && text.length > 0) { +            const c = text[0]; +            if (!jpIsKana(c) && !jpIsKanji(c)) { +                return Promise.resolve({length: 0, definitions: []}); +            } +        } +          return this.findTermsDeinflected(text, titles, cache).then(deinfLiteral => {              const textHiragana = wanakana._katakanaToHiragana(text);              if (text !== textHiragana && softKatakana) { @@ -84,8 +91,8 @@ class Translator {          });      } -    findTermsGrouped(text, dictionaries, softKatakana) { -        return this.findTerms(text, dictionaries, softKatakana).then(({length, definitions}) => { +    findTermsGrouped(text, dictionaries, softKatakana, alphanumeric) { +        return this.findTerms(text, dictionaries, softKatakana, alphanumeric).then(({length, definitions}) => {              return {length, definitions: dictTermsGroup(definitions, dictionaries)};          });      } diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 64143ffe..09337c63 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -31,6 +31,20 @@ function promiseCallback(promise, callback) {  /* + * Japanese + */ + +function jpIsKanji(c) { +    const code = c.charCodeAt(0); +    return code >= 0x4e00 && code < 0x9fb0 || code >= 0x3400 && code < 0x4dc0; +} + +function jpIsKana(c) { +    return wanakana.isKana(c); +} + + +/*   * Commands   */ @@ -98,6 +112,7 @@ function optionsSetDefaults(options) {              middleMouse: true,              selectText: true,              imposter: true, +            alphanumeric: true,              delay: 15,              length: 10          }, @@ -489,14 +504,9 @@ function jsonLoadDb(indexUrl, indexLoaded, termsLoaded, kanjiLoaded) {   */  function handlebarsKanjiLinks(options) { -    const isKanji = c => { -        const code = c.charCodeAt(0); -        return code >= 0x4e00 && code < 0x9fb0 || code >= 0x3400 && code < 0x4dc0; -    }; -      let result = '';      for (const c of options.fn(this)) { -        if (isKanji(c)) { +        if (jpIsKanji(c)) {              result += `<a href="#" class="kanji-link">${c}</a>`;          } else {              result += c; diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 51e05c80..172bb1d3 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -107,7 +107,7 @@ window.yomichan = new class {              this.translator.findTermsGrouped.bind(this.translator) :              this.translator.findTerms.bind(this.translator); -        return searcher(text, dictEnabledSet(this.options), this.options.general.softKatakana).then(({definitions, length}) => { +        return searcher(text, dictEnabledSet(this.options), this.options.general.softKatakana, this.options.scanning.alphanumeric).then(({definitions, length}) => {              return {length, definitions: definitions.slice(0, this.options.general.maxResults)};          });      } |