class Persian::Number
Number
class
Persian
Number
class Init an instance with pass a number Basic operators works with persian string of numbers
Constants
- AR_EN_NUM
- AR_FA_NUM
- DECIMAL
- EN_AR_NUM
- EN_FA_NUM
- FA_AR_NUM
- FA_EN_NUM
- HUNDREDS
- LONGSCALE
- ONES
- TEENS
Public Class Methods
new(num)
click to toggle source
# File lib/persian/number.rb, line 8 def initialize(num) @value = Persian::Number.number(num) end
number(num, opts = { lang: 'fa', return: 'string' })
click to toggle source
# File lib/persian/number.rb, line 28 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)
click to toggle source
# File lib/persian/number.rb, line 55 def self.number_with_colon(num) num = number(num) num.reverse.gsub(/(\S{3})(?=\S)/, '\\1,').reverse end
random(params = nil)
click to toggle source
# File lib/persian/number.rb, line 76 def self.random(params = nil) number(rand(params)) end
to_arabic(num)
click to toggle source
# File lib/persian/number.rb, line 68 def self.to_arabic(num) number(num, lang: 'ar') end
to_english(num)
click to toggle source
# File lib/persian/number.rb, line 64 def self.to_english(num) number(num, lang: 'en') end
to_i(num)
click to toggle source
# File lib/persian/number.rb, line 72 def self.to_i(num) number(num, lang: 'en', return: 'int') end
to_persian(num)
click to toggle source
# File lib/persian/number.rb, line 60 def self.to_persian(num) number(num, lang: 'fa') end
Public Instance Methods
*(other)
click to toggle source
# File lib/persian/number.rb, line 20 def *(other) Number.to_persian(Number.to_i(@value) * Number.to_i(other)) end
+(other)
click to toggle source
# File lib/persian/number.rb, line 12 def +(other) Number.to_persian(Number.to_i(@value) + Number.to_i(other)) end
-(other)
click to toggle source
# File lib/persian/number.rb, line 16 def -(other) Number.to_persian(Number.to_i(@value) - Number.to_i(other)) end
/(other)
click to toggle source
# File lib/persian/number.rb, line 24 def /(other) Number.to_persian(Number.to_i(@value) / Number.to_i(other)) end