vedic-chant: init
This commit is contained in:
107
vedic-chant/veda.ts
Normal file
107
vedic-chant/veda.ts
Normal 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
16
vedic-chant/veda.txt
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
रात्री॒ व्य॑ख्यदाय॒ती पु॑रु॒त्रा दे॒व्य१॒॑क्षभिः॑
|
||||||
|
विश्वा॒ अधि॒ श्रियो॑ऽधित
|
||||||
|
ओर्व॑प्रा॒ अम॑र्त्या नि॒वतो॑ दे॒व्यु१॒॑द्वतः॑
|
||||||
|
ज्योति॑षा बाधते॒ तमः॑
|
||||||
|
निरु॒ स्वसा॑रमस्कृतो॒षसं॑ दे॒व्या॑य॒ती
|
||||||
|
अपेदु॑ हासते॒ तमः॑
|
||||||
|
सा नो॑ अ॒द्य यस्या॑ व॒यं नि ते॒ याम॒न्नवि॑क्ष्महि
|
||||||
|
वृ॒क्षे न व॑स॒तिं वयः॑
|
||||||
|
नि ग्रामा॑सो अविक्षत॒ नि प॒द्वन्तो॒ नि प॒क्षिणः॑
|
||||||
|
नि श्ये॒नास॑श्चिद॒र्थिनः॑
|
||||||
|
या॒वया॑ वृ॒क्यं१॒॑ वृकं॑ य॒वय॑ स्ते॒नमू॑र्म्ये
|
||||||
|
अथा॑ नः सु॒तरा॑ भव
|
||||||
|
उप॑ मा॒ पेपि॑श॒त्तमः॑ कृ॒ष्णं व्य॑क्तमस्थित
|
||||||
|
उष॑ ऋ॒णेव॑ यातय
|
||||||
|
उप॑ ते॒ गा इ॒वाक॑रं वृणी॒ष्व दु॑हितर्दिवः
|
||||||
|
रात्रि॒ स्तोमं॒ न जि॒ग्युषे॑
|
||||||
Reference in New Issue
Block a user