module Samwise::Util

Public Class Methods

duns_contains_forbidden_characters?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 35
def self.duns_contains_forbidden_characters?(duns: nil)
  duns.split('').each do |character|
    return false if self.string_is_numeric?(string: character)
  end

  false
end
duns_is_eight_digits?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 55
def self.duns_is_eight_digits?(duns: nil)
  duns.length == 8
end
duns_is_nine_digits?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 59
def self.duns_is_nine_digits?(duns: nil)
  duns.length == 9
end
duns_is_properly_formatted?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 4
def self.duns_is_properly_formatted?(duns: nil)
  return false if duns.nil?

  duns = duns.gsub('-', '')

  return true if duns_contains_forbidden_characters?(duns: duns)

  return true if duns_is_seven_digits?(duns: duns)
  return true if duns_is_eight_digits?(duns: duns)
  return true if duns_is_nine_digits?(duns: duns)
  return true if duns_is_thirteen_digits?(duns: duns)

  return false
end
duns_is_seven_digits?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 51
def self.duns_is_seven_digits?(duns: nil)
  duns.length == 7
end
duns_is_thirteen_digits?(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 63
def self.duns_is_thirteen_digits?(duns: nil)
  duns.length == 13
end
format_duns(duns: nil) click to toggle source
# File lib/samwise/util.rb, line 19
def self.format_duns(duns: nil)
  raise Samwise::Error::InvalidFormat unless duns_is_properly_formatted?(duns: duns)

  duns = duns.gsub('-', '')

  if duns_is_nine_digits?(duns: duns)
    duns = "#{duns}0000"
  elsif duns_is_eight_digits?(duns: duns)
    duns = "0#{duns}0000"
  elsif duns_is_seven_digits?(duns: duns)
    duns = "00#{duns}0000"
  end

  duns
end
string_is_numeric?(string: nil) click to toggle source
# File lib/samwise/util.rb, line 43
def self.string_is_numeric?(string: nil)
  string.split('').each do |character|
    return false unless character.to_i.to_s == character
  end

  return true
end