aboutsummaryrefslogtreecommitdiff
path: root/src/phonemes/vowel.rs
diff options
context:
space:
mode:
authorAlexander Kassouni <alex@kassouni.net>2026-09-05 22:43:52 -0700
committerAlexander Kassouni <alex@kassouni.net>2026-09-05 22:43:52 -0700
commit24ec2a92b56ca4296fe65b70524e36a8e1c67c2e (patch)
tree51fd27e87cbd419ab74f016852fbaa2d86babd9a /src/phonemes/vowel.rs
parent7f5dd54c60c70f29d0c8abedc28dd5ed199de94d (diff)
phonemes
Diffstat (limited to 'src/phonemes/vowel.rs')
-rw-r--r--src/phonemes/vowel.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/phonemes/vowel.rs b/src/phonemes/vowel.rs
new file mode 100644
index 0000000..622185d
--- /dev/null
+++ b/src/phonemes/vowel.rs
@@ -0,0 +1,38 @@
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum Vowel {
+ A,
+ I,
+ U,
+ E,
+ O,
+ N,
+}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum VowelLen {
+ Short,
+ Long,
+}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct VowelPhoneme(pub Vowel, pub VowelLen);
+
+impl VowelPhoneme {
+ pub const fn code(self) -> u8 {
+ use Vowel::*;
+ use VowelLen::*;
+ match (self.0, self.1) {
+ (A, Short) => 0x01,
+ (A, Long) => 0x02,
+ (I, Short) => 0x14,
+ (I, Long) => 0x15,
+ (U, Short) => 0x29,
+ (U, Long) => 0x2A,
+ (E, Short) => 0x0A,
+ (E, Long) => 0x0E,
+ (O, Short) => 0x1D,
+ (O, Long) => 0x1E,
+ (N, _) => 0x1B,
+ }
+ }
+}