Class: Linguistics::Latin::Verb::LatinVerb

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/latinverb.rb,
lib/latinverb/errors.rb,
lib/latinverb/version.rb,
lib/latinverb/paradigmatic_verbs.rb,
lib/latinverb/serialization/hash.rb,
lib/latinverb/serialization/json.rb,
lib/latinverb/serialization/yaml.rb,
lib/latinverb/components/validator.rb,
lib/latinverb/components/classifier.rb,
lib/latinverb/components/participler.rb,
lib/latinverb/components/stem_deriver.rb,
lib/latinverb/dynamic_method_resolver.rb,
lib/latinverb/tense_method_applicator.rb,
lib/latinverb/components/infinitivizer.rb,
lib/latinverb/components/type_evaluator.rb,
lib/latinverb/components/chart_presenter.rb,
lib/latinverb/components/imperatives_handler.rb,
lib/latinverb/tense_method_applicator/fourth.rb,
lib/latinverb/components/present_only_checker.rb,
lib/latinverb/components/principal_parts_extractor.rb,
lib/latinverb/components/passive_infinitive_factory.rb,
lib/latinverb/tense_method_applicator/first_builder.rb,
lib/latinverb/tense_method_applicator/third_builder.rb,
lib/latinverb/tense_method_applicator/fourth_builder.rb,
lib/latinverb/tense_method_applicator/second_builder.rb,
lib/latinverb/tense_method_applicator/thirdio_builder.rb,
lib/latinverb/tense_method_applicator/mutators/regular.rb,
lib/latinverb/tense_method_applicator/defective_checker.rb,
lib/latinverb/tense_method_applicator/irregular_builder.rb,
lib/latinverb/tense_method_applicator/mutators/deponent.rb,
lib/latinverb/tense_method_applicator/mutators/invariant.rb,
lib/latinverb/tense_method_applicator/mutators/irregular.rb,
lib/latinverb/tense_method_applicator/mutators/impersonal.rb,
lib/latinverb/tense_method_applicator/mutator_for_verb_type.rb,
lib/latinverb/tense_method_applicator/mutators/present_only.rb,
lib/latinverb/tense_method_applicator/mutators/semideponent.rb,
lib/latinverb/tense_method_applicator/perfect_tense_remover.rb,
lib/latinverb/tense_method_applicator/deponent_string_deriver.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/imperatives.rb,
lib/latinverb/tense_method_applicator/mutator_for_classification_factory.rb,
lib/latinverb/tense_method_applicator/mutators/irregular/json_revivifier.rb,
lib/latinverb/tense_method_applicator/mutators/deponent/imperative_mutator.rb,
lib/latinverb/tense_method_applicator/mutators/deponent/infinitive_mutator.rb,
lib/latinverb/tense_method_applicator/mutators/deponent/participle_mutator.rb,
lib/latinverb/tense_method_applicator/mutators/irregular/json_deserializer.rb,
lib/latinverb/components/classifier/strategies/verb_classification_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/deponent/tense_block_mutator.rb,
lib/latinverb/tense_method_applicator/mutators/irregular/infinitives_builder.rb,
lib/latinverb/tense_method_applicator/mutators/irregular/participles_builder.rb,
lib/latinverb/components/classifier/strategies/regular_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/deponent_verb_classification_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/irregular/present_only_irregular_mask.rb,
lib/latinverb/components/classifier/strategies/defective_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/irregular_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/impersonal_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/present_only_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/semideponent_verb_classification_strategy.rb,
lib/latinverb/components/classifier/strategies/very_irregular_verb_classification_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/triplicate_and_pluralize_formatters.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_imperative_mood_future_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_future_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_imperative_mood_present_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_perfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_present_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_future_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_subjunctive_mood_perfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_subjunctive_mood_present_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_perfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_present_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_imperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_subjunctive_mood_perfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_subjunctive_mood_present_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_subjunctive_mood_imperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_imperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_pastperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_subjunctive_mood_imperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_subjunctive_mood_pastperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_pastperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/active_voice_indicative_mood_futureperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_subjunctive_mood_pastperfect_tense_strategy.rb,
lib/latinverb/tense_method_applicator/mutators/invariant/passive_voice_indicative_mood_futureperfect_tense_strategy.rb

Defined Under Namespace

Modules: Mutators Classes: ChartPresenter, DefectiveChecker, DeponentStringDeriver, DynamicMethodResolver, ImperativesHandler, Infinitivizer, LatinVerbClassifier, LatinVerbInitializationError, LatinVerbPrincipalPartsExtractor, LatinVerbTypeEvaluator, LatinverbStemDeriver, Participler, PerfectTenseRemover, PresentOnlyChecker, TenseMethodApplicator, Validator

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ LatinVerb

Returns a new instance of LatinVerb.



37
38
39
40
41
42
43
# File 'lib/latinverb.rb', line 37

def initialize(data)
  classify(data)
  build_validator
  apply_parts_of_speech!
  apply_tenses!
  apply_chart_capabilities!
end

Instance Attribute Details

#classifierObject (readonly)

Returns the value of attribute classifier.



35
36
37
# File 'lib/latinverb.rb', line 35

def classifier
  @classifier
end

#original_stringObject (readonly)

Returns the value of attribute original_string.



35
36
37
# File 'lib/latinverb.rb', line 35

def original_string
  @original_string
end

#verb_methodsObject (readonly)

Returns the value of attribute verb_methods.



35
36
37
# File 'lib/latinverb.rb', line 35

def verb_methods
  @verb_methods
end

Class Method Details

.json_create(o) ⇒ Object



7
8
9
# File 'lib/latinverb/serialization/json.rb', line 7

def self.json_create(o)
  new(o)
end

Instance Method Details

#displayObject



49
50
51
# File 'lib/latinverb.rb', line 49

def display
  pretty_generate
end

#pretty_generateObject



35
36
37
# File 'lib/latinverb/serialization/json.rb', line 35

def pretty_generate
  JSON.pretty_generate(self.to_h)
end

#to_hashObject Also known as: to_h



5
6
7
8
9
10
11
# File 'lib/latinverb/serialization/hash.rb', line 5

def to_hash
  methods.grep(/tense\z/).inject({'original_string' => @original_string}) do |memo, tense_block_identifier|
    ts = tense_block_identifier.to_sym
    memo[ts] = self.send(ts)
    memo
  end
end

#to_json(*a) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/latinverb/serialization/json.rb', line 11

def to_json(*a)
  json_hash = {'json_class' => self.class.name}

  # In the case that we're working with a regular verb, the only thing
  # we need to save is the original string, since everything can be
  # re-derived from it easily.
  unless self.irregular?
    # While this single string is sufficient to freeze and revivifty
    # the verb, it means that the JSON structure is rather vacuous.
    # Given this, the hash is enriched so that the JSON data is
    # useful.  Nevertheless, in the revivification process, only
    # 'orig_string' is used.
    %w{original_string classification stem}.each do |k|
      json_hash[k] = self.send k.to_sym
    end
    json_hash['tense_list' ]  = {}
    methods.grep(/tense\z/).each do |t|
      json_hash['tense_list'][t.to_s] = self.send t.to_sym
    end
    json_hash['irregular']    = irregular?
    return json_hash.to_json(*a)
  end
end

#to_sObject



45
46
47
# File 'lib/latinverb.rb', line 45

def to_s
  sprintf("%s [%s]", short_class, original_string)
end

#to_yamlObject Also known as: to_y



7
8
9
# File 'lib/latinverb/serialization/yaml.rb', line 7

def to_yaml
  to_hash.to_yaml
end