From 2d80feeae9759c51bec68aac14261c2b66ef1886 Mon Sep 17 00:00:00 2001 From: wareya Date: Mon, 13 May 2019 22:16:54 -0400 Subject: [PATCH] hacky support for looking up words with no jmdict entries, as long as they don't require deconjugation --- background-script.js | 50 ++++++++++++++++++++++++++++++++++---------- texthook.js | 8 +++++-- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/background-script.js b/background-script.js index 47e2c4c..955f5c2 100644 --- a/background-script.js +++ b/background-script.js @@ -128,6 +128,25 @@ async function migrate_legacy_then_refresh() migrate_legacy_then_refresh(); +function json_lookup_arbitrary_as_is(dict, text) +{ + let index = dict.lookup_json_kan.get(text); + if(index === undefined) + index = dict.lookup_json_kana.get(text); + if(index === undefined) + return undefined; + return copy(dict.entries[index]); +} +function json_dict_any_as_is(text) +{ + for(let dict of json_dicts) + { + let ret = json_lookup_arbitrary_as_is(dict, text); + if(ret !== undefined) + return ret; + } + return undefined; +} let dict = []; let lookup_kan = new Map(); @@ -404,6 +423,26 @@ function search(text) if(ret) return ret; ret = search_inner(replace_kata_with_hira(text)); if(ret) return ret; + ret = json_dict_any_as_is(text); + if(ret) + { + let r_ele = [{reb: ret.r}]; + let k_ele = []; + let seq = "NONE_"+text; + let sense = [{gloss: [], pos: []}]; + for(let spelling of ret.s) + { + if(spelling == "" || is_kana(spelling)) + continue; + k_ele.push({keb: spelling}); + } + let re_ret = undefined; + if(k_ele != []) + re_ret = [{k_ele: k_ele, r_ele: r_ele, seq: seq, sense: sense, from: text, found: k_ele[0]}]; + else + re_ret = [{r_ele: r_ele, seq: seq, sense: sense, from: text, found: r_ele[0]}]; + return re_ret; + } } // deconjugation rules @@ -841,16 +880,6 @@ function json_lookup_kana_inexact(dict, kana) return possibilities; } -function json_lookup_arbitrary_as_is(dict, text) -{ - let index = dict.lookup_json_kan.get(text); - if(index === undefined) - index = dict.lookup_json_kana.get(text); - if(index === undefined) - return undefined; - return copy(dict.entries[index]); -} - function add_json_info(lookups, other_settings) { for(let lookup of lookups) @@ -935,7 +964,6 @@ function add_json_info(lookups, other_settings) } - function is_kana(object) { if(object.seq && object.k_ele) diff --git a/texthook.js b/texthook.js index fb13774..bf97e67 100644 --- a/texthook.js +++ b/texthook.js @@ -437,7 +437,7 @@ function elementize_jmdict_defs(goodsenses) else lastpos = sense.pos; - if(sense.pos) + if(sense.pos && sense.pos.length > 0) { let part = document.createElement("span"); part.className = "nazeka_pos"; @@ -985,7 +985,11 @@ function build_div_inner(text, result, moreText, index, first_of_many = false) let definition = document.createElement("div"); definition.className = "nazeka_definitions"; - let jmdict_div = elementize_jmdict_defs(term.sense); + let jmdict_div = undefined; + if(typeof term.seq == "string" && term.seq.startsWith("NONE_")) + jmdict_div = document.createElement("div"); + else + jmdict_div = elementize_jmdict_defs(term.sense); let json_div = elementize_json_defs(term.json); if (settings.definitions_mode == 0 || (settings.normal_definitions_in_mining && mining_ui_exists())) // normal