lib/wurfl-lite.rb in wurfl-lite-1.1.2 vs lib/wurfl-lite.rb in wurfl-lite-1.1.3
- old
+ new
@@ -28,10 +28,11 @@
end
end
def clear!
@devices = Hash.new
+ @devices_cached = Hash.new
@devices_by_id = {}
@files = []
end
def reset!
@@ -81,13 +82,17 @@
end
end
def []( user_agent )
+ if @devices_cached.has_key?( user_agent )
+ return @devices_cached[ user_agent ]
+ end
device = @devices[ user_agent ]
if device
device[ :wurfl_match ] = { :distance => 0, :distance_normalized => 0 }
+ @devices_cached[ user_agent ] = device
return device
end
match = Amatch::Sellers.new( user_agent )
match.insertion = @insertion
match.substitution = @substitution
@@ -98,17 +103,18 @@
use_key = sorted_list.first.first
device = @devices[ use_key ]
distance = sorted_list.first.last
distance_normalised = distance/(user_agent.length+1)
- if distance_normalised > @match_threshold
- nil
- else
- device[ :wurfl_match ] = {
- :distance => distance,
- :distance_normalised => distance_normalised
- }
- @devices[ user_agent ] = device
- end
+ @devices_cached[ user_agent ] =
+ if distance_normalised > @match_threshold
+ nil
+ else
+ device[ :wurfl_match ] = {
+ :distance => distance,
+ :distance_normalised => distance_normalised
+ }
+ @devices[ user_agent ] = device
+ end
end
end