Update 'scripts/compile-lexico.html'

This commit is contained in:
方而静 2022-10-27 09:38:54 +00:00
parent f3f07d97c6
commit d2f0b36e07

View File

@ -8,6 +8,7 @@
<body>
<label for=input>lexici texto:</label><br/><textarea id=input></textarea><br/>
<label for=szinput>papro caito:</label><br/><input id=szinput placeholder="a4/16k" value="a4"/><br/>
<button onclick="parse()">alqa</button>
<p id=err></p>
@ -33,9 +34,9 @@
<script type="text/javascript">
const auxi = ['b','c','d','f','g','h','i','l','m','n','p','q','r','s','t','v','w','z','zh','dr','ts'];
const basi = ['a','e','i','o','u','ü','ar','er','ir','or','ur','ür','ai','ei','oi','al','el','ul','ül','ao','eo','io','üo','eu','ua','au','an','en','in','on','un','ing','am','em','im','um','oen'];
const amark = {"a": "\\\"a","b": "p","e": "e","c": "k\\super{h}","d": "t", "dd": "t", "o": "o","f": "f","u": "u","g": "g","ü": "y","h": "h","ar": "A\\textrhookschwa","i": "j","er": "7\\textrhookschwa","l": "l","ir": "i\\textrhookschwa","m": "m","or": "o\\textrhookschwa","n": "n","ur": "u\\textrhookschwa","p": "p\\super{h}","ür": "y\\textrhookschwa","q": "\\:t\\:s\\super{h}","ai": "aj","r": "\\:R\\super{w}","ei": "ej","s": "s","oi": "oj","t": "t\\super{h}","al": "6\\textltilde","v": "v","el": "eo\\textltilde","w": "w","ul": "u\\textltilde","z(1th)": "ts","ül": "4u\\textltilde","z(exa)": "z","ao": "Aw","zh": "\\:z","eo": "eo","dr": "\\t{\\:t\\:R}\\super{w}","io": "jo","ts": "ts\\super{h}","üo": "4o","eu": "ju","ua": "w\\\"a","au": "6","an": "an","en": "@n","in": "in","on": "on","un": "2n","am": "\\\"am","em": "@m","im": "im","um": "2m","ing": "iN","oen": "ow@n"};
const bmark = {"a": "\\\"a","b": "p","e": "e","c": "k\\super{h}","i": "i","d": "t", "dd": "t", "o": "o","f": "f","u": "u","g": "g","ü": "y","h": "h","ar": "A\\textrhookschwa","er": "7\\textrhookschwa","l": "l","ir": "i\\textrhookschwa","m": "m","or": "o\\textrhookschwa","n": "n","ur": "u\\textrhookschwa","p": "p\\super{h}","ür": "y\\textrhookschwa","q": "\\:t\\:s\\super{h}","ai": "aj","r": "\\:R\\super{w}","ei": "ej","s": "s","oi": "oj","t": "t\\super{h}","al": "6\\textltilde","v": "v","el": "eo\\textltilde","w": "w","ul": "u\\textltilde","z(1th)": "ts","ül": "4u\\textltilde","z(exa)": "z","ao": "Aw","zh": "\\:z","eo": "eo","dr": "\\t{\\:t\\:R}\\super{w}","io": "jo","ts": "ts\\super{h}","üo": "4o","eu": "ju","ua": "w\\\"a","au": "6","an": "an","en": "@n","in": "in","on": "on","un": "2n","am": "\\\"am","em": "@m","im": "im","um": "2m","ing": "iN","oen": "ow@n"};
const basi = ['a','e','i','o','u','ü','ar','er','ir','or','ur','ür','ai','ei','oi','al','el','ul','ül','ao','eo','üo','eu','ua','au','an','en','in','on','un','ing','am','em','im','um','oen'];
const amark = {"a": "\\\"a","b": "p","e": "e","c": "k\\super{h}","d": "t", "dd": "t", "o": "o","f": "f","u": "u","g": "k","ü": "y","h": "h","ar": "A\\textrhookschwa","i": "j","er": "7\\textrhookschwa","l": "l","ir": "i\\textrhookschwa","m": "m","or": "o\\textrhookschwa","n": "n","ur": "u\\textrhookschwa","p": "p\\super{h}","ür": "y\\textrhookschwa","q": "\\:t\\:s\\super{h}","ai": "aj","r": "\\:R\\super{w}","ei": "ej","s": "s","oi": "oj","t": "t\\super{h}","al": "6\\textltilde","v": "v","el": "eo\\textltilde","w": "w","ul": "u\\textltilde","z(1th)": "ts","ül": "4u\\textltilde","z(exa)": "z","ao": "Aw","zh": "\\:z","eo": "eo","dr": "\\t{\\:t\\:R}\\super{w}","ts": "ts\\super{h}","üo": "4o","eu": "ju","ua": "w\\\"a","au": "6","an": "an","en": "@n","in": "in","on": "on","un": "2n","am": "\\\"am","em": "@m","im": "im","um": "2m","ing": "iN","oen": "ow@n"};
const bmark = {"a": "\\\"a","b": "p","e": "e","c": "k\\super{h}","i": "i","d": "t", "dd": "t", "o": "o","f": "f","u": "u","g": "k","ü": "y","h": "h","ar": "A\\textrhookschwa","er": "7\\textrhookschwa","l": "l","ir": "i\\textrhookschwa","m": "m","or": "o\\textrhookschwa","n": "n","ur": "u\\textrhookschwa","p": "p\\super{h}","ür": "y\\textrhookschwa","q": "\\:t\\:s\\super{h}","ai": "aj","r": "\\:R\\super{w}","ei": "ej","s": "s","oi": "oj","t": "t\\super{h}","al": "6\\textltilde","v": "v","el": "eo\\textltilde","w": "w","ul": "u\\textltilde","z(1th)": "ts","ül": "4u\\textltilde","z(exa)": "z","ao": "Aw","zh": "\\:z","eo": "eo","dr": "\\t{\\:t\\:R}\\super{w}","ts": "ts\\super{h}","üo": "4o","eu": "ju","ua": "w\\\"a","au": "6","an": "an","en": "@n","in": "in","on": "on","un": "2n","am": "\\\"am","em": "@m","im": "im","um": "2m","ing": "iN","oen": "ow@n"};
class Lexico {
@ -50,7 +51,7 @@ class Lexico {
if (this.pt.length === 0) {
return '/';
}
let pv = this.v.replaceAll('x', 'cs').replaceAll('dd', 'd').replaceAll('\'', '');
let pv = this.v.toLowerCase().replaceAll('x', 'cs').replaceAll('dd', 'd').replaceAll('\'', '');
if (this.pt.reduce((x, y) => x + y, 0) != pv.length) {
report_error('ling divo mifuto');
return null;
@ -72,7 +73,7 @@ class Lexico {
if (this.pt.length === 0) {
return [];
}
let pv = this.v.replaceAll('x', 'cs').replaceAll('dd', 'd').replaceAll('\'', '');
let pv = this.v.toLowerCase().replaceAll('x', 'cs').replaceAll('dd', 'd').replaceAll('\'', '');
if (this.pt.reduce((x, y) => x + y, 0) != pv.length) {
report_error('ling divo mifuto');
return null;
@ -134,7 +135,22 @@ function parse_pt_to_marco(pt) {
continue;
}
let basolino = '', rauxa = '';
if (first_auxalino == 'i') {
let first_basolino = '';
for (const b of basi) {
if (pti.startsWith(b)) {
first_basolino = b;
// dont break here!
}
}
if (first_basolino != 'i') {
first_auxalino = '';
rest = pti;
}
}
let basolino = '', rauxa = rest;
for (const b of basi) {
if (rest.startsWith(b)) {
basolino = b;
@ -148,7 +164,7 @@ function parse_pt_to_marco(pt) {
first_auxalino = '';
}
if ((first_auxalino.length > 0 && basolino.length == 0) || (rauxa.length > 0 && !auxi.includes(rauxa))) {
if (basolino.length == 0 || (rauxa.length > 0 && !auxi.includes(rauxa))) {
report_error(`ling divo mifuto2: ${pti}`);
return null;
}
@ -190,13 +206,23 @@ function escape_tex(s) {
.replaceAll('~', '$\\sim$');
}
const tex_sizing = {
'a4': '\\geometry{a4paper,left=1cm,right=1cm,top=1.5cm,bottom=1.5cm,footskip=5mm}',
'16k': '\\geometry{paperwidth=185mm,paperheight=260mm,left=1cm,right=1cm,top=1.5cm,bottom=1.5cm,footskip=5mm}',
}
function parse() {
document.getElementById('err').innerHTML = '';
document.getElementById('output').value = '';
document.getElementById('output2').value = '';
let papro_caito = document.getElementById('szinput').value;
let t = document.getElementById('input').value.split('\n');
let markres = '| 单词 | 释义 | 音节划分 | 词源 |\n| :---: | :---: | :---: | :---: |\n';
let texres = '\\documentclass[10pt]{article}\\usepackage{tabularx}\\usepackage{ctex}\\usepackage{tipa}\\usepackage{geometry}\\geometry{a4paper,left=1cm,right=1cm,top=1.2cm,bottom=1.5cm}\\usepackage{xltabular}\\begin{document}\\newcolumntype{Y}{>{\\raggedright\\arraybackslash}X}\\centering\\begin{xltabular}{\\textwidth}{|Y|Y|l|Y|}\\hline \\textbf{Lexici} & \\textbf{Texo} & \\textbf{Lingmarco} & \\textbf{Matro} \\\\ \\hline\n';
let texres = `\\documentclass[10pt]{article}\\usepackage{tabularx}\\usepackage{ctex}\\usepackage{tipa}\\usepackage{geometry}${tex_sizing[papro_caito]}\\usepackage{xltabular}\\begin{document}\\newcolumntype{Y}{>{\\raggedright\\arraybackslash}X}\\centering\\footnotesize\\begin{xltabular}{\\textwidth}{|Y|Y|l|Y|}\\hline\\textbf{Lexici} & \\textbf{Texo} & \\textbf{Lingmarco} & \\textbf{Matro} \\\\ \\hline\n`;
for (let i in t) {
if (t.length == 0) {
continue;
}
LINE = parseInt(i) + 1;
let l = parse_item(t[i]);
if (l == null) {
@ -208,7 +234,10 @@ function parse() {
return null;
}
markres += `| ${l.v} | ${l.get_trans()} | ${pt} | ${l.source} |\n`;
texres += `\t${escape_tex(l.v)} & ${escape_tex(l.get_trans())} & \\textipa{${parse_pt_to_marco(l.get_pt2())}} & ${escape_tex(l.source)} \\\\\n\t\\hline\n`;
let lingmarco = parse_pt_to_marco(l.get_pt2());
if (lingmarco == null) return null;
texres += `\t${escape_tex(l.v)} & ${escape_tex(l.get_trans())} & \\textipa{${lingmarco}} & ${escape_tex(l.source)} \\\\\n\t\\hline\n`;
}
texres += `\\end{xltabular}\\end{document}`
document.getElementById('output').value = markres;
@ -226,5 +255,10 @@ function parse_item(val) {
return new Lexico(p[1], p[2], p[3], p[4]);
}
onload = function() {
document.getElementById('output').value = '';
document.getElementById('output2').value = '';
}
</script>
</html>