Module: NumeralsJp::StringConverter
- Includes:
- Constant
- Defined in:
- lib/numerals_jp/string_converter.rb
Overview
Represents conversions from String.
Constant Summary collapse
- DETECT_PATTERN =
/([#{NUMERALS}#{SMALL_FACTORS.keys.join}]+[#{LARGE_FACTORS.keys.join}]?)+/
- LARGE_EXTRACT_PATTERN =
/([#{NUMERALS}#{SMALL_FACTORS.keys.join}]+)([#{LARGE_FACTORS.keys.join}])?/
- SMALL_EXTRACT_PATTERN =
/(([#{NUMERALS}])?([#{SMALL_FACTORS.keys.join}])?)/
Constants included from Constant
Constant::LARGE_FACTORS, Constant::NUMERALS, Constant::SMALL_FACTORS
Class Method Summary collapse
-
.jp_to_num(str) ⇒ String
Replaces Japanese numerals with Arabic numerals in given string.
Class Method Details
.jp_to_num(str) ⇒ String
Replaces Japanese numerals with Arabic numerals in given string.
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/numerals_jp/string_converter.rb', line 18 def jp_to_num(str) str.gsub(DETECT_PATTERN) do |s| s.scan(LARGE_EXTRACT_PATTERN).map { |m| m.first.scan(SMALL_EXTRACT_PATTERN).reject { |m| m.first.empty? }.map { |m| num, factor = m[1], m[2] (num || "1").tr(NUMERALS, "1-9").to_i * (SMALL_FACTORS[factor] || 1) }.inject(:+) * (LARGE_FACTORS[m[1]] || 1) }.inject(:+) end end |