lib/zenlish/wclasses/regular_verb.rb in zenlish-0.2.00 vs lib/zenlish/wclasses/regular_verb.rb in zenlish-0.2.01
- old
+ new
@@ -2,8 +2,40 @@
module Zenlish
module WClasses
# TODO: document 'touch'
class RegularVerb < LexicalVerb
+ def initialize
+ super
+ @paradigms = {}
+ init_paradigms
+ end
+
+ private
+
+ def init_paradigms
+ builder = Inflect::InflectionTableBuilder.new
+ table = builder.build('Regular_inflection') do
+ feature_heading 'PERSON'
+ feature_heading 'NUMBER'
+ feature_heading 'TIME'
+ method_heading 'base_form'
+ # PERSON NUMBER TIME base_form
+ rule([not_equal(:third), dont_care, 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, dont_care, equals(:progressive), matches(/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, in?(:past_simple, :past_participle), matches(/e$/)], concat(col('base_form'), 'd'))
+ rule([dont_care, dont_care, in?(:past_simple, :past_participle), matches(/[^aeiouy]y$/)], sub(col('base_form'), /y$/, 'ied'))
+ rule([dont_care, dont_care, in?(:past_simple, :past_participle), dont_care], concat(col('base_form'), 'ed'))
+ end
+ add_paradigm(table)
+ end
+
+ def add_paradigm(anInflectionTable)
+ @paradigms[anInflectionTable.name] = anInflectionTable
+ end
end # class
end # module
end # module
\ No newline at end of file