class CurpGenerator::Curp
Constants
- MissingParamError
- PARAMS_TO_VALIDATE
Public Class Methods
new(data = {})
click to toggle source
# File lib/curp.rb, line 20 def initialize(data = {}) @first_name = data.dig(:first_name) @second_name = data.dig(:second_name) @first_last_name = parse_attribute(data.dig(:first_last_name)) @second_last_name = parse_attribute(data.dig(:second_last_name)) || '' @birth_date = data.dig(:birth_date) @birth_state = parse_attribute(data.dig(:birth_state)) @gender = data.dig(:gender) end
Public Instance Methods
generate()
click to toggle source
# File lib/curp.rb, line 30 def generate validate_params prefix = partial_curp prefix + verifying_digit(prefix) end
Private Instance Methods
first_four_curp_digits()
click to toggle source
# File lib/curp.rb, line 74 def first_four_curp_digits @first_four_curp_digits ||= first_last_name_element.first_character + first_last_name_element.next_vowel + second_last_name_element.first_character + first_name_element.first_character end
first_last_name_element()
click to toggle source
# File lib/curp.rb, line 82 def first_last_name_element @first_last_name_element ||= CurpGenerator::Element.new(@first_last_name) end
first_name_element()
click to toggle source
# File lib/curp.rb, line 90 def first_name_element @first_name_element ||= CurpGenerator::Element.new(validate_first_name) end
gender_character()
click to toggle source
# File lib/curp.rb, line 62 def gender_character @gender == 'male' ? 'H' : 'M' end
homoclave_digit()
click to toggle source
# File lib/curp.rb, line 70 def homoclave_digit @birth_date.year < 2000 ? '0' : 'A' end
partial_curp()
click to toggle source
# File lib/curp.rb, line 45 def partial_curp validate_first_four_curp_digits + parse_date(@birth_date, "%y") + parse_date(@birth_date, "%m") + parse_date(@birth_date, "%d") + gender_character + state_code + first_last_name_element.next_consonant + second_last_name_element.next_consonant + first_name_element.next_consonant + homoclave_digit end
second_last_name_element()
click to toggle source
# File lib/curp.rb, line 86 def second_last_name_element @second_last_name_element ||= CurpGenerator::Element.new(@second_last_name) end
state_code()
click to toggle source
# File lib/curp.rb, line 66 def state_code STATES.dig(@birth_state.upcase) || 'NE' end
validate_first_four_curp_digits()
click to toggle source
# File lib/curp.rb, line 58 def validate_first_four_curp_digits FORBIDDEN_WORDS.dig(first_four_curp_digits) || first_four_curp_digits end
validate_first_name()
click to toggle source
# File lib/curp.rb, line 94 def validate_first_name name = parse_attribute(@first_name) COMMON_NAMES.include?(name) ? @second_name : name end
validate_params()
click to toggle source
# File lib/curp.rb, line 39 def validate_params PARAMS_TO_VALIDATE.each do |param| raise MissingParamError, "Missing #{param}" if blank_string?(instance_variable_get("@#{param}")) end end