Class: Indianize

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

Constant Summary collapse

REFERENCE_HASH =
{
  10000000 => "crore",
    100000 => "lakh",
      1000 => "thousand",
      100 => "hundred",
      90 => "ninety",
      80 => "eighty",
      70 => "seventy",
      60 => "sixty",
      50 => "fifty",
      40 => "forty",
      30 => "thirty",
      20 => "twenty",
      19=>"nineteen",
      18=>"eighteen",
      17=>"seventeen", 
      16=>"sixteen",
      15=>"fifteen",
      14=>"fourteen",
      13=>"thirteen",              
      12=>"twelve",
      11 => "eleven",
      10 => "ten",
      9 => "nine",
      8 => "eight",
      7 => "seven",
      6 => "six",
      5 => "five",
      4 => "four",
      3 => "three",
      2 => "two",
      1 => "one"
}.freeze
STATES_ARRAY =
["Andaman and Nicobar Islands", "Andhra Pradesh", "Arunachal Pradesh", "Assam", 
"Bihar", "Chandigarh", "Chhattisgarh", "Dadra and Nagar Haveli", "Daman & Diu", 
"Delhi", "Goa", "Gujarat", "Haryana", "Himachal Pradesh", "Jammu & Kashmir", 
"Jharkhand", "Karnataka", "Kerala", "Lakshadweep", "Madhya Pradesh", "Maharashtra", 
"Manipur", "Meghalaya", "Mizoram", "Nagaland", "Odisha", "Puducherry", "Punjab", 
"Rajasthan", "Sikkim", "Tamil Nadu", "Telangana", "Tripura", "Uttar Pradesh", 
"Uttarakhand", "West Bengal"].freeze

Class Method Summary collapse

Class Method Details

.convert_to_words(value) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/indianize.rb', line 66

def self.convert_to_words(value)
  return "" if value.zero?

  REFERENCE_HASH.each do |number, word|
    if value.to_s.length == 1 && value/number > 0
      return ("#{word}").capitalize.strip      
    elsif value < 100 && value/number > 0
      return ("#{word} " + convert_to_words(value%number)).capitalize.strip
    elsif value/number > 0
      return (convert_to_words(value/number) + " #{word} " + convert_to_words(value%number)).capitalize.strip
    end
  end
end

.state_search(query) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/indianize.rb', line 84

def self.state_search(query)
  result = []
  states.each do |x|
    result << x if x.downcase.include?(query)
  end
  return result
end

.statesObject



80
81
82
# File 'lib/indianize.rb', line 80

def self.states
  STATES_ARRAY
end

.to_number(value) ⇒ Object



45
46
47
# File 'lib/indianize.rb', line 45

def self.to_number(value)
  "" + value.round.to_s.gsub(/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/, "\\1,")
end

.to_number_without_symbol(value) ⇒ Object



49
50
51
# File 'lib/indianize.rb', line 49

def self.to_number_without_symbol(value)
  value.round.to_s.gsub(/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/, "\\1,") 
end

.to_words(value) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/indianize.rb', line 53

def self.to_words(value)
  unless (value.is_a?(Integer) || (value.is_a?(Float) &&  value.finite?)) && value >=0
    raise ArgumentError, "Supports only non-negative integers and floats."
  end

  value = value.round
  return "Zero" if value.zero?

  convert_to_words(value)
end