class Indonesia

Public Class Methods

check_nol(saying) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 340
def self.check_nol(saying)
  if saying == ["nol"] or saying == "nol"
    return ["nol"]
  end
  @check = saying.split(@satuan_id.first)
  if @check.count < 1
    return @check
  else
    return @check.map!{ |element| element.gsub("nol", "").gsub("  ", " ") }
  end 
end
get_number_sayer_per_separator(block, number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 352
def self.get_number_sayer_per_separator(block, number)
  @array_number = number.split("").map { |i| i.to_i }
  if block == 0
    get_number_sayer_ratusan(@array_number)
  elsif block == 1
    get_number_sayer_ratus_ribuan(@array_number)
  elsif block == 2
    get_number_sayer_ratus_jutaan(@array_number)
  elsif block == 3
    get_number_sayer_ratus_milyaran(@array_number)
  elsif block == 4
    get_number_sayer_ratus_triliunan(@array_number)
  else 
    raise "exceeds the calculation function"
  end
end
get_number_sayer_ratus_jutaan(number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 139
def self.get_number_sayer_ratus_jutaan(number)
  @sayer = []
  @temp = number.first
  if number.count == 1
    return @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000])
  elsif number.count == 2
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000])
      end
    end
    return @sayer
  elsif number.count == 3
    if number.last == 1
      if @temp != 0
        @sayer.push(@anomalies[100])
      else
        if number[1] != 0
          @sayer.push(@anomalies[100])
        else
          @sayer.push(@anomalies[100]).push(@anomalies[1000000])  
        end
      end
    else
      if number.last == 0
      else
        if @temp != 0
          @sayer.push(@satuan_id[number.last]).push("ratus")
        else
          if number[1] != 0
            @sayer.push(@satuan_id[number.last]).push("ratus")
          else
            @sayer.push(@satuan_id[number.last]).push("ratus").push(@anomalies[1000000])
          end
          
        end
      end
    end
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000])
      end
    elsif number[1] == 0
      if @temp != 0
        @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000])
      end
    end
    return @sayer
  end 
end
get_number_sayer_ratus_milyaran(number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 206
def self.get_number_sayer_ratus_milyaran(number)
  @sayer = []
  @temp = number.first
  if number.count == 1
    return @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000000])
  elsif number.count == 2
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000000])
      end
    end
    return @sayer
  elsif number.count == 3
    if number.last == 1
      if @temp != 0
        @sayer.push(@anomalies[100])
      else
        if number[1] != 0
          @sayer.push(@anomalies[100])
        else
          @sayer.push(@anomalies[100]).push(@anomalies[1000000000]) 
        end
      end
    else
      if number.last == 0
      else
        if @temp != 0
          @sayer.push(@satuan_id[number.last]).push("ratus")
        else
          if number[1] != 0
            @sayer.push(@satuan_id[number.last]).push("ratus")
          else
            @sayer.push(@satuan_id[number.last]).push("ratus").push(@anomalies[1000000000])
          end
          
        end
      end
    end
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000000])
      end
    elsif number[1] == 0
      if @temp != 0
        @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000000])
      end
    end
    return @sayer
  end 
end
get_number_sayer_ratus_ribuan(number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 67
def self.get_number_sayer_ratus_ribuan(number)
  @sayer = []
  @temp = number.first
  if number.count == 1
    if @temp == 1 
      @sayer.push(@anomalies[1000])
    else
      @sayer.push(@satuan_id[@temp]).push("ribu")
    end
    return @sayer
  elsif number.count == 2
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push("ribu")
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push("ribu")
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push("ribu")
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push("ribu")
      end
    end
    return @sayer
  elsif number.count == 3
    if number.last == 1
      if @temp != 0
        @sayer.push(@anomalies[100])
      else
        if number[1] != 0
          @sayer.push(@anomalies[100])
        else
          @sayer.push(@anomalies[100]).push("ribu")
        end         
      end
    else
      if number.last == 0
      else
        if @temp != 0
          @sayer.push(@satuan_id[number.last]).push("ratus")
        else
          if number[1] != 0
            @sayer.push(@satuan_id[number.last]).push("ratus")
          else
            @sayer.push(@satuan_id[number.last]).push("ratus").push("ribu")
          end         
          
        end
      end
    end
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push("ribu")
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push("ribu")
      end
    elsif number[1] == 0
      if @temp != 0
        @sayer.push(@satuan_id[@temp]).push("ribu")
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push("ribu")
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push("ribu")
      end
    end
  end
  return @sayer
end
get_number_sayer_ratus_triliunan(number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 273
def self.get_number_sayer_ratus_triliunan(number)
  @sayer = []
  @temp = number.first
  if number.count == 1
    return @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000000000])
  elsif number.count == 2
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000000000])
      end
    end
    return @sayer
  elsif number.count == 3
    if number.last == 1
      if @temp != 0
        @sayer.push(@anomalies[100])
      else
        if number[1] != 0
          @sayer.push(@anomalies[100])
        else
          @sayer.push(@anomalies[100]).push(@anomalies[1000000000000])  
        end
      end
    else
      if number.last == 0
      else
        if @temp != 0
          @sayer.push(@satuan_id[number.last]).push("ratus")
        else
          if number[1] != 0
            @sayer.push(@satuan_id[number.last]).push("ratus")
          else
            @sayer.push(@satuan_id[number.last]).push("ratus").push(@anomalies[1000000000000])
          end
          
        end
      end
    end
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp]).push(@anomalies[1000000000000])
      else
        @sayer.push(@satuan_id[@temp]).push("belas").push(@anomalies[1000000000000])
      end
    elsif number[1] == 0
      if @temp != 0
        @sayer.push(@satuan_id[@temp]).push(@anomalies[1000000000000])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp]).push(@anomalies[1000000000000])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@anomalies[1000000000000])
      end
    end
    return @sayer
  end 
end
get_number_sayer_ratusan(number) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 17
def self.get_number_sayer_ratusan(number)
  @sayer = []
  @temp = number.first
  if number.count == 1
    return @sayer.push(@satuan_id[@temp])
  elsif number.count == 2
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp])
      else
        @sayer.push(@satuan_id[@temp]).push("belas")
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh")  
      end
    end
    return @sayer
  elsif number.count == 3
    if number.last == 1
      @sayer.push(@anomalies[100])
    else
      if number.last == 0
      else
        @sayer.push(@satuan_id[number.last]).push("ratus")
      end
    end
    if number[1] == 1
      if @temp == 1 or @temp == 0
        @sayer.push(@anomalies[10+@temp])
      else
        @sayer.push(@satuan_id[@temp]).push("belas")
      end
    elsif number[1] == 0
      if @temp != 0
        @sayer.push(@satuan_id[@temp])
      end
    else
      if @temp != 0
        @sayer.push(@satuan_id[number[1]]).push("puluh").push(@satuan_id[@temp])
      else
        @sayer.push(@satuan_id[number[1]]).push("puluh")  
      end
    end
    return @sayer
  end 
end
initialize_sayer() click to toggle source
# File lib/say_number/languages/indonesia.rb, line 2
def self.initialize_sayer
  @satuan_id = ["nol", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan"]
  @anomalies  = {10=>"sepuluh", 11=>"sebelas", 100=>"seratus", 1000=>"seribu", 1000000=>"juta", 1000000000=>"miliyar", 1000000000000=>"triliun" }
end
say_koma(koma) click to toggle source
# File lib/say_number/languages/indonesia.rb, line 7
def self.say_koma(koma)
  @koma = []
  @koma.push("koma")
  @temp = koma.to_s.split("")
  @temp.each do |k|
    @koma.push(@satuan_id[k.to_i])
  end
  return @koma.join(" ")
end