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