Class: BrowserslistUseragent::Match

Inherits:
Object
  • Object
show all
Defined in:
lib/browserslist_useragent/match.rb

Overview

Checks matching of browserslist queies array to the user agent string

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queries, user_agent_string) ⇒ Match

Returns a new instance of Match.



10
11
12
13
14
15
16
17
18
# File 'lib/browserslist_useragent/match.rb', line 10

def initialize(queries, user_agent_string)
  @user_agent_string = user_agent_string
  @queries = queries.each_with_object({}) do |query, hash|
    query = BrowserslistUseragent::QueryNormalizer.new(query).call
    family = query[:family].downcase
    hash[family] ||= []
    hash[family].push(query[:version])
  end
end

Instance Attribute Details

#queriesObject (readonly)

Returns the value of attribute queries.



8
9
10
# File 'lib/browserslist_useragent/match.rb', line 8

def queries
  @queries
end

#user_agent_stringObject (readonly)

Returns the value of attribute user_agent_string.



8
9
10
# File 'lib/browserslist_useragent/match.rb', line 8

def user_agent_string
  @user_agent_string
end

Instance Method Details

#browser?Boolean

Returns:

  • (Boolean)


30
31
32
33
# File 'lib/browserslist_useragent/match.rb', line 30

def browser?
  target_browser = user_agent[:family].downcase
  queries.key?(target_browser)
end

#version?(allow_higher: false) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
23
24
25
26
27
28
# File 'lib/browserslist_useragent/match.rb', line 20

def version?(allow_higher: false)
  return false unless browser?

  user_agent_version = user_agent[:version]
  return false if user_agent_version.nil? || user_agent_version == ''

  semantic = Semantic::Version.new(user_agent[:version])
  match_semantic_version(semantic, allow_higher: allow_higher)
end