browserino 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ Browserino.config.emails do
4
+ match %r{outlook}i, name: :outlook
5
+ match %r{airmail}i, name: :airmail, engine: :webkit
6
+ match %r{barca}i, name: :barca, version: %r{barca(?:pro)?/([\d\.]+)}i
7
+
8
+ match %r{ggpht}i do
9
+ name :gmail
10
+ engine %r{(trident|gecko|webkit|presto|blink|servo|edge)}i
11
+ engine_version %r{(?:rv:|trident|webkit|presto|blink
12
+ |servo|edge)[\s/]?([\d\.]+)}i
13
+ end
14
+
15
+ # these are the same as above except with engine set to gecko and
16
+ # to look for engine_version using gecko version pattern
17
+ preset engine: :gecko, engine_version: %r{rv:\s?([\d\.]+)}i do
18
+ match %r{thunderbird}i, name: :thunderbird
19
+ match %r{spicebird}i, name: :spicebird
20
+ match %r{postbox}i, name: :postbox
21
+ end
22
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ Browserino.config.define do
4
+ # Aside from the logic going on in this file, the order in which things are
5
+ # written is important! If you would move the :midori matcher below the
6
+ # :safari matcher and you would run rspec, you would see failures due to
7
+ # the change in order. The order can be changed - no problem,
8
+ # as long as the tests keep running
9
+
10
+ # a set of global matchers that will use formatted properties found earlier
11
+ # they will also be applied to every matcher unless that matcher has it's own
12
+ # (or inherited a property through like) property set up for
13
+ # the defined smart matcher
14
+ smart_match :version, with: ':name[\s/]?v?([\d\._]+)', flags: [:i]
15
+ smart_match :engine_version, with: ':engine[\s/]?([\d\._]+)', flags: [:i]
16
+
17
+ # a simple set of global matchers that will be merged and scanned
18
+ # with a specific matcher when the final client object is created
19
+ match do
20
+ locale %r{(?<!nintendo)[;\s(]([a-z]{2}(?:[-_][a-z]{2})?)\-?[;)]}i
21
+ architecture %r{((?:(?:x|x86_|amd|wow|win)64)|i[36]86|arm)}i
22
+
23
+ smarttv %r{(?:smart[\-\s]|hbb|apple\s|google|g)(tv)}i
24
+
25
+ tablet %r{(ipad|transformer|slider|a\d+f;|tablet|lenovo
26
+ |\s\w+tab\s)}xi
27
+
28
+ mobile %r{(bolt|nokia|samsung(?!b)|mobi(?:le)?|i?p(?:[ao]d|hone)
29
+ |android|bb\d+|blackberry|iemobile|fennec|bada|meego
30
+ |tizen|vodafone|kindle|kf\w\w|palmos|huawei|moto|lumia
31
+ |oneplus|fxos|nexus|opera\sm(?:ob|in)i|zte|htc(?!\-))}xi
32
+
33
+ platform %r{.*(wiiu?|nintendo\sds|playstation|windows\sphone|windows
34
+ |kf\w\w|mac(?:intosh|\sos\sx)|android|ip(?:[ao]d|hone)
35
+ |blackberry|linux|ubuntu|beos|unix|bsd|s(?:unos|olaris)
36
+ |tizen|xbox|amigaos|w(?:eb)?os|(?<!mi)cros|bada|palmos
37
+ |kindle|symbiano?s?|sailfish|meego|darwin|syllable|fxos
38
+ |(?<!en)risc|rim\stablet\sos|haiku|morphos|debian)}xi
39
+
40
+ platform_version %r{(?:windows(?:\sphone(?:\sos)?)?|nt|android|linux/?|fxos
41
+ |mac\sos\sx(?:\s\w+\s)?|(?:cpu\s|ip(?:[ao]d|hone)\s)os
42
+ |blackberry|bb|s(?:unos|olaris)/?|w(?:eb)?os/|tizen
43
+ |risc\s*|amigaos/?|cros\s[\w-]+|ows\sxp|darwin|palmos
44
+ |bada/?|symbianos/?|rim\stablet\sos)\s?([\d\._]+)}xi
45
+
46
+ device %r{(alcatel|all(?:tell|view)|htc|kindle|kf\w\w|apple\s?tv
47
+ |iphone|ipad|a\d+f;|archos|transformer|slider|me\d+x|zte
48
+ |blackberry|\d+dl|venue|desire|oneplus|lenovo|lumia|moto
49
+ |huawei\b|motorola|nokia|nexus|\b\w+tab\b|lg[-l]
50
+ |(?<!p)hp)}xi
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ # automatically set type to :library for each defined matcher
4
+ # additionally, set text to true to each of the matchers automatically
5
+ Browserino.config.libraries text: true do
6
+ match %r{Go-http-client}i, name: :golang, version: %r{-client/([\d\.]+)}i
7
+ match %r{python}i, name: :python, version: %r{-urllib/([\d\.]+)}i
8
+ match %r{luakit}i, name: :luakit, engine: :webkit
9
+ match %r{webfetch}i, name: :webfetch
10
+ match %r{pycurl}i, name: :pycurl
11
+ match %r{perl}i, name: :perl
12
+ match %r{java}i, name: :java
13
+ match %r{curl}i, name: :curl
14
+ match %r{wget}i, name: :wget
15
+ match %r{php}i, name: :php
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ Browserino.config.mediaplayers do
4
+ match %r{itunes}i, name: :itunes
5
+ match %r{dailymotion}i, name: :dailymotion
6
+ match %r{flycast}i, name: :flycast
7
+ match %r{coreplayer}i, name: :coreplayer
8
+ match %r{banshee}i, name: :banshee
9
+ match %r{foobar2000}i, name: :foobar2000
10
+ match %r{boxee}i, name: :boxee
11
+ match %r{gomplayer}i, name: :gomplayer, version: %r{yer\s([\d,\s]+)}i
12
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ Browserino.config.rss do
4
+ match %r{windows-rss}i, name: :windows_rss
5
+ match %r{apple-pubsub}i, name: :apple_pubsub
6
+ match %r{applesyndication}i, name: :safari_rss
7
+ match %r{sharpreader}i, name: :sharpreader
8
+ match %r{netnewswire}i, name: :netnewswire
9
+ match %r{omea\sreader}i, name: :omea_reader
10
+ match %r{rssbandit}i, name: :rssbandit
11
+ match %r{feeddemon}i, name: :feeddemon
12
+ match %r{lucknews}i, name: :lucknews
13
+ match %r{inoreader}i, name: :inoreader
14
+ match %r{rss\smenu}i, name: :rss_menu
15
+ match %r{rss\spopper}i, name: :rss_popper
16
+ match %r{homepage\srss\sread}i, name: :seznam_rss
17
+ match %r{nfreader}i, name: :nfreader
18
+ match %r{magpierss}i, name: :magpierss
19
+ match %r{gregarius}i, name: :gregarius
20
+ match %r{newsbreak}i, name: :newsbreak
21
+ match %r{blogbridge}i, name: :blogbridge
22
+ match %r{yeahreader}i, name: :yeahreader
23
+ match %r{newsbeuter}i, name: :newsbeuter
24
+ match %r{greatnews}i, name: :greatnews
25
+ match %r{bloglines}i, name: :bloglines
26
+ match %r{icatcher}i, name: :icatcher
27
+ match %r{newsfox}i, name: :newsfox
28
+ match %r{quiterss}i, name: :quiterss
29
+ match %r{liferea}i, name: :liferea
30
+ match %r{aiderss}i, name: :aiderss
31
+ match %r{reeder}i, name: :reeder
32
+ match %r{rssowl}i, name: :rssowl
33
+ match %r{feedly}i, name: :feedly
34
+ match %r{abilon}i, name: :abilon
35
+ match %r{shrook}i, name: :shrook
36
+ match %r{awasu}i, name: :awasu
37
+ match %r{sage}i, name: :sage
38
+ match %r{akregator}i, name: :akregator
39
+ match %r{trileet\snewsroom}i, name: :trileet_newsroom
40
+ match %r{dragonfly\srss}i, name: :dragonfly_rss
41
+ match %r{digg\sfeed\sfetcher}i, name: :digg_feed_fetcher
42
+ match %r{yahoofeedseeker}i, name: :yahoofeedseeker
43
+ match %r{universalfeedparser}i, name: :universalfeedparser
44
+ match %r{feedfetcher-google}i, name: :feedfetcher_google
45
+ match %r{fastladder\sfeed}i, name: :fastladder_feedfetcher
46
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # automatically set type to :validator for each defined matcher
4
+ # additionally, set text to true to each of the matchers automatically
5
+ Browserino.config.validators do
6
+ match %r{xenu\slink\ssleuth}i, name: :xenu_link_sleuth
7
+ match %r{screaming\sfrog\sseo}i, name: :screaming_frog_seo_spider
8
+ match %r{rel\slink\schecker}i, name: :rel_link_checker_lite
9
+ match %r{a1\swebsite\sanalyze}i, name: :a1_website_analyzer
10
+ match %r{w3c_multipage_valida}i, name: :w3c_multipage_validator
11
+ match %r{cse\shtml\svalidator}i, name: :cse_html_validator
12
+ match %r{p3p\svalidator}i, name: :p3p_validator
13
+ match %r{w3c-checklink}i, name: :w3c_checklink
14
+ match %r{w3c_i18n-checker}i, name: :w3c_i18n_checker
15
+ match %r{w3c_unicorn}i, name: :w3c_unicorn
16
+ match %r{w3c-mobileok}i, name: :w3c_mobileok
17
+ match %r{wdg_validator}i, name: :wdg_validator
18
+ match %r{w3c_validator}i, name: :w3c_validator
19
+ match %r{fplinkchecker}i, name: :fplinkchecker
20
+ match %r{linkchecker}i, name: :linkchecker
21
+ match %r{linkwalker}i, name: :linkwalker
22
+ match %r{linkexaminer}i, name: :linkexaminer
23
+ match %r{feedvalidator}i, name: :feedvalidator
24
+ match %r{htmlparser}i, name: :htmlparser
25
+ match %r{csscheck}i, name: :csscheck
26
+ match %r{checkbot}i, name: :checkbot
27
+ match %r{cynthia}i, name: :cynthia
28
+
29
+ match %r{validator\.nu}i, name: :validator_nu,
30
+ version: %r{idator\.nu/([\d\.]+)}i
31
+
32
+ match %r{htmlchecker}i, name: :anw_htmlchecker,
33
+ version: %r{htmlchecker/([\d\.]+)}i
34
+
35
+ match %r{w3c_css_validator}i, name: :w3c_css_validator,
36
+ version: %r{validator_jfouffa/([\d\.]+)}i
37
+ end
@@ -1,557 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Browserino.config.define do
4
- # Aside from the logic going on in this file, the order in which things are
5
- # written is important! If you would move the :midori matcher below the
6
- # :safari matcher and you would run rspec, you would see failures due to
7
- # the change in order. The order can be changed - no problem,
8
- # as long as the tests keep running
9
-
10
- # a set of global matchers that will use formatted properties found earlier
11
- # they will also be applied to every matcher unless that matcher has it's own
12
- # (or inherited a property through like) property set up for
13
- # the defined smart matcher
14
- smart_match :version, with: ':name[\s/]?v?([\d\._]+)', flags: [:i]
15
- smart_match :engine_version, with: ':engine[\s/]?([\d\._]+)', flags: [:i]
16
-
17
- # a simple set of global matchers that will be merged and scanned
18
- # with a specific matcher when the final client object is created
19
- match do
20
- locale %r{(?<!nintendo)[;\s(]([a-z]{2}(?:[-_][a-z]{2})?)[;)]}i
21
- architecture %r{((?:(?:x|x86_|amd|wow|win)64)|i[36]86|arm)}i
22
-
23
- mobile %r{(bolt|nokia|samsung(?!b)|mobi(?:le)?|i?p(?:[ao]d|hone)
24
- |android|bb\d+|blackberry|iemobile|fennec|bada|meego
25
- |tizen|vodafone|t\-mobile|kindle|kf\w\w
26
- |opera\sm(?:ob|in)i)}xi
27
-
28
- platform %r{.*(wiiu?|nintendo\sds|playstation|windows(?:\sphone)?
29
- |kf\w\w|mac(?:intosh|\sos\sx)|android|ip(?:[ao]d|hone)
30
- |blackberry|risc|linux|ubuntu|x11|bsd|s(?:unos|olaris)
31
- |tizen|xbox|amigaos|w(?:eb)?os|(?<!mi)cros|kindle)}xi
32
-
33
- platform_version %r{(?:windows(?:\sphone(?:\sos)?)?|nt|android|linux/?
34
- |mac\sos\sx(?:\s\w+\s)?|(?:cpu\s|ip(?:[ao]d|hone)\s)os
35
- |blackberry|bb|s(?:unos|olaris)/?|w(?:eb)?os/|tizen
36
- |risc\s*|amigaos/?|cros\s[\w-]+|ows\sxp)\s?([\d\._]+)}xi
37
- end
38
-
39
- # automatically set type to :email for each defined matcher
40
- emails do
41
- match %r{outlook}i, name: :outlook
42
- match %r{airmail}i, name: :airmail, engine: :webkit
43
- match %r{barca}i, name: :barca, version: %r{barca(?:pro)?/([\d\.]+)}i
44
-
45
- match %r{ggpht}i do
46
- name :gmail
47
- engine %r{(trident|gecko|webkit|presto|blink|servo|edge)}i
48
- engine_version %r{(?:rv:|trident|webkit|presto|blink
49
- |servo|edge)[\s/]?([\d\.]+)}i
50
- end
51
- end
52
-
53
- # these are the same as above except with engine set to gecko and
54
- # to look for engine_version using gecko version pattern
55
- emails engine: :gecko, engine_version: %r{rv:\s?([\d\.]+)}i do
56
- match %r{thunderbird}i, name: :thunderbird
57
- match %r{postbox}i, name: :postbox
58
- end
59
-
60
- # automatically set type to :browser for each defined matcher
61
- browsers do
62
- # a single matcher that will create a matcher for a specific match
63
- # matchers are added in an array in order of definition - higher is better
64
- # aliasses are prepended to the list instead of appended (e.g. like blocks)
65
- # this ensures that aliasses will be matched before any regular matcher
66
- match %r{maxthon}i do
67
- # define properties by calling a method with the desired name and:
68
- # -- value # => will create a static method that returns that value
69
- # -- /(pat)/ # => will create a method that scans the UA and
70
- # saves the first capture group
71
- # -- { blk } # => will create a dynamic method that returns the result
72
- # of the block, it will be executed within an
73
- # instantiated Client object (right after creation)
74
- name :maxthon
75
- engine %r{(webkit|presto|gecko|trident)}i
76
- end
77
-
78
- match %r{ucbrowser}i do
79
- name :ucbrowser
80
- engine %r{(trident|gecko|webkit|presto)}i
81
- end
82
-
83
- match %r{edge}i do
84
- name :edge
85
- engine :edge
86
- modern? true
87
- end
88
-
89
- match %r{ope?ra?\smini}i do
90
- name :opera_mini
91
- version %r{ope?ra?\smini/([\d\.]+)}i
92
- engine %r{(presto|webkit)}i
93
- end
94
-
95
- match %r{opera[^\w]}i do
96
- name :opera
97
- version %r{(?:opera[\s/]|version/)([\d\.]+)}i
98
- engine %r{(presto|webkit)}i
99
- end
100
-
101
- # escape has to come before IE
102
- match %r{escape}i, name: :escape
103
-
104
- match %r{flock}i, name: :flock, engine: %r{(webkit|gecko|servo)}i,
105
- engine_version: %r{(?:webkit|rv:|servo)[\s/]?([\d\.]+)}i
106
-
107
- match %r{sunrise}i, name: :sunrise, engine: %r{(webkit|gecko|servo)}i,
108
- engine_version: %r{(?:webkit|rv:|servo)[\s/]?([\d\.]+)}i
109
-
110
- match %r{msie|trident}i do
111
- name :ie
112
- engine :trident
113
- version %r{(?:(?:ms)?ie\s|rv:)([\d\.]+)}i
114
- modern? { version >= 10 }
115
- end
116
-
117
- match %r{chrome(?:ium)?}i do
118
- name :chrome
119
- version %r{chrome(?:ium)?/([\d\.]+)}i
120
- engine %r{(webkit|blink)}i
121
- modern? { version >= 50 }
122
- end
123
-
124
- match %r{nintendobrowser}i, name: :nintendobrowser, engine: :webkit
125
- match %r{deskbrowse}i, name: :deskbrowse, engine: :webkit
126
- match %r{qupzilla}i, name: :qupzilla, engine: :webkit
127
- match %r{midori}i, name: :midori, engine: :webkit
128
- match %r{shiira}i, name: :shiira, engine: :webkit
129
- match %r{amigavoyager}i, name: :amigavoyager
130
- match %r{(?<!(?:net))surf}i, name: :surf
131
-
132
- match %r{sundance}i, name: :sundance,
133
- version: %r{(?:version/|sundance/)([\d\.]+)}i
134
-
135
- match %r{inet\sbrowser}i, name: :inet_browser, platform: :star_blade_os,
136
- version: %r{browser[\s/]?([\d\.]+)}i
137
-
138
- match %r{ibm\swebexplorer}i, name: :ibm_webexplorer, platform: :os2,
139
- version: %r{bexplorer\s?/v?([\d\.]+)}i
140
-
141
- match %r{element\sbrowser}i, name: :element_browser, engine: :webkit,
142
- version: %r{browser[\s/]([\d\.]+)}i
143
-
144
- match %r{navscape}i, name: :navscape, engine: :webkit,
145
- version: %r{navscape/(?:\w+-)?([\d\.]+)}i
146
-
147
- match %r{firefox|phoenix}i do
148
- name :firefox
149
- engine %r{(gecko|servo)}i
150
- engine_version %r{(?:rv:\s?|servo/)([\d\.]+)}i
151
- modern? { version >= 50 }
152
- end
153
-
154
- match %r{safari}i do
155
- name :safari
156
- engine :webkit
157
- version %r{(?:safari|version)/([\d\.]+)}i
158
- modern? { version >= 9 }
159
- end
160
-
161
- match %r{epiphany}i, name: :epiphany, engine: :webkit
162
- match %r{uzbl}i, name: :uzbl, engine: :webkit
163
- match %r{roccat}i, name: :roccat, engine: :webkit
164
- match %r{adobeair}i, name: :adobeair, engine: :webkit
165
- match %r{abrowse}i, name: :abrowse, engine: :webkit
166
- match %r{vimprobable}i, name: :vimprobable, engine: :webkit
167
- match %r{amaya}i, name: :amaya, text: true
168
- match %r{lynx}i, name: :lynx, text: true
169
- match %r{linemode}i, name: :linemode, text: true
170
- match %r{elinks}i, name: :elinks, text: true
171
- match %r{netpositive}i, name: :netpositive
172
- match %r{onebrowser}i, name: :onebrowser
173
- match %r{flashfire}i, name: :flashfire
174
- match %r{konqueror}i, name: :konqueror
175
- match %r{cyberdog}i, name: :cyberdog
176
- match %r{hotjava}i, name: :hotjava
177
- match %r{netsurf}i, name: :netsurf
178
- match %r{contiki}i, name: :contiki
179
- match %r{mosaic|ibrowse[^r]}i, name: :mosaic
180
- match %r{dillo}i, name: :dillo
181
-
182
- match %r{alienblue}i, name: :alienblue,
183
- version: %r{alienblue(?:hd)?/([\d\.]+)}i
184
-
185
- match %r{obigo}i, name: :obigo, engine: :webkit,
186
- version: %r{obigo/w?([\d\.]+)}i
187
-
188
- match %r{ovibrowser}i, name: :ovibrowser, engine: :gecko,
189
- engine_version: %r{rv:\s?([\d\.]+)}i
190
-
191
- match %r{osb\-browser}i, name: :osb_browser, engine: :webkit,
192
- version: %r{\-browser/([\d\.]+)}i
193
-
194
- match %r{links}i, name: :links,
195
- version: %r{links\s\(([\d\.]+)}i
196
-
197
- match %r{oregano}i, name: :oregano,
198
- locale: %r{\[(\w{2}(?:\-\w{2})?)\]}i
199
-
200
- match %r{dooble}i, name: :dooble, engine: :webkit,
201
- locale: %r{\((\w{2}(?:[-_]\w{2})?)\)}i
202
-
203
- match %r{retawq}i, name: :retawq, text: true,
204
- locale: %r{\[(\w{2}(?:\-\w{2})?)\]}i
205
- end
206
-
207
- # automatically set type to :bot for each defined matcher
208
- # additionally, set text to true to each of the matchers automatically
209
- bots text: true do
210
- match %r{huaweisymantecspider}i, name: :huaweisymantecspider
211
- match %r{atomic_email_hunter}i, name: :atomic_email_hunter
212
- match %r{netresearchserver}i, name: :netresearchserver
213
- match %r{autoemailspider}i, name: :auto_email_spider
214
- match %r{flaming\sattackbot}i, name: :flaming_attackbot
215
- match %r{addsugarspiderbot}i, name: :addsugarspiderbot
216
- match %r{dataparksearch}i, name: :dataparksearch
217
- match %r{boston[_ ]project}i, name: :boston_project
218
- match %r{emailcollector}i, name: :emailcollector
219
- match %r{4anything}i, name: :four_anything
220
- match %r{aqua_products}i, name: :aqua_products
221
- match %r{arachnophilia}i, name: :arachnophilia
222
- match %r{emeraldshield}i, name: :emeraldshield
223
- match %r{issuecrawler}i, name: :issuecrawler
224
- match %r{jaxified\sbot}i, name: :jaxified_bot
225
- match %r{stackrambler}i, name: :stackrambler
226
- match %r{turnitinbot}i, name: :turnitinbot
227
- match %r{alkaline}i, name: :alkalinebot
228
- match %r{yahoo\!\sslurp}i, name: :yahoo_slurp
229
- match %r{emailsiphon}i, name: :emailsiphon
230
- match %r{backdoorbot}i, name: :backdoorbot
231
- match %r{terrawizbot}i, name: :terrawizbot
232
- match %r{searchsight}i, name: :searchsight
233
- match %r{baiduspider}i, name: :baiduspider
234
- match %r{linguee\sbot}i, name: :linguee_bot
235
- match %r{sandcrawler}i, name: :sandcrawler
236
- match %r{big\sbrother}i, name: :big_brother
237
- match %r{noxtrumbot}i, name: :noxtrumbot
238
- match %r{black\shole}i, name: :black_hole
239
- match %r{blackwidow}i, name: :blackwidow
240
- match %r{sosospider}i, name: :sosospider
241
- match %r{duckduckgo}i, name: :duckduckgo
242
- match %r{beslistbot}i, name: :beslistbot
243
- match %r{twitterbot}i, name: :twitterbot
244
- match %r{linkdexbot}i, name: :linkdexbot
245
- match %r{aitcsrobot}i, name: :aitcsrobot
246
- match %r{litefinder}i, name: :litefinder
247
- match %r{linkwalker}i, name: :linkwalker
248
- match %r{mabontland}i, name: :mabontland
249
- match %r{ahrefsbot}i, name: :ahrefsbot
250
- match %r{mojeekbot}i, name: :mojeekbot
251
- match %r{seznambot}i, name: :seznambot
252
- match %r{girafabot}i, name: :girafabot
253
- match %r{becomebot}i, name: :becomebot
254
- match %r{dts\sagent}i, name: :dts_agent
255
- match %r{emailwolf}i, name: :emailwolf
256
- match %r{googlebot}i, name: :googlebot
257
- match %r{omgilibot}i, name: :omgilibot
258
- match %r{altavista}i, name: :altavista
259
- match %r{yandexbot}i, name: :yandexbot
260
- match %r{newsgator}i, name: :newsgator
261
- match %r{instagram}i, name: :instagram
262
- match %r{pinterest}i, name: :pinterest
263
- match %r{gurujibot}i, name: :gurujibot
264
- match %r{lapozzbot}i, name: :lapozzbot
265
- match %r{mvaclient}i, name: :mvaclient
266
- match %r{ldspider}i, name: :ldspider
267
- match %r{lexxebot}i, name: :lexxebot
268
- match %r{scoutjet}i, name: :scoutjet
269
- match %r{linkedinbot}i, name: :linkedin
270
- match %r{bullseye}i, name: :bullseye
271
- match %r{alexibot}i, name: :alexibot
272
- match %r{face(?:bookexternalhit|bot)}i, name: :facebook
273
- match %r{getright}i, name: :getright
274
- match %r{asterias}i, name: :asterias
275
- match %r{catchbot}i, name: :catchbot
276
- match %r{discobot}i, name: :discobot
277
- match %r{geniebot}i, name: :geniebot
278
- match %r{koepabot}i, name: :koepabot
279
- match %r{synoobot}i, name: :synoobot
280
- match %r{rufusbot}i, name: :rufusbot
281
- match %r{rampybot}i, name: :rampybot
282
- match %r{mogimogi}i, name: :mogimogi
283
- match %r{jyxobot}i, name: :jyxobot
284
- match %r{orbiter}i, name: :orbiter
285
- match %r{polybot}i, name: :polybot
286
- match %r{accoona}i, name: :accoona
287
- match %r{mj12bot}i, name: :mj12bot
288
- match %r{aspider}i, name: :aspider
289
- match %r{blexbot}i, name: :blexbot
290
- match %r{bspider}i, name: :bspider
291
- match %r{auresys}i, name: :auresys
292
- match %r{bingbot}i, name: :bingbot
293
- match %r{gaisbot}i, name: :gaisbot
294
- match %r{backrub}i, name: :backrub
295
- match %r{harvest}i, name: :harvest
296
- match %r{nymesis}i, name: :nymesis
297
- match %r{radian6}i, name: :radian6
298
- match %r{scrubby}i, name: :scrubby
299
- match %r{snappy}i, name: :snappy
300
- match %r{vortex}i, name: :vortex
301
- match %r{tineye}i, name: :tineye
302
- match %r{sqworm}i, name: :sqworm
303
- match %r{qseero}i, name: :qseero
304
- match %r{pompos}i, name: :pompos
305
- match %r{ichiro}i, name: :ichiro
306
- match %r{bizbot}i, name: :bizbot
307
- match %r{msnbot}i, name: :msnbot
308
- match %r{exabot}i, name: :exabot
309
- match %r{msrbot}i, name: :msrbot
310
- match %r{dotbot}i, name: :dotbot
311
- match %r{cosmos}i, name: :cosmos
312
- match %r{ecatch}i, name: :ecatch
313
- match %r{scrapy}i, name: :scrapy
314
- match %r{holmes}i, name: :holmes
315
- match %r{tumblr}i, name: :tumblr
316
- match %r{mxbot}i, name: :mxbot
317
- match %r{acoon}i, name: :acoon
318
- match %r{nutch}i, name: :nutch
319
- match %r{ia_archiver}i, name: :alexa
320
- match %r{atomz}i, name: :atomz
321
- match %r{acoi}i, name: :acoi
322
- match %r{\sobot}i, name: :obot
323
- match %r{(?:ask)\sjeeves}i, name: :ask
324
- match %r{b2w}i, name: :b2w
325
-
326
- match %r{oegp}i, name: :oegp,
327
- version: %r{v\.\s([\d\.]+)}i
328
-
329
- match %r{ng-search}i, name: :ng_search,
330
- version: %r{-search/([\d\.]+)}i
331
-
332
- match %r{morning\spaper}i, name: :morning_paper,
333
- version: %r{\spaper\s([\d\.]+)}i
334
-
335
- match %r{l\.webis}i, name: :lwebis,
336
- version: %r{webis/([\d\.]+)}i
337
-
338
- match %r{covario-ids}i, name: :covario_ids,
339
- version: %r{io-ids/([\d\.]+)}i
340
-
341
- match %r{cerberian\sdrtrs}i, name: :cerberian_drtrs,
342
- version: %r{version[-/]([\d\.]+)}i
343
-
344
- match %r{gigamega}i, name: :gigamega,
345
- version: %r{mega\.bot/([\d\.]+)}i
346
-
347
- match %r{sogou(?:\s\w+)?\s?spider}i, name: :sogou_spider,
348
- version: %r{spider/([\d\.]+)}i
349
-
350
- match %r{megaindex}i, name: :megaindex,
351
- version: %r{index\.ru/([\d\.]+)}i
352
-
353
- match %r{mass\sdownloader}i, name: :mass_downloader,
354
- version: %r{downloader/([\d\.]+)}i
355
-
356
- match %r{safetynet\srobot}i, name: :safetynet_robot,
357
- version: %r{net\srobot\s([\d\.]+)}i
358
-
359
- match %r{internet\sninja}i, name: :internet_ninja,
360
- version: %r{ninja\s([\d\.]+)}i
361
-
362
- match %r{go\!zilla}i, name: :gozilla,
363
- version: %r{go\!zilla\s([\d\.]+)}i
364
-
365
- match %r{larbin}i, name: :larbin,
366
- version: %r{larbin_([\d\.]+)}i
367
-
368
- match %r{download\sdemon}i, name: :download_demon,
369
- version: %r{demon/([\d\.]+)}i
370
-
371
- match %r{netseer}i, name: :netseer,
372
- version: %r{\scrawler/([\d\.]+)}i
373
- end
374
-
375
- # automatically set type to :validator for each defined matcher
376
- # additionally, set text to true to each of the matchers automatically
377
- validators text: true do
378
- match %r{cse\shtml\svalidator}i, name: :cse_html_validator
379
- match %r{p3p\svalidator}i, name: :p3p_validator
380
- match %r{wdg_validator}i, name: :wdg_validator
381
- match %r{w3c_validator}i, name: :w3c_validator
382
- match %r{htmlparser}i, name: :htmlparser
383
- match %r{csscheck}i, name: :csscheck
384
-
385
- match %r{cynthia}i, name: :cynthia,
386
- version: %r{cynthia\s([\d\.]+)}i
387
-
388
- match %r{w3c_css_validator}i, name: :w3c_css_validator,
389
- version: %r{validator_jfouffa/([\d\.]+)}i
390
- end
391
-
392
- # automatically set type to :library for each defined matcher
393
- # additionally, set text to true to each of the matchers automatically
394
- libraries text: true do
395
- match %r{Go-http-client}i, name: :golang, version: %r{-client/([\d\.]+)}i
396
- match %r{python}i, name: :python, version: %r{-urllib/([\d\.]+)}i
397
- match %r{webfetch}i, name: :webfetch
398
- match %r{pycurl}i, name: :pycurl
399
- match %r{perl}i, name: :perl
400
- match %r{java}i, name: :java
401
- match %r{curl}i, name: :curl
402
- match %r{wget}i, name: :wget
403
- match %r{php}i, name: :php
404
- end
405
-
406
- # inherit properties a standard set of properties by the name of a
407
- # previously defined matcher, overwritten by properties added within matchers
408
- # inherit properties from matcher where name == :chrome, (except :version)
409
- like :chrome, except: [:version] do
410
- match %r{steam\sgame}i, name: :steam, version: %r{meoverlay/([\d\.]+)}i
411
- match %r{comodo_dragon}i, name: :comodo_dragon
412
- match %r{chromeplus}i, name: :chromeplus
413
- match %r{bluechrome}i, name: :bluechrome
414
- match %r{awesomium}i, name: :awesomium
415
- match %r{qqbrowser}i, name: :qqbrowser
416
- match %r{yabrowser}i, name: :yabrowser
417
- match %r{rockmelt}i, name: :rockmelt
418
- match %r{coolnovo}i, name: :coolnovo
419
- match %r{vivaldi}i, name: :vivaldi
420
- match %r{colibri}i, name: :colibri
421
- match %r{iridium}i, name: :iridium
422
- match %r{origin}i, name: :origin
423
- match %r{puffin}i, name: :puffin
424
- match %r{fluid}i, name: :fluid
425
- match %r{brave}i, name: :brave
426
- match %r{hana}i, name: :hana
427
- match %r{(?<!env)iron}i, name: :iron
428
-
429
- match %r{qtweb}i, name: :qtweb_browser,
430
- version: %r{net\sbrowser/([\d\.]+)}i
431
- end
432
-
433
- # inherit properties from matcher where name == :safari, (except :version)
434
- like :safari, except: [:version] do
435
- match %r{samsungbrowser}i, name: :samsungbrowser
436
- match %r{stainless}i, name: :stainless
437
- match %r{cheshire}i, name: :cheshire
438
- match %r{omniweb}i, name: :omniweb
439
- match %r{skyfire}i, name: :skyfire
440
- match %r{mercury}i, name: :mercury
441
- match %r{rekonq}i, name: :rekonq
442
- match %r{arora}i, name: :arora
443
- match %r{raptr}i, name: :raptr
444
- match %r{icab}i, name: :icab
445
- match %r{bolt}i, name: :bolt
446
- match %r{silk}i, name: :silk
447
- match %r{qt(?!web)}i, name: :qt
448
-
449
- match %r{nook}i, name: :nook,
450
- version: %r{build/\w+\s([\d\.]+)}i
451
-
452
- match %r{kindle}i, name: :kindle,
453
- version: %r{(?:kindle|version)/([\d\.]+)}i
454
-
455
- match %r{leechcraft}i, name: :leechcraft,
456
- version: %r{craft/(?:\w+\s)?([\d\.]+)}i
457
-
458
- match %r{webos|wosbrowser}i, name: :webosbrowser,
459
- version: %r{(?:version|osbrowser)/([\d\.]+)}i
460
-
461
- match %r{blackberry.*?(?=safari)}i, name: :blackberry_browser,
462
- version: %r{version/([\d\.]+)}i
463
- end
464
-
465
- # inherit properties from matcher where name == :firefox, (except :version)
466
- like :firefox, except: [:version] do
467
- # Minefield is firefox nightly, we can now do client.nightly?
468
- # to find out wether this browser is bleeding edge
469
- # this method will be caught by method missing if it isn't defined,
470
- # therefore - this method can be used on every Browserino::Client
471
- # instance
472
- match %r{minefield}i, name: :minefield, nightly: true
473
- match %r{k-meleon}i, name: :kmeleon, version: %r{leon/([\d\.]+)}i
474
- match %r{k-ninja}i, name: :kninja, version: %r{ninja/([\d\.]+)}i
475
- match %r{waterfox}i, name: :waterfox, architecture: :x64
476
- match %r{granparadiso}i, name: :granparadiso
477
- match %r{tenfourfox}i, name: :tenfourfox
478
- match %r{enigmafox}i, name: :enigmafox
479
- match %r{iceweasel}i, name: :iceweasel
480
- match %r{seamonkey}i, name: :seamonkey
481
- match %r{superswan}i, name: :superswan
482
- match %r{lunascape}i, name: :lunascape
483
- match %r{kazehakase}i, name: :kazehakase
484
- match %r{shiretoko}i, name: :shiretoko
485
- match %r{classilla}i, name: :classilla
486
- match %r{cometbird}i, name: :cometbird
487
- match %r{icedragon}i, name: :icedragon
488
- match %r{palemoon}i, name: :palemoon
489
- match %r{namoroka}i, name: :namoroka
490
- match %r{songbird}i, name: :songbird
491
- match %r{firebird}i, name: :firebird
492
- match %r{vonkeror}i, name: :vonkeror
493
- match %r{conkeror}i, name: :conkeror
494
- match %r{netscape}i, name: :netscape
495
- match %r{bonecho}i, name: :bonecho
496
- match %r{chimera}i, name: :chimera
497
- match %r{lolifox}i, name: :lolifox
498
- match %r{lorentz}i, name: :lorentz
499
- match %r{myibrow}i, name: :myibrow
500
- match %r{sylera}i, name: :sylera
501
- match %r{iceape}i, name: :iceape
502
- match %r{madfox}i, name: :madfox
503
- match %r{kapiko}i, name: :kapiko
504
- match %r{kmlite}i, name: :kmlite
505
- match %r{beonex}i, name: :beonex
506
- match %r{icecat}i, name: :icecat
507
- match %r{galeon}i, name: :galeon
508
- match %r{vision}i, name: :vision
509
- match %r{prism}i, name: :prism
510
- match %r{pogo}i, name: :pogo
511
- match %r{orca}i, name: :orca
512
-
513
- match %r{camino}i, name: :camino,
514
- locale: %r{\s(\w{2}(?:\-\w{2})?),}i
515
-
516
- match %r{fireweb\snavigator}i, name: :fireweb_navigator, engine: :gecko,
517
- version: %r{\snavigator/([\d\.]+)}i
518
- end
519
-
520
- # never thought a browser would want to be like IE...
521
- like :ie do
522
- # version does not have to be supplied because we simply want to use
523
- # the version supplied by the MSIE token instead (there is no version on
524
- # the avant browser or slimbrowser etc... UA itself)
525
- match %r{avant\sbrowser}i, name: :avant_browser
526
- match %r{greenbrowser}i, name: :greenbrowser
527
- match %r{slimbrowser}i, name: :slimbrowser
528
- match %r{theworld}i, name: :theworld
529
- match %r{browzar}i, name: :browzar
530
-
531
- # below are special cases where we need to manually
532
- # supply the version pattern
533
- match %r{deepnet\sexplorer}i, name: :deepnet_explorer,
534
- version: %r{explorer\s([\d\.]+)}i
535
-
536
- match %r{crazy\sbrowser}i, name: :crazy_browser,
537
- version: %r{browser\s([\d\.]+)}i
538
-
539
- match %r{solid\score}i, name: :solid_core,
540
- version: %r{d\score/([\d\.]+)}i
541
-
542
- # we can exclude the default version which will then be replaced by
543
- # the smart_matcher for :version which uses the :name token automatically
544
- # upon creating it's pattern
545
- preset except: [:version] do
546
- match %r{tencenttraveler}i, name: :tencenttraveler
547
- match %r{enigma\sbrowser}i, name: :enigma_browser
548
- match %r{simulbrowse}i, name: :simulbrowse
549
- match %r{netcaptor}i, name: :netcaptor
550
- match %r{sleipnir}i, name: :sleipnir
551
- match %r{irider}i, name: :irider
552
- match %r{kkman}i, name: :kkman
553
- match %r{lobo}i, name: :lobo
554
- match %r{aol}i, name: :aol
555
- end
556
- end
557
- end
3
+ require_relative 'matchers/global'
4
+ require_relative 'matchers/emails'
5
+ require_relative 'matchers/browsers'
6
+ require_relative 'matchers/bots'
7
+ require_relative 'matchers/validators'
8
+ require_relative 'matchers/rss'
9
+ require_relative 'matchers/libraries'