add option to disable searching of alphanumeric text, fixes #47
This commit is contained in:
parent
56fe02e945
commit
e661c4bd43
@ -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);
|
||||
|
||||
|
@ -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)};
|
||||
});
|
||||
}
|
||||
|
@ -30,6 +30,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;
|
||||
|
@ -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)};
|
||||
});
|
||||
}
|
||||
|
@ -93,6 +93,10 @@
|
||||
<label><input type="checkbox" id="search-form-text-fields"> Search form text fields</label>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" id="search-alphanumeric"> Search alphanumeric text</label>
|
||||
</div>
|
||||
|
||||
<div class="form-group options-advanced">
|
||||
<label for="scan-delay">Scan delay</label>
|
||||
<input type="number" min="1" id="scan-delay" class="form-control">
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "Yomichan",
|
||||
"version": "1.1.13",
|
||||
"version": "1.1.14",
|
||||
|
||||
"description": "Japanese dictionary with Anki integration",
|
||||
"icons": {"16": "mixed/img/icon16.png", "48": "mixed/img/icon48.png", "128": "mixed/img/icon128.png"},
|
||||
|
Loading…
Reference in New Issue
Block a user