ministryofjustice/atet

View on GitHub
app/services/application_reference.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'base32_pure'

class ApplicationReference
  def self.generate
    hyphenate(Base32::Crockford.encode(SecureRandom.random_bytes(5)))
  end

  def self.normalize(str)
    hyphenate(str.upcase.tr('IOL', '101').gsub(/[^0-9A-Z]/, ''))
  end

  def self.hyphenate(digits)
    digits.scan(/.{1,4}/).join('-')
  end
end