class Zenlish::WClasses::IrregularVerb

Attributes

forms[W]

@return [Array<String>] [the past simple form, past participle form].

Public Instance Methods

extension() click to toggle source

The mix-in module used to extend the lexeme @return [Module, NilClass]

# File lib/zenlish/wclasses/irregular_verb.rb, line 14
def extension
  IrregularVerbExtension
end

Private Instance Methods

init_feature_defs() click to toggle source
Calls superclass method
# File lib/zenlish/wclasses/irregular_verb.rb, line 20
def init_feature_defs
  super
  # Create standard feature definitions for irregular verbs.
  feature_def_dsl do
    feature_def 'PARADIGM' => [identifier, 'Irregular_inflection'] # 2nd item is default value
  end
end
init_paradigms() click to toggle source
# File lib/zenlish/wclasses/irregular_verb.rb, line 28
def init_paradigms
  builder = Inflect::InflectionTableBuilder.new
  table = builder.build('Irregular_inflection') do
    feature_heading 'PERSON'
    feature_heading 'NUMBER'
    feature_heading 'TIME'
    method_heading  'base_form'
    #     PERSON             NUMBER             TIME                      base_form
    rule([not_equal(:third), equals(:singular), equals(:present),         dont_care], col('base_form'))
    rule([equals(:third),    equals(:singular), equals(:present),         matches(/[^aeiouy]y$/)], sub(col('base_form'), /y$/, 'ies'))
    rule([equals(:third),    equals(:singular), equals(:present),         matches(/(?:[osxz]|ch|sh)$/)], concat(col('base_form'), 'es'))
    rule([equals(:third),    equals(:singular), equals(:present),         dont_care], concat(col('base_form'), 's'))
    rule([dont_care,         equals(:plural),   equals(:present),         dont_care], col('base_form'))
    rule([dont_care,         dont_care,         equals(:progressive),     matches(/ie$/)], sub(col('base_form'), /ie$/, 'ying'))
    rule([dont_care,         dont_care,         equals(:progressive),     matches(/[^eoy]e$/)], sub(col('base_form'), /e$/, 'ing'))
    rule([dont_care,         dont_care,         equals(:progressive),     dont_care], concat(col('base_form'), 'ing'))
    rule([dont_care,         dont_care,         equals(:past_simple),     dont_care], func('past_simple'))
    rule([dont_care,         dont_care,         equals(:past_participle), dont_care], func('past_participle'))
  end
  add_paradigm(table)
end