From cac6fc1427106420b28777d94907bf27ab1995a3 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sun, 24 Apr 2016 18:59:29 -0700 Subject: [PATCH] Basic kanji output --- ext/bg/js/dictionary.js | 13 +++++++++---- ext/bg/js/templates.js | 13 +++++++++++++ ext/bg/js/translator.js | 6 +++--- ext/bg/js/yomichan.js | 2 +- ext/fg/js/client.js | 23 ++++++++++++----------- 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index 90a40ee5..cc7b507c 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -74,11 +74,16 @@ class Dictionary { findKanji(kanji) { const results = []; - for (const name in this.termDicts) { - const def = this.termDicts[name][kanji]; + for (const name in this.kanjiDicts) { + const def = this.kanjiDicts[name][kanji]; if (def) { - const [c, k, o, g] = def; - results.push({id: index, character: c, kunyomi: k, onyomi: o, glossary: g}); + const [k, o, g] = def; + results.push({ + character: kanji, + kunyomi: k.split(' '), + onyomi: o.split(' '), + glossary: g + }); } } diff --git a/ext/bg/js/templates.js b/ext/bg/js/templates.js index 1c14e569..1133e41a 100644 --- a/ext/bg/js/templates.js +++ b/ext/bg/js/templates.js @@ -34,6 +34,19 @@ templates['kanji-link.html'] = template({"compiler":[7,">= 4.0.0"],"main":functi + container.escapeExpression(((helper = (helper = helpers.kanji || (depth0 != null ? depth0.kanji : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : {},{"name":"kanji","hash":{},"data":data}) : helper))) + "\n"; },"useData":true}); +templates['kanji-list.html'] = template({"1":function(container,depth0,helpers,partials,data) { + var stack1; + + return "
\n" + + ((stack1 = container.invokePartial(partials["kanji.html"],depth0,{"name":"kanji.html","data":data,"indent":" ","helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "") + + "
\n"; +},"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { + var stack1; + + return ((stack1 = container.invokePartial(partials["header.html"],depth0,{"name":"header.html","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : "") + + ((stack1 = helpers.each.call(depth0 != null ? depth0 : {},(depth0 != null ? depth0.defs : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + ((stack1 = container.invokePartial(partials["footer.html"],depth0,{"name":"footer.html","data":data,"helpers":helpers,"partials":partials,"decorators":container.decorators})) != null ? stack1 : ""); +},"usePartial":true,"useData":true}); templates['term.html'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, helper, options, alias1=depth0 != null ? depth0 : {}, alias2=helpers.helperMissing, alias3="function", buffer = "
"; diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js index 6be80581..606f6ec5 100644 --- a/ext/bg/js/translator.js +++ b/ext/bg/js/translator.js @@ -131,11 +131,11 @@ class Translator { } findKanji(text) { - let results = []; - + let results = []; const processed = {}; + for (const c of text) { - if (!processed.has(c)) { + if (!processed[c]) { results = results.concat(this.dictionary.findKanji(c)); processed[c] = true; } diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 7c802675..ac02f882 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -50,7 +50,7 @@ class Yomichan { onMessage(request, sender, callback) { const {action, data} = request, handlers = { - findKanji: ({text}) => this.translator.onFindKanji(text), + findKanji: ({text}) => this.translator.findKanji(text), findTerm: ({text}) => this.translator.findTerm(text), getState: () => this.state, getOptions: () => this.options, diff --git a/ext/fg/js/client.js b/ext/fg/js/client.js index 7f07d918..2355cf81 100644 --- a/ext/fg/js/client.js +++ b/ext/fg/js/client.js @@ -26,6 +26,7 @@ class Client { this.activateBtn = 2; this.enabled = false; this.options = {}; + this.fgRoot = chrome.extension.getURL('fg'); chrome.runtime.onMessage.addListener(this.onBgMessage.bind(this)); window.addEventListener('message', this.onFrameMessage.bind(this)); @@ -101,14 +102,8 @@ class Client { this.hidePopup(); } else { range.setLength(length); - - const params = { - defs: results, - root: chrome.extension.getURL('fg') - }; - renderText( - params, + {defs: results, root: this.fgRoot}, 'term-list.html', (content) => this.showPopup(range, content) ); @@ -116,6 +111,16 @@ class Client { }); } + displayKanji(kanji) { + findKanji(kanji, (results) => { + renderText( + {defs: results, root: this.fgRoot}, + 'kanji-list.html', + (content) => this.popup.setContent(content) + ); + }); + } + showPopup(range, content) { this.popup.showNextTo(range.getRect(), content); @@ -136,10 +141,6 @@ class Client { this.lastRange = null; } - displayKanji(kanji) { - this.popup.setContent(kanji); - } - setEnabled(enabled) { if (!(this.enabled = enabled)) { this.hidePopup();