Class: Persian::Number
- Inherits:
-
Object
show all
- Includes:
- Alphabet
- Defined in:
- lib/persian/number.rb,
lib/persian/list/number.rb
Overview
Constant Summary
collapse
- EN_FA_NUM =
{
ZERO => SEFR,
ONE => YEK,
TWO => DOW,
THREE => SE,
FOUR => CHAHAR,
FIVE => PANJ,
SIX => SHESH,
SEVEN => HAFT,
EIGHT => HASHT,
NINE => NOH
}.freeze
- FA_EN_NUM =
{
SEFR => ZERO,
YEK => ONE,
DOW => TWO,
SE => THREE,
CHAHAR => FOUR,
PANJ => FIVE,
SHESH => SIX,
HAFT => SEVEN,
HASHT => EIGHT,
NOH => NINE
}.freeze
- AR_FA_NUM =
{
SIFR => SEFR,
WAHID => YEK,
ATHNAN => DOW,
THALETH => SE,
ARBE => CHAHAR,
KHAMSE => PANJ,
SETE => SHESH,
SABE => HAFT,
THMANY => HASHT,
LAYS => NOH
}.freeze
- FA_AR_NUM =
{
SEFR => SIFR,
YEK => WAHID,
DOW => ATHNAN,
SE => THALETH,
CHAHAR => ARBE,
PANJ => KHAMSE,
SHESH => SETE,
HAFT => SABE,
HASHT => THMANY,
NOH => LAYS
}.freeze
- AR_EN_NUM =
{
SIFR => ZERO,
WAHID => ONE,
ATHNAN => TWO,
THALETH => THREE,
ARBE => FOUR,
KHAMSE => FIVE,
SETE => SIX,
SABE => SEVEN,
THMANY => EIGHT,
LAYS => NINE
}.freeze
- EN_AR_NUM =
{
ZERO => SIFR,
ONE => WAHID,
TWO => ATHNAN,
THREE => THALETH,
FOUR => ARBE,
FIVE => KHAMSE,
SIX => SETE,
SEVEN => SABE,
EIGHT => THMANY,
NINE => LAYS
}.freeze
- ONES =
[
'صفر',
'یک',
'دو',
'سه',
'چهار',
'پنج',
'شش',
'هفت',
'هشت',
'نه'
].freeze
- TEENS =
[
'ده',
'یازده',
'دوازده',
'سیزده',
'چهارده',
'پانزده',
'شانزده',
'هفده',
'هجده',
'نوزده'
].freeze
- DECIMAL =
[
'',
'',
'بیست',
'سی',
'چهل',
'پنجاه',
'شصت',
'هفتاد',
'هشتاد',
'نود'
].freeze
- HUNDREDS =
[
'',
'صد',
'دویست',
'سیصد',
'چهارصد',
'پانصد',
'ششصد',
'هفتصد',
'هشتصد',
'نهصد'
].freeze
- LONGSCALE =
[
'',
'هزار',
'میلیون',
'میلیارد',
'بیلیون',
'بیلیارد',
'تریلیون',
'تریلیارد',
'کوآدریلیون',
'کادریلیارد',
'کوینتیلیون',
'کوانتینیارد',
'سکستیلیون',
'سکستیلیارد',
'سپتیلیون',
'سپتیلیارد',
'اکتیلیون',
'اکتیلیارد',
'نانیلیون',
'نانیلیارد',
'دسیلیون',
'دسیلیارد'
].freeze
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
Instance Method Summary
collapse
Constructor Details
#initialize(num) ⇒ Number
Returns a new instance of Number.
9
10
11
|
# File 'lib/persian/number.rb', line 9
def initialize(num)
@value = Persian::Number.number(num)
end
|
Class Method Details
.number(num, opts = { lang: 'fa', return: 'string' }) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/persian/number.rb', line 29
def self.number(num, opts = { lang: 'fa', return: 'string' })
opts[:lang] = 'fa' if opts[:lang].nil?
opts[:return] = 'string' if opts[:return].nil?
num = num.to_s if num.is_a? Numeric
if opts[:lang] == 'fa' || opts[:lang].nil?
nums = EN_FA_NUM.merge(AR_FA_NUM)
elsif opts[:lang] == 'en'
nums = FA_EN_NUM.merge(AR_EN_NUM)
elsif opts[:lang] == 'ar'
nums = FA_AR_NUM.merge(EN_AR_NUM)
end
nums.each { |k, v| num.gsub!(k, v) }
if opts[:return]
case opts[:return]
when 'string'
num
when 'int'
num.to_i
end
else
num
end
end
|
.number_with_colon(num) ⇒ Object
56
57
58
59
|
# File 'lib/persian/number.rb', line 56
def self.number_with_colon(num)
num = number(num)
num.reverse.gsub(/(\S{3})(?=\S)/, '\\1,').reverse
end
|
.random(params = nil) ⇒ Object
77
78
79
|
# File 'lib/persian/number.rb', line 77
def self.random(params = nil)
number(rand(params))
end
|
.to_arabic(num) ⇒ Object
69
70
71
|
# File 'lib/persian/number.rb', line 69
def self.to_arabic(num)
number(num, lang: 'ar')
end
|
.to_english(num) ⇒ Object
65
66
67
|
# File 'lib/persian/number.rb', line 65
def self.to_english(num)
number(num, lang: 'en')
end
|
.to_i(num) ⇒ Object
73
74
75
|
# File 'lib/persian/number.rb', line 73
def self.to_i(num)
number(num, lang: 'en', return: 'int')
end
|
.to_persian(num) ⇒ Object
61
62
63
|
# File 'lib/persian/number.rb', line 61
def self.to_persian(num)
number(num, lang: 'fa')
end
|