Sha256: 04159ad955e6ea68349a52623d7e0e117047226adc16ef736e9646b1f72c88c2

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

#!/usr/bin/ruby
# coding: utf-8

# This class contains the processing tools to convert arabic numbers to Geeze.
class Geezify
  ERROR_MSG_CONSTRUCTOR = 'invalid input the the input is not a number'.freeze
  ERROR_MSG1 = 'invalid input to method geezify_2digit'.freeze
  ERROR_MSG2 = 'invalid input to geezify_4digit'.freeze

  # constructor
  def initialize(num)
    raise ArgumentError, ERROR_MSG_CONSTRUCTOR unless num.integer?

    @num = num
  end

  def geezify
    @num
      .digits(10_000).reverse
      .map { |x| geezify_4digit(x) }
      .join('፼').gsub('፼፩፻', '፼፻')
      .gsub(/^፩፼/, '፼').gsub(/^(፩፻)/, '፻')
  end

  private

  def geezify_2digit(num)
    oneth_array = Array['', '፩', '፪', '፫', '፬', '፭', '፮', '፯', '፰', '፱']
    tenth_array = Array['', '፲', '፳', '፴', '፵', '፶', '፷', '፸', '፹', '፺']
    raise ArgumentError, ERROR_MSG1 unless num.integer? && num >= 0 && num < 100

    tenth_array[(num / 10)] + oneth_array[num % 10]
  end

  def geezify_4digit(num)
    raise ArgumentError, ERROR_MSG unless num.integer? && num < 10_000

    num.digits(100).reverse.map { |x| geezify_2digit(x) }.join('፻')
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
geezify-rb-0.1.0 lib/geezify.rb