module FFaker::ModuleUtils

Public Instance Methods

const_missing(const_name) click to toggle source
Calls superclass method
# File lib/ffaker/utils/module_utils.rb, line 15
def const_missing(const_name)
  if const_name.match?(/[a-z]/) # Not a constant, probably a class/module name.
    super const_name
  else
    mod_name = ancestors.first.to_s.split('::').last
    data_path = "#{FFaker::BASE_LIB_PATH}/ffaker/data/#{underscore(mod_name)}/#{underscore(const_name.to_s)}"
    data = k File.read(data_path, mode: 'r:UTF-8').split("\n")
    const_set const_name, data
    data
  end
end
k(arg) click to toggle source
# File lib/ffaker/utils/module_utils.rb, line 11
def k(arg)
  FFaker::ArrayUtils.const_array(arg)
end
luhn_check(number) click to toggle source

en.wikipedia.org/wiki/Luhn_algorithm

# File lib/ffaker/utils/module_utils.rb, line 40
def luhn_check(number)
  multiplications = []

  number.chars.each_with_index do |digit, i|
    multiplications << i.even? ? digit.to_i * 2 : digit.to_i
  end

  sum = 0
  multiplications.each do |num|
    num.to_s.each_byte do |character|
      sum += character.chr.to_i
    end
  end

  control_digit = (sum % 10).zero? ? 0 : (((sum / 10) + 1) * 10) - sum
  control_digit.to_s
end
underscore(string) click to toggle source
# File lib/ffaker/utils/module_utils.rb, line 27
def underscore(string)
  string.gsub('::', '/')
        .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
        .gsub(/([a-z\d])([A-Z])/, '\1_\2')
        .tr('-', '_')
        .downcase
end
unique(max_retries = 10_000) click to toggle source
# File lib/ffaker/utils/module_utils.rb, line 35
def unique(max_retries = 10_000)
  FFaker::UniqueUtils.add_instance(self, max_retries)
end