class Linguistics::Latin::Verb::LatinVerb::Classifier

Public Class Methods

new(verb, opts={}) click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 7
def initialize(verb, opts={})
  @verb, @opts = verb, opts
end

Public Instance Methods

classification() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 11
def classification
  @c ||= strategies.detect { |s| s.new(self).applicable? }.classification
end
deponent?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 28
def deponent?
  classification == Linguistics::Latin::Verb::Classification::Deponent
end
impersonal?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 36
def impersonal?
  classification == Linguistics::Latin::Verb::Classification::Impersonal
end
input() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 15
def input
  @input ||= @verb.original_string
end
irregular?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 40
def irregular?
  classification == Linguistics::Latin::Verb::Classification::Irregular
end
present_only?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 23
def present_only?
  classification == Linguistics::Latin::Verb::Classification::PresentOnly ||
    extremely_irregular?
end
proxy_verb?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 19
def proxy_verb?
  !!@verb.options[:proxy_verb]
end
regular?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 44
def regular?
  classification == Linguistics::Latin::Verb::Classification::Regular
end
semideponent?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 32
def semideponent?
  classification == Linguistics::Latin::Verb::Classification::Semideponent
end
short_class() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 48
def short_class
  classification.to_s.split('::').last
end

Private Instance Methods

default_strategies() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 58
def default_strategies
  [
    DefectiveVerbClassificationStrategy,
    IrregularVerbClassificationStrategy,
    SemideponentVerbClassificationStrategy,
    ImpersonalVerbClassificationStrategy,
    VeryIrregularVerbClassificationStrategy,
    PresentonlyVerbClassificationStrategy,
    DeponentVerbClassificationStrategy,
    RegularVerbClassificationStrategy
  ]
end
extremely_irregular?() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 71
def extremely_irregular?
  classification == Linguistics::Latin::Verb::Classification::Irregular &&
    VeryIrregularVerbClassificationStrategy.new(self).applicable?
end
strategies() click to toggle source
# File lib/latinverb_classifier/classifier.rb, line 54
def strategies
  @strategies ||= (@opts[:strategies] || default_strategies)
end