Sha256: 53ac3fae6530cd9c2d8484c4af419ab02a0e9e7342b3f6336031d115e8cf635e

Contents?: true

Size: 563 Bytes

Versions: 1

Compression:

Stored size: 563 Bytes

Contents

# frozen_string_literal: true

module UnambiguousString
  require_relative "unambiguous_string/version"

  NUMBERS = ("0".."9").to_a.freeze
  LETTERS = ("a".."z").to_a.freeze
  ALL_CHARS = (NUMBERS + LETTERS).freeze
  AMBIGUOUS = %w[1 l i 0 o 6 b 2 z].freeze
  UNAMBIGUOUS_CHARS = (ALL_CHARS - AMBIGUOUS).freeze

  def self.call(joiner: "-", size: 10, groups: 1)
    chars = size.times.map { UNAMBIGUOUS_CHARS.sample }
    groups = chars.each_slice(size / groups).map(&:join)
    groups.join(joiner)
  end
end

puts UnambiguousString.call(groups: 2, joiner: ".")

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
unambiguous_string-0.1.0 lib/unambiguous_string.rb