Sha256: 70750dc51439dd0f01444725bd8c1eaa100f0827e246755baff82b08121d1186
Contents?: true
Size: 1.59 KB
Versions: 1
Compression:
Stored size: 1.59 KB
Contents
require 'open-uri' require 'nokogiri' module VatRates class Fetcher URL = 'http://ec.europa.eu/taxation_customs/tic/public/vatRates/vatratesSearch.html' class << self def get html = open(URL) doc = Nokogiri::HTML(html) data = [] content = doc.css('#tic-content').first content.children.each do |child| if child.name == 'h2' code, name = child.text.split(' - ') data << { code: code, name: name, rate: normalize_rate(child.next.next.next.next.css('td')[1].text) } elsif child.name == 'h4' data.last[:regions] ||= [] region = { name: child.text } standard = child.next.next.next.next if standard.text.include?('No Standard Rate') region[:rate] = 0 else region[:rate] = normalize_rate(standard.css('td')[1].text) end reduced = standard.next.next.next.next.next.next unless reduced.text.include?('No information available') reduced.css('tr')[1..-1].each do |row| columns = row.css('td') region[:reduced_rates] = { category: columns[0].text, rate: normalize_rate(columns[1].text) } end end data.last[:regions] << region end end data end def normalize_rate(number) number.sub(',', '.').gsub(/[% ]/, '').to_f end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vat_rates-0.0.1 | lib/vat_rates/fetcher.rb |