Module: Currency

Defined in:
lib/currency.rb

Constant Summary collapse

URL =

CURRENCIES = => “Algerian Dinar”,:ars => “Argentine Peso”,:amd => “Armenian Dram”,:aud => “Australian Dollar”,:bsd => “Bahamian Dollar”,:bhd => “Bahraini Dinar”,:bdt => “Bangladeshi Taka”,:bbd => “Barbados Dollar”,:byr => “Belarusian Ruble”,:bzd => “Belize Dollar”,:bmd => “Bermudian Dollar”,:bob => “Bolivian Boliviano”,:bwp => “Botswana Pula”,:brl => “Brazilian Real”,:gbp => “British Pound”,:bnd => “Brunei Dollar”,:bgn => “Bulgarian Lev”,:bif => “Burundi Franc”,:khr => “Cambodian Riel”,:cad => “Canadian Dollar”,:cve => “Cape Verde Escudo”,:kyd => “Cayman Islands Dollar”,:xof => “CFA BCEAO Franc”,:xaf => “CFA BEAC Franc”,:xpf => “CFP Franc”,:clp => “Chilean Peso”,:cny => “Chinese Yuan Renminbi”,:cop => “Colombian Peso”,:crc => “Costa Rican Colon”,:hrk => “Croatian Kuna”,:cup => “Cuban Peso”,:czk => “Czech Koruna”,:dkk => “Danish Krone”,:djf => “Djibouti Franc”,:dop => “Dominican Peso”,:xcd => “East Caribbean Dollar”,:egp => “Egyptian Pound”,:eek => “Estonian Kroon”,:etb => “Ethiopian Birr”,:eur => “Euro”,:fjd => “Fiji Dollar”,:gmd => “Gambian Dalasi”,:ghs => “Ghanaian Cedi”,:gtq => “Guatemalan Quetzal”,:htg => “Haitian Gourde”,:hnl => “Honduran Lempira”,:hkd => “Hong Kong Dollar”,:huf => “Hungarian Forint”,:isk => “Iceland Krona”,:inr => “Indian Rupee”,:idr => “Indonesian Rupiah”,:irr => “Iranian Rial”,:iqd => “Iraqi Dinar”,:ils => “Israeli New Shekel”,:jmd => “Jamaican Dollar”,:jpy => “Japanese Yen”,:jod => “Jordanian Dinar”,:kzt => “Kazakhstan Tenge”,:kes => “Kenyan Shilling”,:krw => “Korean Won”,:kwd => “Kuwaiti Dinar”,:lak => “Lao Kip”,:lvl => “Latvian Lats”,:lbp => “Lebanese Pound”,:lsl => “Lesotho Loti”,:lyd => “Libyan Dinar”,:ltl => “Lithuanian Litas”,:mop => “Macau Pataca”,:mwk => “Malawi Kwacha”,:myr => “Malaysian Ringgit”,:mur => “Mauritius Rupee”,:mxn => “Mexican Peso”,:mdl => “Moldovan Leu”,:mad => “Moroccan Dirham”,:mmk => “Myanmar Kyat”,:npr => “Nepalese Rupee”,:ang => “Netherlands Antillian Guilder”,:nzd => “New Zealand Dollar”,:nio => “Nicaraguan Cordoba Oro”,:ngn => “Nigerian Naira”,:nok => “Norwegian Krone”,:omr => “Omani Rial”,:pkr => “Pakistan Rupee”,:pab => “Panamanian Balboa”,:pyg => “Paraguay Guarani”,:pen => “Peruvian Nuevo Sol”,:php => “Philippine Peso”,:pln => “Polish Zloty”,:qar => “Qatari Rial”,:ron => “Romanian Leu”,:rub => “Russian Ruble”,:rwf => “Rwanda Franc”,:sar => “Saudi Riyal”,:rsd => “Serbian Dinar”,:scr => “Seychelles Rupee”,:sgd => “Singapore Dollar”,:sos => “Somali Shilling”,:zar => “South African Rand”,:lkr => “Sri Lanka Rupee”,:sdd => “Sudanese Dinar”,:szl => “Swaziland Lilangeni”,:sek => “Swedish Krona”,:chf => “Swiss Franc”,:syp => “Syrian Pound”,:twd => “Taiwan Dollar”,:tzs => “Tanzanian Shilling”,:thb => “Thai Baht”,:ttd => “Trinidad and Tobago Dollar”,:tnd => “Tunisian Dinar”,:try => “Turkish Lira”,:ugx => “Uganda Shilling”,:uah => “Ukraine Hryvnia”,:aed => “United Arab Emirates Dirham”,:uyu => “Uruguay Peso”,:usd => “US Dollar”,:vef => “Venezuelan Bolivar”,:vnd => “Vietnamese Dong”,:zmk => “Zambian Kwacha”,:zwd => “Zimbabwe Dollar”

"http://exchange-rates.org/converter"

Class Method Summary collapse

Class Method Details

.calculate(money) ⇒ Object

Raises:

  • (StandardError)


15
16
17
18
19
20
21
# File 'lib/currency.rb', line 15

def self.calculate(money)      
  ex_rate = exchange_rate
  raise StandardError, "Could not find out the result" if ex_rate.nil?
  
  result = "%.2f" % (ex_rate * money)
  result.to_f
end

.exchange(money, from, to) ⇒ Object

Raises:

  • (StandardError)


5
6
7
8
9
10
11
12
13
# File 'lib/currency.rb', line 5

def self.exchange(money, from, to)      
  @from_currency = from.downcase.to_sym
  @to_currency = to.downcase.to_sym

  raise StandardError, "From currency #{@from_currency} is invalid" unless self.from_currency_is_valid?
  raise StandardError, "To currency #{@to_currency} is invalid" unless self.to_currency_is_valid?

  self.calculate(money)
end

.exchange_rateObject



23
24
25
26
27
28
29
30
# File 'lib/currency.rb', line 23

def self.exchange_rate
  begin
    doc = Nokogiri::HTML(open(url), nil, 'UTF-8')
    doc.css('#ctl00_M_lblToAmount').text.to_f
  rescue 
    nil
  end
end

.urlObject



32
33
34
# File 'lib/currency.rb', line 32

def self.url
  "#{URL}/#{@from_currency.to_s.upcase}/#{@to_currency.to_s.upcase}/1"
end