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 }