Sha256: ce0b0cfb2bcf90c763bb82cd87d536a4b1ab29cb83d73203073df3a546ce9a55

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true
module ToRussianWords
  require "to_russian_words/version"
  require_relative "./to_russian_words/under_hundred.rb"
  require_relative "./to_russian_words/divisions.rb"
  require_relative "./to_russian_words/utils.rb"

  include ToRussianWords::UnderHundred
  include ToRussianWords::Divisions
  include ToRussianWords::Utils

  def to_words(russian_case = 'nominative')
    to_russian_words(russian_case)
  end

  def to_russian_words(russian_case = 'nominative')
    num = numerical?(self)
    num, sign = check_sign(num)
    return (sign + under_hundred(russian_case)[num]) if num <= 100
    counter = 0
    result = []
    while num != 0
      num, remaining = num.divmod(1000)
      temp_result = result_below_one_thousand(remaining, counter, russian_case)
      result << temp_result + ' ' + divisions(russian_case)[counter] + ' ' if temp_result
      counter += 1
    end
    sign + result.reverse.join(' ').rstrip
  end
end

INTEGER_KLASS = 1.class # Fixnum before Ruby 2.4, Integer from Ruby 2.4
class INTEGER_KLASS
  include ToRussianWords
end

class String
  include ToRussianWords
end

class Fixnum
  include ToRussianWords
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
to_russian_words-1.1.1 lib/to_russian_words.rb