class Jan::CodeBody
Public Class Methods
new(code_body)
click to toggle source
@param code_body [String]
Calls superclass method
# File lib/jan/code_body.rb, line 6 def initialize(code_body) @code_body = code_body super(code_body) end
Public Instance Methods
calculate_check_digit()
click to toggle source
@return [Jan::CheckDigit]
# File lib/jan/code_body.rb, line 17 def calculate_check_digit # http://www.dsri.jp/jan/check_digit.html even_position_digits, odd_position_digits = @code_body.reverse.each_char.partition.with_index(2) {|_chr, idx| idx.even? } sum = even_position_digits.map{|d| Integer(d) }.sum * 3 + odd_position_digits.map{|d| Integer(d) }.sum digit = (10 - sum % 10).to_s[-1] Jan::CheckDigit.new(digit) end
generate_code()
click to toggle source
@return [Jan::Code]
# File lib/jan/code_body.rb, line 26 def generate_code Jan::Code.new(@code_body + calculate_check_digit) end
valid?()
click to toggle source
@return [boolean]
# File lib/jan/code_body.rb, line 12 def valid? @code_body.match?(/\A(\d{12}|\d{7})\z/) end