Compare commits

..

3 Commits
develop ... 2.2

Author SHA1 Message Date
Daniel Løvbrøtte Olsen
b511388ae8 Merge branch 'develop' into 'master'
Add ability to run arbitrary script on matched text, add cherokee, update help messages and version

See merge request Dandellion/matrix-wug!11
2019-03-07 00:54:01 +00:00
Daniel Løvbrøtte Olsen
f82d415b3e Merge branch 'develop' into 'master'
Fix pie help command

See merge request Dandellion/matrix-wug!10
2019-03-01 01:54:10 +00:00
Daniel Løvbrøtte Olsen
dc45ff0df3 Merge branch 'develop' into 'master'
2.1.1

See merge request Dandellion/matrix-wug!9
2019-03-01 01:47:00 +00:00
16 changed files with 3574 additions and 2195 deletions

View File

@ -1,21 +1,6 @@
stages:
- build
- deploy
image: node:10-slim
build:
stage: build
script:
- npm install
- npm run build
deploy:
stage: deploy
script:
- echo "Deploy to dodsorf.as"
environment:
name: wug dodsorf.as
only:
- master
- npm build

View File

@ -10,8 +10,14 @@ p[x2"owis x1"ek'wo:s-kve] gives *h₂ówis h₁é"kwōs-kʷe
Guides to these systems can be found here:
X-sampa: https://en.wikipedia.org/wiki/X-SAMPA
Z-sampa: https://web.archive.org/web/20191116002807/http://kneequickie.com/kq/Z-SAMPA
APIE: https://gist.github.com/xsduan/8ebd580be71214c57aa554ec9050916c
Z-sampa: http://www.kneequickie.com/kq/Z-SAMPA
For the PIE notation:
* a preceding " is acute accent
* a following : is the macron
* a following . is the syllabicity marker
* h always becomes superscript and v is superscript w.
* Palato-velars are marked with a following ' and x1, x2, x3 etc. yields the laryngeals, with x@ for the subscript a laryngeal, and xx for an unknown laryngeal.
This is best learned by experimenting.

View File

@ -1,4 +1,4 @@
const version = "2.4.4";
const version = "2.2.0";
import x2i from "./x2i";
import { existsSync } from "fs";
@ -24,13 +24,11 @@ async function handle(roomId, event) {
if (event.unsigned.age > 1000 * 60) { console.log("Message was old!"); return; };
if (event.sender === await myself) { console.log("Wait a minute... That's me!"); return;};
if (event.content.msgtype === "m.notice") { return; };
if (event.content.body === "!xhelp" || event.content.body === (await client.getUserProfile(await myself)).displayname + ": help") {help(roomId); return;};
if (event.content.body === "!xik") {xik(roomId); return;};
if (event.content.body === "!xpie") {xpie(roomId); return;};
if (event.content.body === "!xchr") {xchr(roomId); return;};
if (event.content.body === "!xnav") {xnav(roomId); return;};
if (event.content.body === "!xdebug") {debug(roomId); return;};
console.log("Trying to convert the message!");
@ -47,13 +45,11 @@ function help(roomId) {
To use me, type a key together with either / or [] as delimeters
x - X-SAMPA - https://en.wikipedia.org/wiki/X-SAMPA
z - Z-SAMPA - https://web.archive.org/web/20191116002807/http://kneequickie.com/kq/Z-SAMPA
p - Proto-Indo-European Notation - https://gist.github.com/xsduan/8ebd580be71214c57aa554ec9050916c
z - Z-SAMPA - http://www.kneequickie.com/kq/Z-SAMPA
p - Proto-Indo-European Notation (see !xpie)
i - Inuktitut Syllabics - https://en.wikipedia.org/wiki/Inuktitut_syllabics
ik - Iñupiatun Orthographies (see !xik)
chr - Cherokee (see !xchr) - https://en.wikipedia.org/wiki/Cherokee_syllabary
nav - Navajo (see !xnav)
hi - Hiragana, mainly https://en.wikipedia.org/wiki/Nihon-shiki_romanization and hepburn, but also with other unofficial styles
Find my source at https://github.com/Dali99/matrix-wug
@ -74,7 +70,7 @@ a following . is the syllabicity marker
h always becomes superscript and v is superscript w.
Palato-velars are marked with a following ' and x1, x2, x3 etc. yields the laryngeals, with x@ for the subscript a laryngeal, and xx for an unknown laryngeal.
There's probably more, but this is best learned by experimenting (or reading https://gist.github.com/xsduan/8ebd580be71214c57aa554ec9050916c)
There's probably more, but this is best learned by experimenting (or reading https://github.com/dali99/matrix-wug/blob/master/x2i/apie-keys.yaml)
Thanks to conniebot (xsduan) for the encoding`;
@ -95,7 +91,7 @@ Thanks to Tuugaalikkuluk for the encoding`;
function xchr(roomId) {
var message = `I'm sadly not smart enough to know which syllable to use in certain situations.
That means you have to help me out a little.
Write the wanted syllables down, but separate them by a dot (.) or an apostrophe (')
Write the wanted syllables down, but separate them by a dot (.)
Thanks to Tuugaalikkuluk for the encoding
@ -105,22 +101,6 @@ chr/tsa.la.gi ga.wo.ni.hi.s.di/ - ᏣᎳᎩ ᎦᏬᏂᎯᏍᏗ`;
client.sendNotice(roomId, message);
}
function xnav(roomId) {
var message = `My navajo encoding is as follows:
Caron after a vowel gives it an acute accent: o^ ó, A^ Á
At sign after a vowel gives it an ogonek: a@ ą, E@ Ę
Percentage sign after a vowel gives it both an ogonek and an acute accent: a% ą́, I% Į́ and after an l, it makes ł: l% ł
You can also "stack the symbols" for an ogonek and an accute accent: (a^@, a@^) ą́
Single quotation mark is converted to the glottal stop/ejective mark ()
For a plain quotation mark, you can type '^
Thanks to Tuugaalikkuluk for the encoding`;
client.sendNotice(roomId, message);
}
async function debug(roomId) {
var message = `Hi my name is ${await myself}, and I want to help you debug me!
I run version ${version} 💝 and currently reside in ${roomId}`;

3531
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,23 @@
{
"name": "matrix-wug",
"version": "2.4.3",
"name": "vugg",
"version": "1.1.0",
"description": "Language bot for matrix",
"main": "index.js",
"bin": "build/index.js",
"scripts": {
"build": "tsc",
"start": "node build/index.js"
},
"author": "Daniel",
"license": "AGPL3",
"license": "ISC",
"dependencies": {
"matrix-bot-sdk": "^0.3.2",
"@types/js-yaml": "^3.12.1",
"@types/js-yaml": "^3.11.2",
"@types/node": "^10.12.11",
"@types/xregexp": "^3.0.29",
"js-yaml": "^3.13.1",
"js-yaml": "^3.12.0",
"ts-node": "^7.0.1",
"typescript": "^3.2.1",
"xregexp": "^4.2.0"
"xregexp": "^4.2.0",
"nodemon": "^1.18.7"
}
}

View File

@ -1,7 +1,7 @@
with import <nixpkgs> {};
stdenv.mkDerivation {
name = "node";
buildInputs = [ nodejs-10_x yarn ];
buildInputs = [ nodejs-10_x ];
shellHook = ''
export PATH="$PWD/node_modules/.bin/:$PATH"
'';

View File

@ -23,37 +23,37 @@ export function convert(input: string)
else if (i==1) {
if (rom[0].toLowerCase()=='a') {
c=c+'';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2)
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2)
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='e') {
c=c+'';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='i') {
c=c+'';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='o') {
c=c+'Ꭳ';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='u') {
c=c+'Ꭴ';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='v') {
c=c+'';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else if (rom[0].toLowerCase()=='s') {
c=c+'Ꮝ';
if((rom[1] == "." || rom[1] == "'")&& isAlpha(rom[2])) rom=rom.slice(2);
if(rom[1]=="."&& isAlpha(rom[2])) rom=rom.slice(2);
else rom=rom.slice(1);
}
else {
@ -78,7 +78,7 @@ export function convert(input: string)
};
if(flag) {
c=c+syl[j][k];
if((rom[2] == "." || rom[2] == "'")&& isAlpha(rom[3])) rom=rom.slice(3);
if(rom[2]=="."&& isAlpha(rom[3])) rom=rom.slice(3);
else rom=rom.slice(2);
}
else {
@ -103,17 +103,17 @@ export function convert(input: string)
};
if(flag) {
c=c+syl[j][k];
if((rom[3] == "." || rom[3] == "'") && isAlpha(rom[4])) rom=rom.slice(4);
if(rom[3]=="." && isAlpha(rom[4])) rom=rom.slice(4);
else rom=rom.slice(3);
}
else if (rom.slice(0,3).toLowerCase()=="nah") {
c=c+"";
if((rom[3] == "." || rom[3] == "'") && isAlpha(rom[4])) rom=rom.slice(4);
if(rom[3]=="." && isAlpha(rom[4])) rom=rom.slice(4);
else rom=rom.slice(3);
}
else if (rom.slice(0,3).toLowerCase()=="hna") {
c=c+"Ꮏ";
if((rom[3] == "." || rom[3] == "'") && isAlpha(rom[4])) rom=rom.slice(4);
if(rom[3]=="." && isAlpha(rom[4])) rom=rom.slice(4);
else rom=rom.slice(3);
}
else {

View File

@ -1,674 +0,0 @@
---
# n has supesharu sutâtsusu
- raw:
- "n'"
- "ん"
# hepburn long vowels
- raw:
- "[āâ]"
- "aa"
- raw:
- "[ūû]"
- "uu"
- raw:
- "[ūû]"
- "uu"
- raw:
- "[ēê]"
- "ee"
- raw:
- "[ōô]"
- "oo"
- raw:
- "[īî]"
- "ii"
# youon souken 5-letter
- raw:
- "cchya"
- "っちゃ"
- raw:
- "cchyu"
- "っちゅ"
- raw:
- "cchuo"
- "っちょ"
# gojuuonzu smol 4-letter
- raw:
- "[xl]tsu"
- "っ"
# youon 4-letter
- raw:
- "chya"
- "ちゃ"
- raw:
- "chyu"
- "ちゅ"
# gojuuonzu souken 4-letter
- raw:
- "sshi"
- "っし"
- raw:
- "tchi|cchi"
- "っち"
- raw:
- "ttsu"
- "っつ"
# youon souken 4-letter
- raw:
- "kkya"
- "っきゃ"
- raw:
- "kkyu"
- "っきゅ"
- raw:
- "kkyo"
- "っきょ"
- raw:
- "ssha|ssya"
- "っしゃ"
- raw:
- "sshu|ssyu"
- "っしゅ"
- raw:
- "ssho|ssyo"
- "っしょ"
- raw:
- "tcha|ccha|ttya"
- "っちゃ"
- raw:
- "tchu|cchu|ttyu"
- "っちゅ"
- raw:
- "tcho|ccho|ttyo"
- "っちょ"
# dakuten and handakuten souken 4-letter
- raw:
- "ggya"
- "っぎゃ"
- raw:
- "ggyu"
- "っぎゅ"
- raw:
- "ggyo"
- "っぎょ"
- raw:
- "bbya"
- "っびゃ"
- raw:
- "bbyu"
- "っびゅ"
- raw:
- "bbyo"
- "っびょ"
- raw:
- "ppya"
- "っぴゃ"
- raw:
- "ppyu"
- "っぴゅ"
- raw:
- "ppyo"
- "っぴょ"
- raw:
- "zzya"
- "っじゃ"
- raw:
- "zzyu"
- "っじゅ"
- raw:
- "zzyo"
- "っじょ"
- raw:
- "ddya"
- "っぢゃ"
- raw:
- "ddyu"
- "っぢゅ"
- raw:
- "ddyo"
- "っぢょ"
# gojuuonzu 3-letter
- raw:
- "shi"
- "し"
- raw:
- "chi"
- "ち"
- raw:
- "tsu"
- "つ"
# youon 3-letter
- raw:
- "kya"
- "きゃ"
- raw:
- "kyu"
- "きゅ"
- raw:
- "kyo"
- "きょ"
- raw:
- "sha|sya"
- "しゃ"
- raw:
- "shu|syu"
- "しゅ"
- raw:
- "sho|syo"
- "しょ"
- raw:
- "cha|tya"
- "ちゃ"
- raw:
- "chu|tyu"
- "ちゅ"
- raw:
- "cho|tyo"
- "ちょ"
- raw:
- "nya"
- "にゃ"
- raw:
- "nyu"
- "にゅ"
- raw:
- "nyo"
- "にょ"
- raw:
- "hya"
- "ひゃ"
- raw:
- "hyu"
- "ひゅ"
- raw:
- "hyo"
- "ひょ"
- raw:
- "mya"
- "みゃ"
- raw:
- "myu"
- "みゅ"
- raw:
- "myo"
- "みょ"
- raw:
- "rya"
- "りゃ"
- raw:
- "ryu"
- "りゅ"
- raw:
- "ryo"
- "りょ"
- raw:
- "jja"
- "っじゃ"
- raw:
- "jju"
- "っじゅ"
- raw:
- "jjo"
- "っじょ"
# dakuten and handakuten 3-letter
- raw:
- "gya"
- "ぎゃ"
- raw:
- "gyu"
- "ぎゅ"
- raw:
- "gyo"
- "ぎょ"
- raw:
- "bya"
- "びゃ"
- raw:
- "byu"
- "びゅ"
- raw:
- "byo"
- "びょ"
- raw:
- "pya"
- "ぴゃ"
- raw:
- "pyu"
- "ぴゅ"
- raw:
- "pyo"
- "ぴょ"
- raw:
- "zya"
- "じゃ"
- raw:
- "zyu"
- "じゅ"
- raw:
- "zyo"
- "じょ"
- raw:
- "dya"
- "ぢゃ"
- raw:
- "dyu"
- "ぢゅ"
- raw:
- "dyo"
- "ぢょ"
# passport hepburn 3-letter
# REMOVED FOR INCOMPATIBILITY CONCERNS
# sokuon 3-letter
- raw:
- "kka"
- "っか"
- raw:
- "kki"
- "っき"
- raw:
- "kku"
- "っく"
- raw:
- "kke"
- "っけ"
- raw:
- "kko"
- "っこ"
- raw:
- "ssa"
- "っさ"
- raw:
- "ssi"
- "っし"
- raw:
- "ssu"
- "っす"
- raw:
- "sse"
- "っせ"
- raw:
- "sso"
- "っそ"
- raw:
- "tta"
- "った"
- raw:
- "tti"
- "っち"
- raw:
- "ttu"
- "っつ"
- raw:
- "tte"
- "って"
- raw:
- "tto"
- "っと"
- raw:
- "hha"
- "っは"
- raw:
- "hhi"
- "っひ"
- raw:
- "ffu"
- "っふ"
- raw:
- "hhe"
- "っへ"
- raw:
- "hho"
- "っほ"
- raw:
- "wwa"
- "わ"
- raw:
- "wwo"
- "っを"
#dakuon and handakuon souken 3-letters
- raw:
- "gga"
- "っが"
- raw:
- "ggi"
- "っぎ"
- raw:
- "ggu"
- "っぐ"
- raw:
- "gge"
- "っげ"
- raw:
- "ggo"
- "っご"
- raw:
- "zza"
- "っざ"
- raw:
- "jji"
- "っじ"
- raw:
- "zzu"
- "っず"
- raw:
- "zze"
- "っぜ"
- raw:
- "zzo"
- "っぞ"
- raw:
- "dda"
- "っだ"
- raw:
- "dde"
- "っで"
- raw:
- "ddo"
- "っど"
- raw:
- "bba"
- "っば"
- raw:
- "bbi"
- "っび"
- raw:
- "bbu"
- "っぶ"
- raw:
- "bbe"
- "っべ"
- raw:
- "bbo"
- "っぼ"
- raw:
- "ppa"
- "っぱ"
- raw:
- "ppi"
- "っぴ"
- raw:
- "ppu"
- "っぷ"
- raw:
- "ppe"
- "っぺ"
- raw:
- "ppo"
- "っぽ"
# gojuuonzu smol 3-letter
- raw:
- "[xl]ka"
- "ヵ"
- raw:
- "[xl]ke"
- "ヶ"
- raw:
- "[xl]tu"
- "っ"
- raw:
- "[xl]ya"
- "ゃ"
- raw:
- "[xl]yu"
- "ゅ"
- raw:
- "[xl]yo"
- "ょ"
- raw:
- "[xl]wa"
- "ゎ"
# gojuuonzu 2-letter
- raw:
- "ka"
- "か"
- raw:
- "ki"
- "き"
- raw:
- "ku"
- "く"
- raw:
- "ke"
- "け"
- raw:
- "ko"
- "こ"
- raw:
- "sa"
- "さ"
- raw:
- "si"
- "し"
- raw:
- "su"
- "す"
- raw:
- "se"
- "せ"
- raw:
- "so"
- "そ"
- raw:
- "ta"
- "た"
- raw:
- "ti"
- "ち"
- raw:
- "tu"
- "つ"
- raw:
- "te"
- "て"
- raw:
- "to"
- "と"
- raw:
- "na"
- "な"
- raw:
- "ni"
- "に"
- raw:
- "nu"
- "ぬ"
- raw:
- "ne"
- "ね"
- raw:
- "no"
- "の"
- raw:
- "ha"
- "は"
- raw:
- "hi"
- "ひ"
- raw:
- "fu|hu"
- "ふ"
- raw:
- "he"
- "へ"
- raw:
- "ho"
- "ほ"
- raw:
- "ma"
- "ま"
- raw:
- "mi"
- "み"
- raw:
- "mu"
- "む"
- raw:
- "me"
- "め"
- raw:
- "mo"
- "も"
- raw:
- "ya"
- "や"
- raw:
- "yu"
- "ゆ"
- raw:
- "yo"
- "よ"
- raw:
- "ra"
- "ら"
- raw:
- "ri"
- "り"
- raw:
- "ru"
- "る"
- raw:
- "re"
- "れ"
- raw:
- "ro"
- "ろ"
- raw:
- "wa"
- "わ"
- raw:
- "wo"
- "を"
# dakuon and handakuon 2-letter
- raw:
- "ga"
- "が"
- raw:
- "gi"
- "ぎ"
- raw:
- "gu"
- "ぐ"
- raw:
- "ge"
- "げ"
- raw:
- "go"
- "ご"
- raw:
- "za"
- "ざ"
- raw:
- "ji|zi"
- "じ"
- raw:
- "zu"
- "ず"
- raw:
- "ze"
- "ぜ"
- raw:
- "zo"
- "ぞ"
- raw:
- "da"
- "だ"
- raw:
- "di"
- "ぢ"
- raw:
- "zu|du"
- "づ"
- raw:
- "de"
- "で"
- raw:
- "do"
- "ど"
- raw:
- "ba"
- "ば"
- raw:
- "bi"
- "び"
- raw:
- "bu"
- "ぶ"
- raw:
- "be"
- "べ"
- raw:
- "bo"
- "ぼ"
- raw:
- "pa"
- "ぱ"
- raw:
- "pi"
- "ぴ"
- raw:
- "pu"
- "ぷ"
- raw:
- "pe"
- "ぺ"
- raw:
- "po"
- "ぽ"
#youon 2-letter
- raw:
- "ja"
- "じゃ"
- raw:
- "ju"
- "じゅ"
- raw:
- "jo"
- "じょ"
# ????? 2 - letter
- raw:
- "wi"
- "うぃ"
- raw:
- "we"
- "うぇ"
# gojuuonzu smol 2-letter
- raw:
- "[xl]a"
- "ぁ"
- raw:
- "[xl]i"
- "ぃ"
- raw:
- "[xl]u"
- "ぅ"
- raw:
- "[xl]e"
- "ぇ"
- raw:
- "[xl]o"
- "ぉ"
- raw:
- "[xl]n"
- "ん"
# gojuuonzu 1-letter
- raw:
- "a"
- "あ"
- raw:
- "i"
- "い"
- raw:
- "u"
- "う"
- raw:
- "e"
- "え"
- raw:
- "o"
- "お"
- raw:
- "n"
- "ん"

View File

@ -1,273 +0,0 @@
export function convert(input: string)
{
var c=" ";
var rom=input+" ";
var flag=0;
while(rom.length > 1) {
if(rom[1]=='^') {
if(rom.length>=2 && rom[2]=='@') {
if(rom[0]=='a') {
c=c+'ą́';
flag=1;
}
else if(rom[0]=='A') {
c=c+'Ą́';
flag=1;
}
else if(rom[0]=='e') {
c=c+'ę́';
flag=1;
}
else if(rom[0]=='E') {
c=c+'Ę́';
flag=1;
}
else if(rom[0]=='i') {
c=c+'į́'
flag=1
}
else if(rom[0]=='I') {
c=c+'Į́'
flag=1
}
else if(rom[0]=='o') {
c=c+'ǫ́'
flag=1
}
else if(rom[0]=='O') {
c=c+'Ǫ́'
flag=1
}
else if(rom[0]=='u') {
c=c+'ų́'
flag=1
}
else if(rom[0]=='U') {
c=c+'Ų́'
flag=1
}
if(flag) {
rom=rom.slice(3)
flag=0
continue
}
}
else {
if(rom[0]=='a') {
c=c+'á'
flag=1
}
else if(rom[0]=='A') {
c=c+'Á'
flag=1
}
else if(rom[0]=='e') {
c=c+'é'
flag=1
}
else if(rom[0]=='E') {
c=c+'É'
flag=1
}
else if(rom[0]=='i') {
c=c+'í'
flag=1
}
else if(rom[0]=='I') {
c=c+'Í'
flag=1
}
else if(rom[0]=='o') {
c=c+'ó'
flag=1
}
else if(rom[0]=='O') {
c=c+'Ó'
flag=1
}
else if(rom[0]=='u') {
c=c+'ú'
flag=1
}
else if(rom[0]=='U') {
c=c+'Ú'
flag=1
}
if(flag) {
rom=rom.slice(2)
flag=0
continue
}
}
}
if(rom[1]=='@') {
if(rom.length>=2 && rom[2]=='^') {
if(rom[0]=='a') {
c=c+'ą́'
flag=1
}
else if(rom[0]=='A') {
c=c+'Ą́'
flag=1
}
else if(rom[0]=='e') {
c=c+'ę́'
flag=1
}
else if(rom[0]=='E') {
c=c+'Ę́'
flag=1
}
else if(rom[0]=='i') {
c=c+'į́'
flag=1
}
else if(rom[0]=='I') {
c=c+'Į́'
flag=1
}
else if(rom[0]=='o') {
c=c+'ǫ́'
flag=1
}
else if(rom[0]=='O') {
c=c+'Ǫ́'
flag=1
}
else if(rom[0]=='u') {
c=c+'ų́'
flag=1
}
else if(rom[0]=='U') {
c=c+'Ų́'
flag=1
}
if(flag) {
rom=rom.slice(3)
flag=0
continue
}
}
else {
if(rom[0]=='a') {
c=c+'ą'
flag=1
}
else if(rom[0]=='A') {
c=c+'Ą'
flag=1
}
else if(rom[0]=='e') {
c=c+'ę'
flag=1
}
else if(rom[0]=='E') {
c=c+'Ę'
flag=1
}
else if(rom[0]=='i') {
c=c+'į'
flag=1
}
else if(rom[0]=='I') {
c=c+'Į'
flag=1
}
else if(rom[0]=='o') {
c=c+'ǫ'
flag=1
}
else if(rom[0]=='O') {
c=c+'Ǫ'
flag=1
}
else if(rom[0]=='u') {
c=c+'ų'
flag=1
}
else if(rom[0]=='U') {
c=c+'Ų'
flag=1
}
if(flag) {
rom=rom.slice(2)
flag=0
continue
}
}
}
if(rom[1]=='%') {
if(rom[0]=='a') {
c=c+'ą́'
flag=1
}
else if(rom[0]=='A') {
c=c+'Ą́'
flag=1
}
else if(rom[0]=='e') {
c=c+'ę́'
flag=1
}
else if(rom[0]=='E') {
c=c+'Ę́'
flag=1
}
else if(rom[0]=='i') {
c=c+'į́'
flag=1
}
else if(rom[0]=='I') {
c=c+'Į́'
flag=1
}
else if(rom[0]=='o') {
c=c+'ǫ́'
flag=1
}
else if(rom[0]=='O') {
c=c+'Ǫ́'
flag=1
}
else if(rom[0]=='u') {
c=c+'ų́'
flag=1
}
else if(rom[0]=='U') {
c=c+'Ų́'
flag=1
}
else if(rom[0]=='l') {
c=c+'ł'
flag=1
}
else if(rom[0]=='L') {
c=c+'Ł'
flag=1
}
if(flag) {
rom=rom.slice(2)
flag=0
continue
}
}
if(rom[0]=="'") {
if(rom[1]!='^') {
c=c+''
rom=rom.slice(1)
continue
}
if(rom[1]=='^') {
c=c+'\''
rom=rom.slice(2)
continue
}
}
if(rom[0]=='#') {
break
}
c=c+rom[0]
rom=rom.slice(1)
}
return c;
}

View File

@ -38,39 +38,30 @@ const regex = OuterXRegExp(
const defaultMatchAction = (left: string, match: string, right: string) => left + match + right;
const defaultMatchFunction = (match: string, keys: ([RegExp, string | ((m: {[key: string]: string;}) => string), string][])) => OuterXRegExp.replaceEach(match, keys as (RegExp | string)[][])
import * as chr from "./dictionaries/chr";
import * as nav from "./dictionaries/nav";
import * as chr from "./chr";
const matchType: { [key: string]: IMatchInstructions } = {
chr: {
join: (_, match) => `- ${match}`,
matchFunction: chr.convert,
},
nav: {
join: (_, match) => `- ${match}`,
matchFunction: nav.convert,
},
ik: {
join: (_, match) => `- ${match}`,
keys: readKeys("./x2i/dictionaries/ik-keys.yaml"),
keys: readKeys("./x2i/ik-keys.yaml"),
},
p: {
join: (_, match) => `*${match}`,
keys: readKeys("./x2i/dictionaries/apie-keys.yaml"),
keys: readKeys("./x2i/apie-keys.yaml"),
},
x: {
keys: readKeys("./x2i/dictionaries/x2i-keys.yaml"),
keys: readKeys("./x2i/x2i-keys.yaml"),
},
z: {
keys: readKeys("./x2i/dictionaries/z2i-keys.yaml"),
keys: readKeys("./x2i/z2i-keys.yaml"),
},
i: {
join: (_, match) => `- ${match}`,
keys: readKeys("./x2i/dictionaries/i-keys.yaml"),
},
hi: {
join: (_, match) => `- ${match}`,
keys: readKeys("./x2i/dictionaries/hi-keys.yaml"),
keys: readKeys("./x2i/i-keys.yaml"),
},
};
@ -81,9 +72,8 @@ const matchType: { [key: string]: IMatchInstructions } = {
* @returns Compiled keys.
*/
function readKeys(fpath: string) {
var keys: any = yaml
return yaml
.safeLoad(fs.readFileSync(fpath, "utf8"))
return keys
.map(compileKey)
.filter(Boolean) as CompiledReplacer[];
}
@ -157,8 +147,7 @@ export default function x2i(content: string) {
OuterXRegExp.forEach(content, regex, match => {
const parts = match.slice(2, 6);
if (parts.length === 4) {
var [k, l, m, r] = parts;
if (k === "hi") { m = m.replace(/\s/g, '').toLowerCase() }
const [k, l, m, r] = parts;
const converted = force(k, l, m, r); // eg x, [, text, ]
if (converted) {

1166
yarn.lock

File diff suppressed because it is too large Load Diff