lib/zenlish/wclasses/demonstrative_determiner.rb in zenlish-0.2.04 vs lib/zenlish/wclasses/demonstrative_determiner.rb in zenlish-0.2.05

- old
+ new

@@ -1,9 +1,46 @@ require_relative 'determiner' +require_relative '../inflect/inflection_table_builder' module Zenlish module WClasses - # TODO: document + # In grammar, a demonstrative is a determiner or a pronoun + # that points to a particular noun or to the noun it replaces (the antecedent). class DemonstrativeDeterminer < Determiner + def initialize + super() + init_feature_defs + init_paradigms + end + + # @return [FalseClass] Indicates that demonstrative determiners inflects. + def invariable? + false + end + + private + + def init_feature_defs + # Create standard feature definitions for irregular verbs. + feature_def_dsl { + feature_def 'NUMBER' => enumeration(:singular, :plural) + feature_def 'DISTANCE' => enumeration(:near, :far) + feature_def 'PARADIGM' => [identifier, 'Demonstrative_det_paradigm'] # 2nd item is default value + } + end + + def init_paradigms + builder = Inflect::InflectionTableBuilder.new + table = builder.build('Demonstrative_det_paradigm') do + feature_heading 'NUMBER' + feature_heading 'DISTANCE' + # NUMBER DISTANCE + rule([equals(:singular), equals(:near)], func('base_form')) + rule([equals(:singular), equals(:far)], literal('that')) + rule([equals(:plural), equals(:near)], literal('these')) + rule([equals(:plural), equals(:far), ], literal('those')) + end + add_paradigm(table) + end end # class end # module end # module