Module: ZhongwenTools::Number

Defined in:
lib/zhongwen_tools/number.rb,
lib/zhongwen_tools/number/number_table.rb

Overview

Number.to_pyn, to_i, to_zhs, etc.

Constant Summary collapse

NUMBERS_TABLE =

TODO: Add huge numbers. en.wikipedia.org/wiki/Chinese_numerals#Large_numbers 垓=亿 (archaic) 秭: 1B or 100B or 1T or 10000T (archaic) 穰 溝 澗 正 載 –> beyond 100,000,000! NOTE: financial numbers i == 0 ? NT.select{ |x| x == i }.last : NT.find{ |x| x = i }

[
  { zhs: '', zht: '', i: 0, pyn: 'ling2' },
  { zhs: '', zht: '', i: 0, pyn: 'ling2' },
  { zhs: '', zht: '', i: 1, pyn: 'yi1' },
  { zhs: '', zht: '', i: 1, pyn: 'yi1' },
  { zhs: '', zht: '', i: 1, pyn: 'yao1' },
  { zhs: '', zht: '', i: 2, pyn: 'er4' },
  { zhs: '', zht: '', i: 2, pyn: 'liang3' },
  { zhs: '', zht: '', i: 2, pyn: 'er4' },
  { zhs: '', zht: '', i: 3, pyn: 'san1' },
  { zhs: '', zht: '', i: 3, pyn: 'san1' },
  { zhs: '', zht: '', i: 3, pyn: 'san1' },
  { zhs: '', zht: '', i: 4, pyn: 'si4' },
  { zhs: '', zht: '', i: 4, pyn: 'si4' },
  { zhs: '', zht: '', i: 4, pyn: 'si4' },
  { zhs: '', zht: '', i: 5, pyn: 'wu3' },
  { zhs: '', zht: '', i: 5, pyn: 'wu3' },
  { zhs: '', zht: '', i: 6, pyn: 'liu4' },
  { zhs: '', zht: '', i: 6, pyn: 'liu4' },
  { zhs: '', zht: '', i: 7, pyn: 'qi1' },
  { zhs: '', zht: '', i: 7, pyn: 'qi1' },
  { zhs: '', zht: '', i: 8, pyn: 'ba1' },
  { zhs: '', zht: '', i: 8, pyn: 'ba1' },
  { zhs: '', zht: '', i: 9, pyn: 'jiu3' },
  { zhs: '', zht: '', i: 9, pyn: 'jiu3' },
  { zhs: '', zht: '', i: 10, pyn: 'shi2' },
  { zhs: '', zht: '', i: 10, pyn: 'shi2' },
  { zhs: '廿', zht: '廿', i: 20, pyn: ' nian4' },
  { zhs: '', zht: '', i: 100, pyn: 'bai2' },
  { zhs: '', zht: '', i: 100, pyn: 'bai2' },
  { zhs: '', zht: '', i: 1_000, pyn: 'qian1' },
  { zhs: '', zht: '', i: 1_000, pyn: 'qian1' },
  { zhs: '', zht: '', i: 10_000, pyn: 'wan4' },
  { zhs: '亿', zht: '', i: 100_000_000, pyn: 'yi4' },
  { zhs: '', zht: '', i: 1_000_000_000_000_000, pyn: 'jing1' }
]

Class Method Summary collapse

Class Method Details

.number?(obj) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
# File 'lib/zhongwen_tools/number.rb', line 10

def self.number?(obj)
  case obj
  when String
    regex = /([\d]|#{ZhongwenTools::Regex.zh_numbers}){1,}/
    "#{obj}".gsub(regex, '') == ''
  when Integer, Fixnum, Float
    true
  end
end

.to_zh(obj, type = :zhs, from = nil) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/zhongwen_tools/number.rb', line 29

def self.to_zh(obj, type = :zhs, from = nil)
  case type.to_sym
  when :zht
    to_zht(obj, from)
  else
    to_zhs(obj, from)
  end
end