user_agent_parser 2.12.0 → 2.13.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7994324d50b5df6f804fbdb9af163f3f0f289d2e960c00ea4eacc3db560bba3e
4
- data.tar.gz: 168efdf63dfacf1a687e33db092bd226428f3279d995d6bf6b8b89fdd9056121
3
+ metadata.gz: 5f014ae2d784eb25f63242a361c9c9186ad108c7199fd1655944da1dcfeaff28
4
+ data.tar.gz: 36357407d451f17dada0fa4115f5f19e8a69af6932a1c3fc999ecd55abc958a0
5
5
  SHA512:
6
- metadata.gz: 275dfd67d2357655407fa09dcea6959d15bd184cba1f3cd1607108d0a72548c44a2e8d015bd230ed3adcec9036d79035c969a98eb499fe83efbab97360055fea
7
- data.tar.gz: 708f4ce8447e4fa0474f5798c4e155699a85555191ffda29ec528c1dd3d835a968520ff9ea88af1c9e3c075bbf4603003a756d5e40b862f7ad8af6607d3e1570
6
+ metadata.gz: 1dfc2207de8b2345dcf21a0f271122f96259165fe115397ecb290f9fb07a9924e399554a5f23110c27f24976feae5b189a9a482386bb9f60d74ce542625eda61
7
+ data.tar.gz: 7abd96ee88bcca1d800323d3d9fd2f508b0b36dc20885a79e5bdfb58154a48a00ed60b0f7750e3eb0fd6570bbbebaac48355f5ba250c35f05ace615c41baa5d5
@@ -4,6 +4,8 @@ require 'yaml'
4
4
 
5
5
  module UserAgentParser
6
6
  class Parser
7
+ extend Gem::Deprecate
8
+
7
9
  FAMILY_REPLACEMENT_KEYS = %w[
8
10
  family_replacement
9
11
  v1_replacement
@@ -22,11 +24,13 @@ module UserAgentParser
22
24
 
23
25
  private_constant :FAMILY_REPLACEMENT_KEYS, :OS_REPLACEMENT_KEYS
24
26
 
25
- attr_reader :patterns_path
27
+ attr_reader :patterns_paths
28
+
29
+ def initialize(patterns_path: nil, patterns_paths: [])
30
+ @patterns_paths = [patterns_path, *patterns_paths].compact
31
+ @patterns_paths = [UserAgentParser::DefaultPatternsPath] if @patterns_paths.empty?
26
32
 
27
- def initialize(options = {})
28
- @patterns_path = options[:patterns_path] || UserAgentParser::DefaultPatternsPath
29
- @ua_patterns, @os_patterns, @device_patterns = load_patterns(patterns_path)
33
+ @ua_patterns, @os_patterns, @device_patterns = load_patterns(@patterns_paths)
30
34
  end
31
35
 
32
36
  def parse(user_agent)
@@ -35,9 +39,23 @@ module UserAgentParser
35
39
  parse_ua(user_agent, os, device)
36
40
  end
37
41
 
42
+ def patterns_path
43
+ patterns_paths.first
44
+ end
45
+ deprecate :patterns_path, :patterns_paths, 2022, 12
46
+
38
47
  private
39
48
 
40
- def load_patterns(path)
49
+ def load_patterns(patterns_paths)
50
+ patterns_paths.each_with_object([[], [], []]) do |path, patterns|
51
+ ua_patterns, os_patterns, device_patterns = load_patterns_file(path)
52
+ patterns[0] += ua_patterns
53
+ patterns[1] += os_patterns
54
+ patterns[2] += device_patterns
55
+ end
56
+ end
57
+
58
+ def load_patterns_file(path)
41
59
  yml = begin
42
60
  YAML.load_file(path, freeze: true)
43
61
  rescue ArgumentError
@@ -88,24 +106,11 @@ module UserAgentParser
88
106
  end
89
107
  end
90
108
 
91
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.0')
92
- def first_pattern_match(patterns, value)
93
- patterns.each do |pattern|
94
- if pattern[:regex].match?(value)
95
- return [pattern, pattern[:regex].match(value)]
96
- end
97
- end
98
- nil
99
- end
100
- else
101
- def first_pattern_match(patterns, value)
102
- patterns.each do |pattern|
103
- if (match = pattern[:regex].match(value))
104
- return [pattern, match]
105
- end
106
- end
107
- nil
109
+ def first_pattern_match(patterns, value)
110
+ patterns.each do |pattern|
111
+ return [pattern, pattern[:regex].match(value)] if pattern[:regex].match?(value)
108
112
  end
113
+ nil
109
114
  end
110
115
 
111
116
  def user_agent_from_pattern_match(pattern, match, os = nil, device = nil)
@@ -10,7 +10,7 @@ module UserAgentParser
10
10
  DefaultPatternsPath = File.join(File.dirname(__FILE__), '../vendor/uap-core/regexes.yaml')
11
11
 
12
12
  # Parse the given +user_agent_string+, returning a +UserAgent+
13
- def self.parse(user_agent_string, options = {})
14
- Parser.new(options).parse(user_agent_string)
13
+ def self.parse(user_agent_string, **args)
14
+ Parser.new(**args).parse(user_agent_string)
15
15
  end
16
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: user_agent_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.12.0
4
+ version: 2.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lucas
@@ -10,8 +10,9 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A simple, comprehensive Ruby gem for parsing user agent strings with
14
- the help of BrowserScope's UA database
13
+ description: |
14
+ A simple, comprehensive Ruby gem for parsing user agent strings
15
+ with the help of BrowserScope's UserAgent database
15
16
  email: t@toolmantim.com
16
17
  executables:
17
18
  - user_agent_parser
@@ -50,6 +51,5 @@ requirements: []
50
51
  rubygems_version: 3.3.24
51
52
  signing_key:
52
53
  specification_version: 4
53
- summary: A simple, comprehensive Ruby gem for parsing user agent strings with the
54
- help of BrowserScope's UA database
54
+ summary: Parsing user agent strings with the help of BrowserScope's UA database
55
55
  test_files: []