#21 fix banners broken after TSV

This commit is contained in:
Andrea Vos 2020-07-26 12:59:49 +02:00
parent 81f014c3ec
commit 81a78e4186
5 changed files with 66 additions and 42 deletions

View File

@ -47,8 +47,8 @@
<Share :title="'Moje zaimki to: ' + selectedTemplate.name()"/>
</section>
<section v-if="getTemplate(selectedTemplate.name()) && getTemplate(selectedTemplate.name()).sources.length">
<Literature :sources="getTemplate(selectedTemplate.name()).sources"/>
<section v-if="getTemplate(templates, selectedTemplate.name()) && getTemplate(templates, selectedTemplate.name()).sources.length">
<Literature :sources="getTemplate(templates, selectedTemplate.name()).sources"/>
</section>
<Separator icon="info"/>
@ -74,7 +74,7 @@
templates: templates,
getTemplate: getTemplate,
selectedTemplate: buildTemplate(this.$route.path.substr(1)),
selectedTemplate: buildTemplate(templates, this.$route.path.substr(1)),
}
},
head() {

View File

@ -106,8 +106,8 @@
</div>
</div>
</div>
<div class="card-body border-top" v-if="getTemplate(selectedTemplate.name()) && getTemplate(selectedTemplate.name()).sources.length">
<Literature :sources="getTemplate(selectedTemplate.name()).sources"/>
<div class="card-body border-top" v-if="getTemplate(templates, selectedTemplate.name()) && getTemplate(templates, selectedTemplate.name()).sources.length">
<Literature :sources="getTemplate(templates, selectedTemplate.name()).sources"/>
</div>
</div>
</section>

View File

@ -1,5 +1,15 @@
import { buildTemplate } from "../src/buildTemplate";
import { buildTemplate, parseTemplates } from "../src/buildTemplate";
import { createCanvas, registerFont, loadImage } from 'canvas';
import Papa from 'papaparse';
import fs from 'fs';
const loadTsv = (filename) => {
return Papa.parse(fs.readFileSync(__dirname + '/../data/' + filename).toString('utf-8'), {
dynamicTyping: true,
header: true,
skipEmptyLines: true,
}).data;
};
export default async function (req, res, next) {
if (req.url.substr(req.url.length - 4) !== '.png') {
@ -8,7 +18,11 @@ export default async function (req, res, next) {
res.end();
return;
}
const template = buildTemplate(decodeURIComponent(req.url.substr(1, req.url.length - 5)));
const template = buildTemplate(
parseTemplates(loadTsv('templates.tsv')),
decodeURIComponent(req.url.substr(1, req.url.length - 5))
);
const width = 1200
const height = 600

View File

@ -1,23 +1,28 @@
import {Template} from "./classes";
import {MORPHEMES, Template} from "./classes";
import Compressor from "./compressor";
import {templates} from "./data";
import {buildDict} from "./helpers";
const templatesWithAliases = {}
for (let base in templates) {
if (templates.hasOwnProperty(base)) {
const template = templates[base];
templatesWithAliases[base] = template;
for (let alias of template.aliases) {
templatesWithAliases[alias] = template;
export const addAliasesToTemplates = (templates) => {
const templatesWithAliases = {}
for (let base in templates) {
if (templates.hasOwnProperty(base)) {
const template = templates[base];
templatesWithAliases[base] = template;
for (let alias of template.aliases) {
templatesWithAliases[alias] = template;
}
}
}
return templatesWithAliases;
}
export const getTemplate = (id) => {
return templatesWithAliases[id];
export const getTemplate = (templates, id) => {
return addAliasesToTemplates(templates)[id];
}
export const buildTemplate = (path) => {
export const buildTemplate = (templates, path) => {
const templatesWithAliases = addAliasesToTemplates(templates);
const templateStr = path.split(',');
const base = templatesWithAliases[templateStr[0]]
@ -25,3 +30,28 @@ export const buildTemplate = (path) => {
? templatesWithAliases[templateStr[0]]
: Template.from(Compressor.uncompress(templateStr, base ? base.toArray() : null));
}
export const parseTemplates = (templatesRaw) => {
return buildDict(function* () {
for (let t of templatesRaw) {
const aliases = t.key.split(',');
yield [
aliases[0],
new Template(
t.description,
buildDict(function* () {
for (let morpheme of MORPHEMES) {
yield [morpheme, t[morpheme]];
}
}),
t.plural,
t.pluralHonorific,
t.sources ? t.sources.split(',') : [],
aliases.slice(1),
t.history,
)
];
}
});
}

View File

@ -1,5 +1,6 @@
import { Source, Example, Template, MORPHEMES } from './classes'
import { Source, Example } from './classes'
import { buildDict, buildList } from './helpers';
import { parseTemplates } from './buildTemplate';
import examplesRaw from '../data/examples.tsv';
export const examples = buildList(function* () {
@ -32,25 +33,4 @@ export const sources = buildDict(function* () {
});
import templatesRaw from '../data/templates.tsv';
export const templates = buildDict(function* () {
for (let t of templatesRaw) {
const aliases = t.key.split(',')
yield [
aliases[0],
new Template(
t.description,
buildDict(function* () {
for (let morpheme of MORPHEMES) {
yield [morpheme, t[morpheme]];
}
}),
t.plural,
t.pluralHonorific,
t.sources ? t.sources.split(',') : [],
aliases.slice(1),
t.history,
)
];
}
})
export const templates = parseTemplates(templatesRaw);