Module: ZhongwenTools::Numbers

Included in:
Integer
Defined in:
lib/zhongwen_tools/numbers.rb

Constant Summary collapse

NUMBER_MULTIPLES =
'拾十百佰千仟仟万萬亿億'
NUMBERS_TABLE =
[
  { :zhs => '零', :zht => '零', :num => 0, :pyn => 'ling2'},
  { :zhs => '〇', :zht => '〇', :num => 0, :pyn => 'ling2'},
  { :zhs => '一', :zht => '一', :num => 1, :pyn => 'yi1'},
  { :zhs => '壹', :zht => '壹', :num => 1, :pyn => 'yi1'},
  { :zhs => '幺', :zht => '幺', :num => 1, :pyn => 'yao1'},
  { :zhs => '二', :zht => '二', :num => 2, :pyn => 'er4'},
  { :zhs => '两', :zht => '兩', :num => 2, :pyn => 'liang3'},
  { :zhs => '贰', :zht => '貳', :num => 2, :pyn => 'er4'},
  { :zhs => '三', :zht => '三', :num => 3, :pyn => 'san1'},
  { :zhs => '弎', :zht => '弎', :num => 3, :pyn => 'san1'},
  { :zhs => '叁', :zht => '參', :num => 3, :pyn => 'san1'},
  { :zhs => '四', :zht => '四', :num => 4, :pyn => 'si4'},
  { :zhs => '䦉', :zht => '䦉', :num => 4, :pyn => 'si4'},
  { :zhs => '肆', :zht => '肆', :num => 4, :pyn => 'si4'},
  { :zhs => '五', :zht => '五', :num => 5, :pyn => 'wu3'},
  { :zhs => '伍', :zht => '伍', :num => 5, :pyn => 'wu3'},
  { :zhs => '六', :zht => '六', :num => 6, :pyn => 'liu4'},
  { :zhs => '陆', :zht => '陸', :num => 6, :pyn => 'liu4'},
  { :zhs => '七', :zht => '七', :num => 7, :pyn => 'qi1'},
  { :zhs => '柒', :zht => '柒', :num => 7, :pyn => 'qi1'},
  { :zhs => '八', :zht => '八', :num => 8, :pyn => 'ba1'},
  { :zhs => '捌', :zht => '捌', :num => 8, :pyn => 'ba1'},
  { :zhs => '九', :zht => '九', :num => 9, :pyn => 'jiu3'},
  { :zhs => '玖', :zht => '玖', :num => 9, :pyn => 'jiu3'},
  { :zhs => '十', :zht => '十', :num => 10, :pyn => 'shi2'},
  { :zhs => '拾', :zht => '拾', :num => 10, :pyn => 'shi2'},
  { :zhs => '廿', :zht => '廿', :num => 20, :pyn => ' nian4'},
  { :zhs => '百', :zht => '百', :num => 100, :pyn => 'bai2'},
  { :zhs => '佰', :zht => '佰', :num => 100, :pyn => 'bai2'},
  { :zhs => '千', :zht => '千', :num => 1000, :pyn => 'qian2'},
  { :zhs => '仟', :zht => '仟', :num => 1000, :pyn => 'qian2'},
  { :zhs => '万', :zht => '萬', :num => 10000, :pyn => 'wan4'},
  { :zhs => '亿', :zht => '億', :num => 100000000, :pyn => 'yi4'},
]

Instance Method Summary collapse

Instance Method Details

#number?(word) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/zhongwen_tools/numbers.rb', line 43

def number? word
  #垓  秭  穰  溝  澗  正  載 --> beyond 100,000,000!
  "#{word}".gsub(/([\d]|[一二三四五六七八九十百千萬万億亿]){2,}/,'') == ''
end

#number_to_pyn(number, type = 'zh_s') ⇒ Object



66
67
68
# File 'lib/zhongwen_tools/numbers.rb', line 66

def number_to_pyn number, type = 'zh_s'
  convert_number_to :pyn, type.to_sym, number, '-'
end

#number_to_zhs(type, number) ⇒ Object

these should also be able to convert numbers to chinese numbers



59
60
61
# File 'lib/zhongwen_tools/numbers.rb', line 59

def number_to_zhs type, number
  convert_number_to :zhs, type.to_sym, number
end

#number_to_zht(type, number) ⇒ Object



62
63
64
# File 'lib/zhongwen_tools/numbers.rb', line 62

def number_to_zht type, number
  convert_number_to :zht, type.to_sym, number
end

#zh_number_to_number(zh_number) ⇒ Object



48
49
50
51
52
53
54
55
56
# File 'lib/zhongwen_tools/numbers.rb', line 48

def zh_number_to_number(zh_number)
  zh_number = zh_number.to_s
  numbers = convert_date(zh_number)

  #if it's a year, or an oddly formatted number
  return numbers.join('').to_i if zh_number[/[#{NUMBER_MULTIPLES}]/u].nil?

  convert_numbers numbers
end