Class: Persian::NumText

Inherits:
Number
  • Object
show all
Defined in:
lib/persian/num_text.rb

Overview

Persian NumText class Work with number in words

Constant Summary

Constants inherited from Number

Persian::Number::AR_EN_NUM, Persian::Number::AR_FA_NUM, Persian::Number::DECIMAL, Persian::Number::EN_AR_NUM, Persian::Number::EN_FA_NUM, Persian::Number::FA_AR_NUM, Persian::Number::FA_EN_NUM, Persian::Number::HUNDREDS, Persian::Number::LONGSCALE, Persian::Number::ONES, Persian::Number::TEENS

Constants included from Alphabet

Alphabet::AA, Alphabet::ALEF, Alphabet::ALEF_MAD, Alphabet::AN, Alphabet::ARBE, Alphabet::ATHNAN, Alphabet::BE, Alphabet::BEALAVE, Alphabet::CHAHAR, Alphabet::CHE, Alphabet::DAL, Alphabet::DARSAD, Alphabet::DONOGHTE, Alphabet::DOW, Alphabet::EE, Alphabet::EIGHT, Alphabet::EIN, Alphabet::EN, Alphabet::FE, Alphabet::FIVE, Alphabet::FOUR, Alphabet::GAF, Alphabet::GHEIN, Alphabet::HAFT, Alphabet::HASHT, Alphabet::HE_DOCHESHM, Alphabet::HE_JIMI, Alphabet::JIM, Alphabet::KAF, Alphabet::KAF_ARABIC, Alphabet::KESH, Alphabet::KHAMSE, Alphabet::KHE, Alphabet::LAM, Alphabet::LAYS, Alphabet::MAD, Alphabet::MENHA, Alphabet::MIM, Alphabet::MOSAVI, Alphabet::NINE, Alphabet::NOGHTE, Alphabet::NOGHTEVIRGOOL, Alphabet::NOH, Alphabet::NOON, Alphabet::ON, Alphabet::ONE, Alphabet::OO, Alphabet::PANJ, Alphabet::PE, Alphabet::QAF, Alphabet::RE, Alphabet::SABE, Alphabet::SAD, Alphabet::SAKEN, Alphabet::SE, Alphabet::SEFR, Alphabet::SETE, Alphabet::SEVEN, Alphabet::SHESH, Alphabet::SHIN, Alphabet::SIFR, Alphabet::SIN, Alphabet::SIX, Alphabet::SOAL, Alphabet::SPACE, Alphabet::TA, Alphabet::TAAJOB, Alphabet::TAGHSIM, Alphabet::TASHDID, Alphabet::TE, Alphabet::THALETH, Alphabet::THE, Alphabet::THMANY, Alphabet::THREE, Alphabet::TWO, Alphabet::VAV, Alphabet::VIRGOOL, Alphabet::WAHID, Alphabet::YE, Alphabet::YEK, Alphabet::YE_ARABIC, Alphabet::ZA, Alphabet::ZAD, Alphabet::ZAL, Alphabet::ZARBDAR, Alphabet::ZE, Alphabet::ZERO, Alphabet::ZHE, Alphabet::ZWJ, Alphabet::ZWNJ

Class Method Summary collapse

Methods inherited from Number

#*, #+, #-, #/, #initialize, number, number_with_colon, random, to_arabic, to_english, to_i, to_persian

Constructor Details

This class inherits a constructor from Persian::Number

Class Method Details

.num_to_char(num, inner = false) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/persian/num_text.rb', line 8

def self.num_to_char(num, inner = false)
  num = Persian::Number.number(num, lang: 'en', return: 'int') if num.is_a? String

  words = ''

  if ((num / 100) >= 0) && ((num / 100) < 10)

    if num < 10
      if num.zero? && inner
        words += ''
      elsif inner
        words += ' و '
        words += ONES[num]
      else
        words += ONES[num]
      end

    elsif num < 20
      words += TEENS[num - 10]
    elsif num < 100
      words += ' و ' if inner

      words += DECIMAL[num / 10] + num_to_char(num % 10, true)
    else
      words += ' و ' if inner

      words += HUNDREDS[num / 100] + num_to_char(num % 100, true)
    end
  else
    words += ' و ' if inner

    if (num.to_s.length % 3).nonzero?
      current_split = num.to_s[0..(num.to_s.length % 3 - 1).to_i]
      more_split = num.to_s.sub(current_split, '')
      words += num_to_char(current_split) + ' ' + LONGSCALE[(num.to_s.length / 3)] + num_to_char(more_split, true)
    else
      current_split = num.to_s[0..2]
      more_split = num.to_s.sub(current_split, '')
      words += num_to_char(current_split) + ' ' + LONGSCALE[(num.to_s.length / 3) - 1] + num_to_char(more_split, true)
    end
  end

  words
end