aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2016-03-20 18:45:37 -0700
committerAlex Yatskov <alex@foosoft.net>2016-03-20 18:45:37 -0700
commit1ed2e70c6ff9e4a6af421444e50bba41950c2210 (patch)
tree93385f606d610d719a76423ecd9dd01f40243eaa
parentc242e49c7f10943c2a9515e8b60f0b675a992573 (diff)
WIP
-rw-r--r--ext/jp/translator.js81
1 files changed, 80 insertions, 1 deletions
diff --git a/ext/jp/translator.js b/ext/jp/translator.js
index 4086a5bc..23f45113 100644
--- a/ext/jp/translator.js
+++ b/ext/jp/translator.js
@@ -49,6 +49,85 @@ class Translator {
}
});
}
+
+ findTerm(text) {
+ const groups = {}
+ for (let i = text.length; i >= 0; --i) {
+ const term = text.slice(0, i);
+
+ const deinflections = this.deinflector.deinflect(term, this.validator);
+ if (deinflections === null) {
+ this.processTerm(groups, term);
+ } else {
+ for (const deinflection of deinflections) {
+ //fix
+ //this.processTerm(groups, **deinflection);
+ }
+ }
+
+ const results =
+ }
+
+
+ // text = util.sanitize(text, wildcards=wildcards)
+
+ // groups = dict()
+ // for i in xrange(len(text), 0, -1):
+ // term = text[:i]
+ // deinflections = self.deinflector.deinflect(term, self.validator)
+ // if deinflections is None:
+ // self.processTerm(groups, term, wildcards=wildcards)
+ // else:
+ // for deinflection in deinflections:
+ // self.processTerm(groups, **deinflection)
+
+ // results = map(self.formatResult, groups.items())
+ // results = filter(operator.truth, results)
+ // results = sorted(results, key=lambda d: (len(d['source']), 'P' in d['tags'], -len(d['rules'])), reverse=True)
+
+ // length = 0
+ // for result in results:
+ // length = max(length, len(result['source']))
+
+ // return results, length
+ }
+
+ findKanji(text) {
+ // text = util.sanitize(text, kana=False)
+ // results = list()
+
+ // processed = dict()
+ // for c in text:
+ // if c not in processed:
+ // match = self.dictionary.findCharacter(c)
+ // if match is not None:
+ // results.append(match)
+ // processed[c] = match
+
+ // return results
+ }
+
+ processTerm(groups, source, rules=[], root='') {
+ // root = root or source
+
+ // for entry in self.dictionary.findTerm(root, wildcards):
+ // key = entry['expression'], entry['reading'], entry['glossary']
+ // if key not in groups:
+ // groups[key] = entry['tags'], source, rules
+ }
+
+ formatResult(group) {
+ // root = root or source
+
+ // for entry in self.dictionary.findTerm(root, wildcards):
+ // key = entry['expression'], entry['reading'], entry['glossary']
+ // if key not in groups:
+ // groups[key] = entry['tags'], source, rules
+ }
+
+ validator(term) {
+ // return [d['tags'] for d in self.dictionary.findTerm(term)]
+ }
}
const trans = new Translator();
@@ -59,6 +138,6 @@ trans.initialize({
enamdict: 'jp/data/enamdict.json',
kanjidic: 'jp/data/kanjidic.json'
}, function() {
- alert('Loaded');
+ // alert('Loaded');
// alert(trans.dictionary.findTerm('猫'));
});