vedic-chant: init

This commit is contained in:
2023-01-07 12:17:07 +01:00
parent c8e80b34c0
commit 2670c7eed5
2 changed files with 123 additions and 0 deletions

107
vedic-chant/veda.ts Normal file
View File

@@ -0,0 +1,107 @@
import { readLines } from "https://deno.land/std/io/buffer.ts";
enum Category {
LongVowel = "A",
ShortVowel = "a",
NoVowel = "0",
Consonant = "C",
Low = "-",
High = "+",
Anusvara = "M",
Visarga = "H",
Space = "_",
Pause = " ",
One = "1",
}
function category(devanagari: string): Category {
switch (devanagari) {
case "ि":
case "ु":
case "अ":
case "इ":
case "उ":
case "ृ":
case "ऋ":
case "ॢ":
case "ऌ":
return Category.ShortVowel;
case "ी":
case "ू":
case "ो":
case "े":
case "ा":
case "ई":
case "ऊ":
case "ओ":
case "ए":
case "औ":
case "ऐ":
case "ै":
case "ौ":
case "ॄ":
case "ॣ":
case "ॠ":
case "ॡ":
return Category.LongVowel;
case "॒":
return Category.Low;
case "॑":
return Category.High;
case "ं":
case "म":
case "ँ":
return Category.Anusvara;
case "्":
return Category.NoVowel;
case " ":
case " ":
case "ऽ":
return Category.Space;
case "\n":
return Category.Pause;
case "१":
return Category.One;
case "":
return Category.Visarga;
default:
return Category.Consonant;
}
}
for await (const line of readLines(Deno.stdin)) {
const tokenized = [...line]
.map(category)
.join("")
.replace(/C([^a0A])/g, (x) => `Ca${x[1]}`)
.replace(/M([^a0A_])/g, (x) => `Ma${x[1]}`)
.replace(/M([aA])/g, (x) => `C${x[1]}`)
.replace(/C0/g, "C")
.replace(/M0/g, "M");
console.error(tokenized);
const vowels = tokenized.match(/[Aa]1?[+-]*M?/g);
for (const vowel of vowels) {
if (vowel == "a-") {
console.log("246 250");
} else if (vowel == "a") {
console.log("275 250");
} else if (vowel == "a+") {
console.log("296 250");
} else if (vowel == "A-" || vowel == "aM-" || vowel == "AM-") {
console.log("246 1000");
} else if (vowel == "A" || vowel == "aM" || vowel == "AM") {
console.log("275 1000");
} else if (vowel == "A+" || vowel == "aM+" || vowel == "AM+") {
console.log("275 500");
console.log("296 1000");
} else if (vowel == "a1-+" || vowel == "A1-+") {
console.log("296 250");
console.log("275 1000");
}
// console.log("0 50");
}
console.log("0 200");
}

16
vedic-chant/veda.txt Normal file
View File

@@ -0,0 +1,16 @@
रात्री॒ व्य॑ख्यदाय॒ती पु॑रु॒त्रा दे॒व्य१॒॑क्षभिः॑ 
विश्वा॒ अधि॒ श्रियो॑ऽधित 
ओर्व॑प्रा॒ अम॑र्त्या नि॒वतो॑ दे॒व्यु१॒॑द्वतः॑ 
ज्योति॑षा बाधते॒ तमः॑ 
निरु॒ स्वसा॑रमस्कृतो॒षसं॑ दे॒व्या॑य॒ती 
अपेदु॑ हासते॒ तमः॑ 
सा नो॑ अ॒द्य यस्या॑ व॒यं नि ते॒ याम॒न्नवि॑क्ष्महि 
वृ॒क्षे न व॑स॒तिं वयः॑ 
नि ग्रामा॑सो अविक्षत॒ नि प॒द्वन्तो॒ नि प॒क्षिणः॑ 
नि श्ये॒नास॑श्चिद॒र्थिनः॑ 
या॒वया॑ वृ॒क्यं१॒॑ वृकं॑ य॒वय॑ स्ते॒नमू॑र्म्ये 
अथा॑ नः सु॒तरा॑ भव 
उप॑ मा॒ पेपि॑श॒त्तमः॑ कृ॒ष्णं व्य॑क्तमस्थित 
उष॑ ऋ॒णेव॑ यातय 
उप॑ ते॒ गा इ॒वाक॑रं वृणी॒ष्व दु॑हितर्दिवः 
रात्रि॒ स्तोमं॒ न जि॒ग्युषे॑