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

rule_set[RW]

A place that keeps inflection and gender rules loaded from yaml file.

@return Petrovich::RuleSet

Public Class Methods

assert_case!(name_case) click to toggle source

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
assert_name!(name) click to toggle source

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
load_rules!() click to toggle source

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
normalize_name(name) click to toggle source

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