class Faker::Code
Public Instance Methods
isbn(base = 10)
click to toggle source
By default generates 10 sign isbn code in format 123456789-X You can pass 13 to generate new 13 sign code
# File lib/faker/code.rb, line 6 def isbn(base = 10) base == 13 ? generate_base13_isbn : generate_base10_isbn end
Private Instance Methods
generate_base10_isbn()
click to toggle source
# File lib/faker/code.rb, line 12 def generate_base10_isbn values = regexify(/\d{9}/) remainder = sum(values) { |value, index| (index + 1) * value.to_i } % 11 values << "-#{remainder == 10 ? 'X' : remainder}" end
generate_base13_isbn()
click to toggle source
# File lib/faker/code.rb, line 18 def generate_base13_isbn values = regexify(/\d{12}/) remainder = sum(values) { |value, index| index.even? ? value.to_i : value.to_i * 3 } % 10 values << "-#{((10 - remainder) % 10)}" end
sum(values, &block)
click to toggle source
# File lib/faker/code.rb, line 24 def sum(values, &block) values.split(//).each_with_index.inject(0) do |sum, (value, index)| sum + block.call(value, index) end end