class GeezifyRb::Geezify

This class contains the processing tools to convert arabic numbers to Geeze.

Constants

ERROR_MSG1
ERROR_MSG2
ERROR_MSG_CONSTRUCTOR

Public Class Methods

geezify(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 18
def self.geezify(num)
  new(num).geezify
end
new(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 12
def initialize(num)
  raise ArgumentError, ERROR_MSG_CONSTRUCTOR unless num.integer?

  @num = num
end

Public Instance Methods

geezify() click to toggle source
# File lib/geezify-rb/geezify.rb, line 22
def geezify
  clean_up_uncessary_1s geezify_with_1s(@num)
end

Private Instance Methods

clean_up_uncessary_1s(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 47
def clean_up_uncessary_1s(num)
  num.gsub('፼፩፻', '፼፻').gsub(/^፩፼/, '፼').gsub(/^(፩፻)/, '፻') || num
end
geezify_2digit(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 28
def geezify_2digit(num)
  oneth_array = Array['', '፩', '፪', '፫', '፬', '፭', '፮', '፯', '፰', '፱']
  tenth_array = Array['', '፲', '፳', '፴', '፵', '፶', '፷', '፸', '፹', '፺']
  raise ArgumentError, ERROR_MSG1 unless num.integer? &&
                                         num.between?(0, 99)

  tenth_array[(num / 10)] + oneth_array[num % 10]
end
geezify_4digit(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 37
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
geezify_with_1s(num) click to toggle source
# File lib/geezify-rb/geezify.rb, line 43
def geezify_with_1s(num)
  num.digits(10_000).reverse.map { |x| geezify_4digit(x) }.join('፼')
end