lib/wurfl-lite.rb in wurfl-lite-1.1.4 vs lib/wurfl-lite.rb in wurfl-lite-1.1.5

- old
+ new

@@ -1,8 +1,8 @@ require 'open-uri' require 'zlib' -require 'hpricot' +require 'nokogiri' require 'amatch' class WURFL LATEST = 'http://downloads.sourceforge.net/project/wurfl/WURFL/2.3.1/wurfl-2.3.1.xml.gz' @@ -49,22 +49,22 @@ begin # Try decompress it, in case it's a compressed file # XXX Yes, this does seem ugly, but is there another way? data = Zlib::GzipReader.new(StringIO.new(data.to_s)).read rescue Zlib::GzipFile::Error end - doc = Hpricot( data ) + doc = Nokogiri::XML( data ) keys_added = [] - (doc/'devices'/'device').each do |device_element| + doc.xpath("//devices/device").each do |device_element| device = Hash.new %w|id user_agent fall_back|.each do |attribute| - device[ attribute.to_sym ] = device_element.attributes[ attribute ] + device[ attribute.to_sym ] = device_element[ attribute ].to_s end - (device_element/'capability').each do |capability| - name = capability.attributes[ 'name' ].to_sym - value = capability.attributes[ 'value' ] + device_element.xpath("*/capability").each do |capability| + name = capability[ 'name' ].to_sym + value = capability[ 'value' ].to_s next if value.empty? if value.to_i.to_s == value.strip value = value.to_i elsif value.strip.downcase =~ /^(true|false)$/ value = ( value.strip.downcase == 'true' ) @@ -74,14 +74,14 @@ keys_added << device[ :user_agent ] @devices[ device[ :user_agent ] ] = device @devices_by_id[ device[ :id ] ] = device end - + keys_added.each do |key| @devices[ key ][ :fall_back ] = @devices_by_id[ @devices[ key ][ :fall_back ] ] end - + end def []( user_agent ) return if !user_agent