mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-23 12:43:48 -04:00
#21 fix banners broken after TSV
This commit is contained in:
parent
81f014c3ec
commit
81a78e4186
@ -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() {
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
)
|
||||
];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
26
src/data.js
26
src/data.js
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user