Class: Figures::German

Inherits:
Object
  • Object
show all
Defined in:
lib/figures/german.rb

Constant Summary collapse

UNITS =
%w{ eins zwei drei vier fünf sechs sieben acht neun }.freeze
PREFIXES =
{
  units:          %w{ tausend mi bi tri quadri quinti sexti septi okti noni },
  union_units:    %w{ un duo tre quattuor quinqua se septe okto nove },
  union_tens:     %w{ dezi viginti triginta quadraginta quinquaginta sexaginta septuaginta oktoginta nonaginta },
  union_hundreds: %w{ zenti duzenti trezenti quadringenti quingenti seszenti septingenti oktingenti nongenti }
}.freeze
EXCEPTIONS =
{
  /^eins(hundert|tausend)/ => 'ein\1',
  /^eins\s/    => 'eine ',
  /einsund/    => 'einund',
  'einszehn'   => 'elf',
  'zweizehn'   => 'zwölf',
  'sechszehn'  => 'sechzehn',
  'siebenzehn' => 'siebzehn',
  'zweizig'    => 'zwanzig',
  'dreizig'    => 'dreißig',
  'sechszig'   => 'sechzig',
  'siebenzig'  => 'siebzig'
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(number) ⇒ German



28
29
30
# File 'lib/figures/german.rb', line 28

def initialize(number)
  @number = number.to_i
end

Instance Attribute Details

#numberObject (readonly)

Returns the value of attribute number.



26
27
28
# File 'lib/figures/german.rb', line 26

def number
  @number
end

Instance Method Details

#parseObject



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/figures/german.rb', line 32

def parse
  return 'null' if number == 0

  triples = split_into_reverse_triples(number)

  word = triples.each_with_index.reduce('') do |result, (triple, index)|
    triple_word = triple_to_word(triple, index)
    result.prepend(triple_word)
  end.strip

  number < 0 ? "minus #{word}" : word
end