diff --git a/vedic-chant/veda.ts b/vedic-chant/veda.ts new file mode 100644 index 0000000..564903c --- /dev/null +++ b/vedic-chant/veda.ts @@ -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"); +} diff --git a/vedic-chant/veda.txt b/vedic-chant/veda.txt new file mode 100644 index 0000000..5d76c83 --- /dev/null +++ b/vedic-chant/veda.txt @@ -0,0 +1,16 @@ +रात्री॒ व्य॑ख्यदाय॒ती पु॑रु॒त्रा दे॒व्य१॒॑क्षभिः॑  +विश्वा॒ अधि॒ श्रियो॑ऽधित  +ओर्व॑प्रा॒ अम॑र्त्या नि॒वतो॑ दे॒व्यु१॒॑द्वतः॑  +ज्योति॑षा बाधते॒ तमः॑  +निरु॒ स्वसा॑रमस्कृतो॒षसं॑ दे॒व्या॑य॒ती  +अपेदु॑ हासते॒ तमः॑  +सा नो॑ अ॒द्य यस्या॑ व॒यं नि ते॒ याम॒न्नवि॑क्ष्महि  +वृ॒क्षे न व॑स॒तिं वयः॑  +नि ग्रामा॑सो अविक्षत॒ नि प॒द्वन्तो॒ नि प॒क्षिणः॑  +नि श्ये॒नास॑श्चिद॒र्थिनः॑  +या॒वया॑ वृ॒क्यं१॒॑ वृकं॑ य॒वय॑ स्ते॒नमू॑र्म्ये  +अथा॑ नः सु॒तरा॑ भव  +उप॑ मा॒ पेपि॑श॒त्तमः॑ कृ॒ष्णं व्य॑क्तमस्थित  +उष॑ ऋ॒णेव॑ यातय  +उप॑ ते॒ गा इ॒वाक॑रं वृणी॒ष्व दु॑हितर्दिवः  +रात्रि॒ स्तोमं॒ न जि॒ग्युषे॑