Class: Linguistics::Latin::Verb::LatinVerb::LatinVerbClassifier
- Inherits:
-
Object
- Object
- Linguistics::Latin::Verb::LatinVerb::LatinVerbClassifier
- Defined in:
- lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb
Overview
ARGUMENTS
* s :: a "four principal parts" string whence can be derived
the first person singular present indicative as well as the
infinitive
RETURNS
The classification, a subclass of VerbType
PURPOSE
Given the principal parts as a string, decide which conjuation is in play
}}
Instance Attribute Summary collapse
-
#classification ⇒ Object
readonly
{{{.
Instance Method Summary collapse
- #classify(s) ⇒ Object
- #deponent? ⇒ Boolean
- #impersonal? ⇒ Boolean
-
#initialize(input) ⇒ LatinVerbClassifier
constructor
A new instance of LatinVerbClassifier.
- #irregular? ⇒ Boolean
- #present_only? ⇒ Boolean
- #regular? ⇒ Boolean
- #semideponent? ⇒ Boolean
- #set_as_defective ⇒ Object
Constructor Details
#initialize(input) ⇒ LatinVerbClassifier
Returns a new instance of LatinVerbClassifier.
32 33 34 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 32 def initialize(input) @classification = self.classify input end |
Instance Attribute Details
#classification ⇒ Object (readonly)
{{{
30 31 32 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 30 def classification @classification end |
Instance Method Details
#classify(s) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 36 def classify(s) divided_string = s.split( /\s+/ ) first_pres = divided_string[0] || '' infinitive = divided_string[1] || '' return Linguistics::Latin::Verb::Classification::Defective if Linguistics::Latin::Verb::LatinVerb::DEFECTIVE_VERBS.member? first_pres return Linguistics::Latin::Verb::Classification::Irregular if Linguistics::Latin::Verb::LatinVerb::IRREGULAR_VERBS.member? first_pres return Linguistics::Latin::Verb::Classification::Semideponent if Linguistics::Latin::Verb::LatinVerb::SEMI_DEPONENTS.keys.any?{ |k| first_pres=~/#{k}$/} && s !~ /PreventDeponentInfiniteRegress/ return Linguistics::Latin::Verb::Classification::Impersonal if Linguistics::Latin::Verb::LatinVerb::IMPERSONAL_VERBS.member? s # Very irregular irregulars, A&G206, e/f return Linguistics::Latin::Verb::Classification::Irregular if s =~ %r'^(aiō|quaesō|ovāre)$' return Linguistics::Latin::Verb::Classification::Deponent if (infinitive =~ /ī$/ and first_pres =~ /r$/) return Linguistics::Latin::Verb::Classification::Regular end |
#deponent? ⇒ Boolean
77 78 79 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 77 def deponent? @deponent ||= (@classification == Linguistics::Latin::Verb::Classification::Deponent) end |
#impersonal? ⇒ Boolean
85 86 87 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 85 def impersonal? @impersonal ||= (@classification == Linguistics::Latin::Verb::Classification::Impersonal) end |
#irregular? ⇒ Boolean
89 90 91 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 89 def irregular? @irregular = @classification == Linguistics::Latin::Verb::Classification::Irregular end |
#present_only? ⇒ Boolean
73 74 75 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 73 def present_only? @present_only ||= ( @classification == Linguistics::Latin::Verb::Classification::PresentOnly ) end |
#regular? ⇒ Boolean
93 94 95 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 93 def regular? @regular = @classification == Linguistics::Latin::Verb::Classification::Regular end |
#semideponent? ⇒ Boolean
81 82 83 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 81 def semideponent? @semideponent ||= (@classification == Linguistics::Latin::Verb::Classification::Semideponent) end |
#set_as_defective ⇒ Object
67 68 69 70 71 |
# File 'lib/linguistics/latin/verb/latinverb/latinverb_classifier.rb', line 67 def set_as_defective unless @classification == Linguistics::Latin::Verb::Classification::Impersonal @classification = Linguistics::Latin::Verb::Classification::PresentOnly end end |