Handle intermediate tags through addons

This commit is contained in:
Alex Yatskov 2016-04-19 22:04:55 -07:00
parent 8c0ead7a3a
commit 7ef0f4e881
3 changed files with 33 additions and 19 deletions

View File

@ -52,6 +52,10 @@ class Deinflection {
for (const v of variants) { for (const v of variants) {
let allowed = this.tags.length === 0; let allowed = this.tags.length === 0;
for (const tag of this.tags) { for (const tag of this.tags) {
//
// TODO: Handle addons through tags.json or rules.json
//
if (v.tagsIn.indexOf(tag) !== -1) { if (v.tagsIn.indexOf(tag) !== -1) {
allowed = true; allowed = true;
break; break;

View File

@ -41,8 +41,29 @@ class Dictionary {
results = results.concat( results = results.concat(
indices.map(index => { indices.map(index => {
const [e, r, t, ...g] = dict.defs[index]; const [e, r, t, ...g] = dict.defs[index];
const tags = Dictionary.fixupTags(t.split(' ')); const addons = [];
return {id: index, expression: e, reading: r, glossary: g, tags: tags}; const tags = t.split(' ');
//
// TODO: Handle addons through data.
//
for (const tag of tags) {
if (tag.startsWith('v5') && tag !== 'v5') {
addons.push('v5');
} else if (tag.startsWith('vs-')) {
addons.push('vs');
}
}
return {
id: index,
expression: e,
reading: r,
glossary: g,
tags: tags.concat(addons),
addons: addons
};
}) })
); );
} }
@ -63,19 +84,4 @@ class Dictionary {
return results; return results;
} }
static fixupTags(tags) {
const results = [];
for (const tag of tags) {
if (tag.startsWith('v5') && tag !== 'v5') {
results.push('v5');
} else if (tag.startsWith('vs-')) {
results.push('vs');
}
results.push(tag);
}
return results;
}
} }

View File

@ -162,7 +162,7 @@ class Translator {
let tagItems = []; let tagItems = [];
for (const tag of entry.tags) { for (const tag of entry.tags) {
const tagItem = this.tags[tag]; const tagItem = this.tags[tag];
if (tagItem) { if (tagItem && entry.addons.indexOf(tag) === -1) {
tagItems.push({ tagItems.push({
class: tagItem.class || 'default', class: tagItem.class || 'default',
order: tagItem.order || Number.MAX_SAFE_INTEGER, order: tagItem.order || Number.MAX_SAFE_INTEGER,
@ -170,6 +170,11 @@ class Translator {
name: tag name: tag
}); });
} }
//
// TODO: Handle tagging as popular through data.
//
if (tag === 'P') { if (tag === 'P') {
popular = true; popular = true;
} }
@ -195,7 +200,6 @@ class Translator {
return 0; return 0;
}); });
if (matched) { if (matched) {
groups[entry.id] = { groups[entry.id] = {
expression: entry.expression, expression: entry.expression,