Skip to main content

english_core/
adj.rs

1use crate::EnglishCore;
2use crate::grammar::*;
3
4impl EnglishCore {
5    pub fn adjective(word: &str, degree: &Degree) -> String {
6        match degree {
7            Degree::Positive => word.to_string(),
8            Degree::Comparative => Self::comparative(word),
9            Degree::Superlative => Self::superlative(word),
10        }
11    }
12    pub fn superlative(word: &str) -> String {
13        format!("most {}", word)
14    }
15    pub fn comparative(word: &str) -> String {
16        format!("more {}", word)
17    }
18    pub fn pronoun(person: &Person, number: &Number, gender: &Gender, case: &Case) -> &'static str {
19        match number {
20            Number::Singular => match person {
21                Person::First => match case {
22                    Case::Nominative => "I",
23                    Case::Accusative => "me",
24                    Case::Reflexive => "myself",
25                    Case::Possessive => "mine",
26                    Case::PersonalPossesive => "my",
27                },
28                Person::Second => match case {
29                    Case::Nominative => "you",
30                    Case::Accusative => "you",
31                    Case::Reflexive => "yourself",
32                    Case::Possessive => "yours",
33                    Case::PersonalPossesive => "your",
34                },
35                Person::Third => match gender {
36                    Gender::Masculine => match case {
37                        Case::Nominative => "he",
38                        Case::Accusative => "him",
39                        Case::Reflexive => "himself",
40                        Case::Possessive => "his",
41                        Case::PersonalPossesive => "his",
42                    },
43                    Gender::Feminine => match case {
44                        Case::Nominative => "she",
45                        Case::Accusative => "her",
46                        Case::Reflexive => "herself",
47                        Case::Possessive => "hers",
48                        Case::PersonalPossesive => "her",
49                    },
50                    Gender::Neuter => match case {
51                        Case::Nominative => "it",
52                        Case::Accusative => "it",
53                        Case::Reflexive => "itself",
54                        Case::Possessive => "its",
55                        Case::PersonalPossesive => "its",
56                    },
57                },
58            },
59            Number::Plural => match person {
60                Person::First => match case {
61                    Case::Nominative => "we",
62                    Case::Accusative => "us",
63                    Case::Reflexive => "ourselves",
64                    Case::Possessive => "ours",
65                    Case::PersonalPossesive => "our",
66                },
67                Person::Second => match case {
68                    Case::Nominative => "you",
69                    Case::Accusative => "you",
70                    Case::Reflexive => "yourselves",
71                    Case::Possessive => "yours",
72                    Case::PersonalPossesive => "your",
73                },
74                Person::Third => match case {
75                    Case::Nominative => "they",
76                    Case::Accusative => "them",
77                    Case::Reflexive => "themselves",
78                    Case::Possessive => "theirs",
79                    Case::PersonalPossesive => "their",
80                },
81            },
82        }
83    }
84    //dog's -> dogs', child's -> children's, Mary's -> Marys'
85    //  pub fn genitive_adjective(word: &str, number: &Number) -> String {}
86}