Compare commits

..

6 Commits

Author SHA1 Message Date
Daniel Løvbrøtte Olsen
f27347d6ec Merge branch 'develop' into 'master'
Develop

See merge request Dandellion/matrix-wug!14
2019-06-24 23:58:33 +00:00
Daniel Løvbrøtte Olsen
6ac0b87e0d Merge branch 'develop' into 'master'
2.3

See merge request Dandellion/matrix-wug!13
2019-03-15 13:12:14 +00:00
Daniel Løvbrøtte Olsen
3268701820 Merge branch 'develop' into 'master'
2.2.1

See merge request Dandellion/matrix-wug!12
2019-03-14 23:01:09 +00:00
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
8 changed files with 1376 additions and 1862 deletions

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: Guides to these systems can be found here:
X-sampa: https://en.wikipedia.org/wiki/X-SAMPA X-sampa: https://en.wikipedia.org/wiki/X-SAMPA
Z-sampa: https://web.archive.org/web/20191116002807/http://kneequickie.com/kq/Z-SAMPA Z-sampa: http://www.kneequickie.com/kq/Z-SAMPA
APIE: https://gist.github.com/xsduan/8ebd580be71214c57aa554ec9050916c 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. This is best learned by experimenting.
@ -39,4 +45,4 @@ You could also build a docker image but you're on your own there!
`npm install` and `npm start` `npm install` and `npm start`
If you use nix you can run shell.nix to get node and npm in your environment. If you use nix you can run shell.nix to get node and npm in your environment.
If you use direnv you can also load the shell automatically If you use direnv you can also load the shell automatically

View File

@ -1,4 +1,4 @@
const version = "2.4.4"; const version = "2.3.1";
import x2i from "./x2i"; import x2i from "./x2i";
import { existsSync } from "fs"; import { existsSync } from "fs";
@ -24,7 +24,6 @@ async function handle(roomId, event) {
if (event.unsigned.age > 1000 * 60) { console.log("Message was old!"); return; }; 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.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 === "!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 === "!xik") {xik(roomId); return;};
@ -47,13 +46,12 @@ function help(roomId) {
To use me, type a key together with either / or [] as delimeters To use me, type a key together with either / or [] as delimeters
x - X-SAMPA - https://en.wikipedia.org/wiki/X-SAMPA 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 z - Z-SAMPA - http://www.kneequickie.com/kq/Z-SAMPA
p - Proto-Indo-European Notation - https://gist.github.com/xsduan/8ebd580be71214c57aa554ec9050916c p - Proto-Indo-European Notation (see !xpie)
i - Inuktitut Syllabics - https://en.wikipedia.org/wiki/Inuktitut_syllabics i - Inuktitut Syllabics - https://en.wikipedia.org/wiki/Inuktitut_syllabics
ik - Iñupiatun Orthographies (see !xik) ik - Iñupiatun Orthographies (see !xik)
chr - Cherokee (see !xchr) - https://en.wikipedia.org/wiki/Cherokee_syllabary chr - Cherokee (see !xchr) - https://en.wikipedia.org/wiki/Cherokee_syllabary
nav - Navajo (see !xnav) 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 Find my source at https://github.com/Dali99/matrix-wug
@ -74,7 +72,7 @@ a following . is the syllabicity marker
h always becomes superscript and v is superscript w. 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. 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`; Thanks to conniebot (xsduan) for the encoding`;

1357
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,14 @@
{ {
"name": "matrix-wug", "name": "vugg",
"version": "2.4.3", "version": "1.1.0",
"description": "Language bot for matrix", "description": "Language bot for matrix",
"main": "index.js", "main": "index.js",
"bin": "build/index.js",
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",
"start": "node build/index.js" "start": "node build/index.js"
}, },
"author": "Daniel", "author": "Daniel",
"license": "AGPL3", "license": "ISC",
"dependencies": { "dependencies": {
"matrix-bot-sdk": "^0.3.2", "matrix-bot-sdk": "^0.3.2",
"@types/js-yaml": "^3.12.1", "@types/js-yaml": "^3.12.1",

View File

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

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

@ -68,10 +68,6 @@ const matchType: { [key: string]: IMatchInstructions } = {
join: (_, match) => `- ${match}`, join: (_, match) => `- ${match}`,
keys: readKeys("./x2i/dictionaries/i-keys.yaml"), keys: readKeys("./x2i/dictionaries/i-keys.yaml"),
}, },
hi: {
join: (_, match) => `- ${match}`,
keys: readKeys("./x2i/dictionaries/hi-keys.yaml"),
},
}; };
/** /**
@ -81,9 +77,8 @@ const matchType: { [key: string]: IMatchInstructions } = {
* @returns Compiled keys. * @returns Compiled keys.
*/ */
function readKeys(fpath: string) { function readKeys(fpath: string) {
var keys: any = yaml return yaml
.safeLoad(fs.readFileSync(fpath, "utf8")) .safeLoad(fs.readFileSync(fpath, "utf8"))
return keys
.map(compileKey) .map(compileKey)
.filter(Boolean) as CompiledReplacer[]; .filter(Boolean) as CompiledReplacer[];
} }
@ -157,8 +152,7 @@ export default function x2i(content: string) {
OuterXRegExp.forEach(content, regex, match => { OuterXRegExp.forEach(content, regex, match => {
const parts = match.slice(2, 6); const parts = match.slice(2, 6);
if (parts.length === 4) { if (parts.length === 4) {
var [k, l, m, r] = parts; const [k, l, m, r] = parts;
if (k === "hi") { m = m.replace(/\s/g, '').toLowerCase() }
const converted = force(k, l, m, r); // eg x, [, text, ] const converted = force(k, l, m, r); // eg x, [, text, ]
if (converted) { if (converted) {

1166
yarn.lock

File diff suppressed because it is too large Load Diff