module Petrovich
A library to inflect Russian anthroponyms such as first names, last names, and middle names.
Constants
- CASES
Possible cases
- GENDERS
Possible genders
- VERSION
Attributes
A place that keeps inflection and gender rules loaded from yaml file.
@return Petrovich::RuleSet
Public Class Methods
Checks passed argument that should be member of {CASES}
Raises an ArgumentError if passed argument not in {CASES}
@example
Petrovich.assert_case!(name_case)
@param [Foo] name_case Value
to check
# File lib/petrovich.rb, line 67 def assert_case!(name_case) return if CASES.include?(name_case) fail ArgumentError, "Unknown case #{name_case}" end
Checks name that should be value object, instance of {Petrovich::Value}
Raises an ArgumentError if passed argument not of type Petrovich::Value
or all values is empty in this object.
@example
Petrovich.assert_name!(name)
@param [Foo] name Value
to check
# File lib/petrovich.rb, line 49 def assert_name!(name) unless name.is_a?(Value) fail ArgumentError, 'Passed argument should be Petrovich::Value instace'.freeze end if [name.lastname, name.firstname, name.middlename].compact.size == 0 fail ArgumentError, 'You should set at least one of :lastname, :firstname or :middlename'.freeze end end
Loads YAML rules into {Petrovich::RuleSet} object @return [void]
# File lib/petrovich.rb, line 86 def load_rules! self.rule_set ||= RuleSet.new self.rule_set.load! end
Converts hash to {Petrovich::Value} value object
@example
Petrovich.normalize_name(firstname: 'Иван', lastname: 'Иванов')
@param [Hash] name Value
hash with lastname, firstname, middlename @return [Petrovich::Value] Value
object
# File lib/petrovich.rb, line 79 def normalize_name(name) name = Value.new(name) if name.is_a?(Hash) name end