class Petrovich::Case::Rule
A case rule from the set of rules
Attributes
an_exception[R]
as[R]
gender[R]
modifiers[R]
tests[R]
Public Class Methods
new(opts)
click to toggle source
# File lib/petrovich/case/rule.rb, line 7 def initialize(opts) @gender = opts[:gender].to_sym.downcase @as = opts[:as] @an_exception = opts[:section] == :exceptions @modifiers = opts[:modifiers] @tests = opts[:tests] @tags = [] @tests_regexp = Regexp.union(Array(@tests).map(&:suffix)) end
Public Instance Methods
an_exception?()
click to toggle source
Is this exceptional rule?
# File lib/petrovich/case/rule.rb, line 32 def an_exception? an_exception == true end
get_modifier(name_case)
click to toggle source
# File lib/petrovich/case/rule.rb, line 36 def get_modifier(name_case) case name_case.to_sym when :nominative nil when :genitive modifiers[0] when :dative modifiers[1] when :accusative modifiers[2] when :instrumental modifiers[3] when :prepositional modifiers[4] else fail UnknownCaseError, "Unknown grammatic case: #{name_case}".freeze end end
match?(name, match_gender, match_as, known_gender = false)
click to toggle source
# File lib/petrovich/case/rule.rb, line 18 def match?(name, match_gender, match_as, known_gender = false) return false unless match_as == as if known_gender return false if match_gender != gender else return false if gender != :female && match_gender == :female return false if gender == :female && match_gender != :female end !!name.match(@tests_regexp) end