brauser 3.3.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.travis-gemfile +4 -5
  4. data/.travis.yml +2 -2
  5. data/CHANGELOG.md +4 -0
  6. data/Gemfile +7 -8
  7. data/README.md +31 -95
  8. data/Rakefile +0 -1
  9. data/brauser.gemspec +4 -4
  10. data/default_definitions/browsers.rb +50 -0
  11. data/default_definitions/languages.rb +118 -0
  12. data/default_definitions/platforms.rb +24 -0
  13. data/doc/Brauser.html +6 -6
  14. data/doc/Brauser/Browser.html +3867 -580
  15. data/doc/Brauser/Definitions.html +537 -0
  16. data/doc/Brauser/Definitions/Base.html +342 -0
  17. data/doc/Brauser/Definitions/Browser.html +1047 -0
  18. data/doc/Brauser/Definitions/Language.html +496 -0
  19. data/doc/Brauser/Definitions/Platform.html +686 -0
  20. data/doc/Brauser/Hooks.html +2 -2
  21. data/doc/Brauser/Hooks/RubyOnRails.html +9 -9
  22. data/doc/Brauser/Parser.html +513 -0
  23. data/doc/Brauser/Value.html +601 -0
  24. data/doc/Brauser/Version.html +5 -5
  25. data/doc/_index.html +25 -108
  26. data/doc/class_list.html +1 -1
  27. data/doc/file.README.html +33 -97
  28. data/doc/index.html +33 -97
  29. data/doc/method_list.html +72 -120
  30. data/doc/top-level-namespace.html +2 -2
  31. data/lib/brauser.rb +13 -15
  32. data/lib/brauser/browser.rb +195 -66
  33. data/lib/brauser/definitions/base.rb +71 -0
  34. data/lib/brauser/definitions/browser.rb +80 -0
  35. data/lib/brauser/definitions/language.rb +29 -0
  36. data/lib/brauser/definitions/platform.rb +42 -0
  37. data/lib/brauser/hooks.rb +1 -2
  38. data/lib/brauser/parser.rb +47 -0
  39. data/lib/brauser/value.rb +39 -0
  40. data/lib/brauser/version.rb +3 -4
  41. data/spec/brauser/browser_spec.rb +73 -564
  42. data/spec/brauser/default_definitions_spec.rb +129 -0
  43. data/spec/brauser/definitions/base_spec.rb +48 -0
  44. data/spec/brauser/definitions/browser_spec.rb +47 -0
  45. data/spec/brauser/definitions/language_spec.rb +18 -0
  46. data/spec/brauser/definitions/platform_spec.rb +36 -0
  47. data/spec/brauser/hooks_spec.rb +5 -6
  48. data/spec/brauser/parser_spec.rb +31 -0
  49. data/spec/brauser/value_spec.rb +34 -0
  50. data/spec/coverage_helper.rb +0 -1
  51. data/spec/spec_helper.rb +0 -1
  52. metadata +50 -23
  53. data/lib/brauser/browseable/attributes.rb +0 -95
  54. data/lib/brauser/browseable/general.rb +0 -104
  55. data/lib/brauser/browseable/parsing.rb +0 -127
  56. data/lib/brauser/browseable/partial_querying.rb +0 -116
  57. data/lib/brauser/browseable/querying.rb +0 -63
  58. data/lib/brauser/browseable/register.rb +0 -73
  59. data/lib/brauser/definition.rb +0 -80
  60. data/lib/brauser/definitions/browsers.rb +0 -68
  61. data/lib/brauser/definitions/languages.rb +0 -130
  62. data/lib/brauser/definitions/platforms.rb +0 -30
  63. data/lib/brauser/query.rb +0 -36
  64. data/lib/brauser/queryable/chainers.rb +0 -56
  65. data/lib/brauser/queryable/queries.rb +0 -60
  66. data/spec/brauser/definition_spec.rb +0 -39
  67. data/spec/brauser/query_spec.rb +0 -111
@@ -0,0 +1,342 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: Brauser::Definitions::Base
8
+
9
+ &mdash; Documentation by YARD 0.8.7.4
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../../';
20
+ framesUrl = "../../frames.html#!Brauser/Definitions/Base.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../../_index.html">Index (B)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../../Brauser.html" title="Brauser (module)">Brauser</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Definitions.html" title="Brauser::Definitions (module)">Definitions</a></span></span>
36
+ &raquo;
37
+ <span class="title">Base</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: Brauser::Definitions::Base
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">Brauser::Definitions::Base</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <dt class="r2 last">Defined in:</dt>
97
+ <dd class="r2 last">lib/brauser/definitions/base.rb</dd>
98
+
99
+ </dl>
100
+ <div class="clear"></div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>A class which hold a definition of a browser, a platform or a language.</p>
105
+
106
+
107
+ </div>
108
+ </div>
109
+ <div class="tags">
110
+
111
+
112
+ </div><div id="subclasses">
113
+ <h2>Direct Known Subclasses</h2>
114
+ <p class="children"><span class='object_link'><a href="Browser.html" title="Brauser::Definitions::Browser (class)">Browser</a></span>, <span class='object_link'><a href="Language.html" title="Brauser::Definitions::Language (class)">Language</a></span>, <span class='object_link'><a href="Platform.html" title="Brauser::Definitions::Platform (class)">Platform</a></span></p>
115
+ </div>
116
+
117
+
118
+
119
+
120
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
121
+ <ul class="summary">
122
+
123
+ <li class="public ">
124
+ <span class="summary_signature">
125
+
126
+ <a href="#id-instance_method" title="#id (instance method)">- (Object) <strong>id</strong> </a>
127
+
128
+
129
+
130
+ </span>
131
+
132
+
133
+
134
+
135
+ <span class="note title readonly">readonly</span>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ <span class="summary_desc"><div class='inline'><p>The id of the definition.</p>
146
+ </div></span>
147
+
148
+ </li>
149
+
150
+
151
+ </ul>
152
+
153
+
154
+
155
+
156
+
157
+ <h2>
158
+ Instance Method Summary
159
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
160
+ </h2>
161
+
162
+ <ul class="summary">
163
+
164
+ <li class="public ">
165
+ <span class="summary_signature">
166
+
167
+ <a href="#match-instance_method" title="#match (instance method)">- (Object|NilClass) <strong>match</strong>(_, *_, **_) </a>
168
+
169
+
170
+
171
+ </span>
172
+
173
+
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ <span class="summary_desc"><div class='inline'><p>Performs a match of this definition.</p>
182
+ </div></span>
183
+
184
+ </li>
185
+
186
+
187
+ </ul>
188
+
189
+
190
+
191
+ <div id="instance_attr_details" class="attr_details">
192
+ <h2>Instance Attribute Details</h2>
193
+
194
+
195
+ <span id=""></span>
196
+ <div class="method_details first">
197
+ <h3 class="signature first" id="id-instance_method">
198
+
199
+ - (<tt>Object</tt>) <strong>id</strong> <span class="extras">(readonly)</span>
200
+
201
+
202
+
203
+
204
+
205
+ </h3><div class="docstring">
206
+ <div class="discussion">
207
+ <p>Returns The id of the definition.</p>
208
+
209
+
210
+ </div>
211
+ </div>
212
+ <div class="tags">
213
+
214
+ <p class="tag_title">Returns:</p>
215
+ <ul class="return">
216
+
217
+ <li>
218
+
219
+
220
+ <span class='type'></span>
221
+
222
+
223
+
224
+
225
+ <div class='inline'><p>The id of the definition.</p>
226
+ </div>
227
+
228
+ </li>
229
+
230
+ </ul>
231
+
232
+ </div><table class="source_code">
233
+ <tr>
234
+ <td>
235
+ <pre class="lines">
236
+
237
+
238
+ 60
239
+ 61
240
+ 62
241
+ 63
242
+ 64
243
+ 65
244
+ 66
245
+ 67
246
+ 68
247
+ 69</pre>
248
+ </td>
249
+ <td>
250
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/base.rb', line 60</span>
251
+
252
+ <span class='kw'>class</span> <span class='const'>Base</span>
253
+ <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:id</span>
254
+
255
+ <span class='comment'># Performs a match of this definition.
256
+ </span> <span class='comment'>#
257
+ </span> <span class='comment'># @return [Object|NilClass] A non falsy value if match succeeded, `false` or `nil` otherwise.
258
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
259
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overridden by a subclass.</span><span class='tstring_end'>&quot;</span></span>
260
+ <span class='kw'>end</span>
261
+ <span class='kw'>end</span></pre>
262
+ </td>
263
+ </tr>
264
+ </table>
265
+ </div>
266
+
267
+ </div>
268
+
269
+
270
+ <div id="instance_method_details" class="method_details_list">
271
+ <h2>Instance Method Details</h2>
272
+
273
+
274
+ <div class="method_details first">
275
+ <h3 class="signature first" id="match-instance_method">
276
+
277
+ - (<tt>Object|NilClass</tt>) <strong>match</strong>(_, *_, **_)
278
+
279
+
280
+
281
+
282
+
283
+ </h3><div class="docstring">
284
+ <div class="discussion">
285
+ <p>Performs a match of this definition.</p>
286
+
287
+
288
+ </div>
289
+ </div>
290
+ <div class="tags">
291
+
292
+ <p class="tag_title">Returns:</p>
293
+ <ul class="return">
294
+
295
+ <li>
296
+
297
+
298
+ <span class='type'>(<tt>Object|NilClass</tt>)</span>
299
+
300
+
301
+
302
+ &mdash;
303
+ <div class='inline'><p>A non falsy value if match succeeded, <code>false</code> or <code>nil</code> otherwise.</p>
304
+ </div>
305
+
306
+ </li>
307
+
308
+ </ul>
309
+
310
+ </div><table class="source_code">
311
+ <tr>
312
+ <td>
313
+ <pre class="lines">
314
+
315
+
316
+ 66
317
+ 67
318
+ 68</pre>
319
+ </td>
320
+ <td>
321
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/base.rb', line 66</span>
322
+
323
+ <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
324
+ <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overridden by a subclass.</span><span class='tstring_end'>&quot;</span></span>
325
+ <span class='kw'>end</span></pre>
326
+ </td>
327
+ </tr>
328
+ </table>
329
+ </div>
330
+
331
+ </div>
332
+
333
+ </div>
334
+
335
+ <div id="footer">
336
+ Generated on Mon Sep 29 16:43:32 2014 by
337
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
338
+ 0.8.7.4 (ruby-2.1.3).
339
+ </div>
340
+
341
+ </body>
342
+ </html>
@@ -0,0 +1,1047 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: Brauser::Definitions::Browser
8
+
9
+ &mdash; Documentation by YARD 0.8.7.4
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../../';
20
+ framesUrl = "../../frames.html#!Brauser/Definitions/Browser.html";
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../../_index.html">Index (B)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../../Brauser.html" title="Brauser (module)">Brauser</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Definitions.html" title="Brauser::Definitions (module)">Definitions</a></span></span>
36
+ &raquo;
37
+ <span class="title">Browser</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: Brauser::Definitions::Browser
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName"><span class='object_link'><a href="Base.html" title="Brauser::Definitions::Base (class)">Base</a></span></span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next"><span class='object_link'><a href="Base.html" title="Brauser::Definitions::Base (class)">Base</a></span></li>
82
+
83
+ <li class="next">Brauser::Definitions::Browser</li>
84
+
85
+ </ul>
86
+ <a href="#" class="inheritanceTree">show all</a>
87
+
88
+ </dd>
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+ <dt class="r2 last">Defined in:</dt>
99
+ <dd class="r2 last">lib/brauser/definitions/browser.rb</dd>
100
+
101
+ </dl>
102
+ <div class="clear"></div>
103
+
104
+ <h2>Overview</h2><div class="docstring">
105
+ <div class="discussion">
106
+ <p>A definition of a platform.</p>
107
+
108
+
109
+ </div>
110
+ </div>
111
+ <div class="tags">
112
+
113
+
114
+ </div>
115
+
116
+
117
+
118
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
119
+ <ul class="summary">
120
+
121
+ <li class="public ">
122
+ <span class="summary_signature">
123
+
124
+ <a href="#engine_matcher-instance_method" title="#engine_matcher (instance method)">- (Regexp|Proc) <strong>engine_matcher</strong> </a>
125
+
126
+
127
+
128
+ </span>
129
+
130
+
131
+
132
+
133
+ <span class="note title readonly">readonly</span>
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+ <span class="summary_desc"><div class='inline'><p>The pattern or the block to recognize the engine.</p>
144
+ </div></span>
145
+
146
+ </li>
147
+
148
+
149
+ <li class="public ">
150
+ <span class="summary_signature">
151
+
152
+ <a href="#name-instance_method" title="#name (instance method)">- (String) <strong>name</strong> </a>
153
+
154
+
155
+
156
+ </span>
157
+
158
+
159
+
160
+
161
+ <span class="note title readonly">readonly</span>
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+ <span class="summary_desc"><div class='inline'><p>The platform name.</p>
172
+ </div></span>
173
+
174
+ </li>
175
+
176
+
177
+ <li class="public ">
178
+ <span class="summary_signature">
179
+
180
+ <a href="#version_matcher-instance_method" title="#version_matcher (instance method)">- (Regexp|Proc) <strong>version_matcher</strong> </a>
181
+
182
+
183
+
184
+ </span>
185
+
186
+
187
+
188
+
189
+ <span class="note title readonly">readonly</span>
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+ <span class="summary_desc"><div class='inline'><p>The pattern or the block to recognize the version.</p>
200
+ </div></span>
201
+
202
+ </li>
203
+
204
+
205
+ </ul>
206
+
207
+
208
+
209
+
210
+
211
+ <h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Base.html" title="Brauser::Definitions::Base (class)">Base</a></span></h3>
212
+ <p class="inherited"><span class='object_link'><a href="Base.html#id-instance_method" title="Brauser::Definitions::Base#id (method)">#id</a></span></p>
213
+
214
+
215
+
216
+ <h2>
217
+ Instance Method Summary
218
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
219
+ </h2>
220
+
221
+ <ul class="summary">
222
+
223
+ <li class="public ">
224
+ <span class="summary_signature">
225
+
226
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Browser) <strong>initialize</strong>(id, name, engine_matcher, version_matcher, **_) </a>
227
+
228
+
229
+
230
+ </span>
231
+
232
+
233
+ <span class="note title constructor">constructor</span>
234
+
235
+
236
+
237
+
238
+
239
+
240
+
241
+
242
+ <span class="summary_desc"><div class='inline'><p>Creates a new definition.</p>
243
+ </div></span>
244
+
245
+ </li>
246
+
247
+
248
+ <li class="public ">
249
+ <span class="summary_signature">
250
+
251
+ <a href="#match-instance_method" title="#match (instance method)">- (Array|NilClass) <strong>match</strong>(header) </a>
252
+
253
+
254
+
255
+ </span>
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+ <span class="summary_desc"><div class='inline'><p>Matches against an header.</p>
266
+ </div></span>
267
+
268
+ </li>
269
+
270
+
271
+ </ul>
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+ <div id="constructor_details" class="method_details_list">
281
+ <h2>Constructor Details</h2>
282
+
283
+ <div class="method_details first">
284
+ <h3 class="signature first" id="initialize-instance_method">
285
+
286
+ - (<tt><span class='object_link'><a href="" title="Brauser::Definitions::Browser (class)">Browser</a></span></tt>) <strong>initialize</strong>(id, name, engine_matcher, version_matcher, **_)
287
+
288
+
289
+
290
+
291
+
292
+ </h3><div class="docstring">
293
+ <div class="discussion">
294
+ <p>Creates a new definition.</p>
295
+
296
+
297
+ </div>
298
+ </div>
299
+ <div class="tags">
300
+ <p class="tag_title">Parameters:</p>
301
+ <ul class="param">
302
+
303
+ <li>
304
+
305
+ <span class='name'>id</span>
306
+
307
+
308
+ <span class='type'>(<tt>Symbol</tt>)</span>
309
+
310
+
311
+
312
+ &mdash;
313
+ <div class='inline'><p>The platform id.</p>
314
+ </div>
315
+
316
+ </li>
317
+
318
+ <li>
319
+
320
+ <span class='name'>name</span>
321
+
322
+
323
+ <span class='type'>(<tt>String</tt>)</span>
324
+
325
+
326
+
327
+ &mdash;
328
+ <div class='inline'><p>The platform name.</p>
329
+ </div>
330
+
331
+ </li>
332
+
333
+ <li>
334
+
335
+ <span class='name'>engine_matcher</span>
336
+
337
+
338
+ <span class='type'>(<tt>Regexp|Proc</tt>)</span>
339
+
340
+
341
+
342
+ &mdash;
343
+ <div class='inline'><p>The pattern or the block to recognize the engine.</p>
344
+ </div>
345
+
346
+ </li>
347
+
348
+ <li>
349
+
350
+ <span class='name'>version_matcher</span>
351
+
352
+
353
+ <span class='type'>(<tt>Regexp|Proc</tt>)</span>
354
+
355
+
356
+
357
+ &mdash;
358
+ <div class='inline'><p>The pattern or the block to recognize the version.</p>
359
+ </div>
360
+
361
+ </li>
362
+
363
+ </ul>
364
+
365
+
366
+ </div><table class="source_code">
367
+ <tr>
368
+ <td>
369
+ <pre class="lines">
370
+
371
+
372
+ 25
373
+ 26
374
+ 27
375
+ 28
376
+ 29
377
+ 30</pre>
378
+ </td>
379
+ <td>
380
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/browser.rb', line 25</span>
381
+
382
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
383
+ <span class='ivar'>@id</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
384
+ <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
385
+ <span class='ivar'>@engine_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span>
386
+ <span class='ivar'>@version_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span>
387
+ <span class='kw'>end</span></pre>
388
+ </td>
389
+ </tr>
390
+ </table>
391
+ </div>
392
+
393
+ </div>
394
+
395
+ <div id="instance_attr_details" class="attr_details">
396
+ <h2>Instance Attribute Details</h2>
397
+
398
+
399
+ <span id=""></span>
400
+ <div class="method_details first">
401
+ <h3 class="signature first" id="engine_matcher-instance_method">
402
+
403
+ - (<tt>Regexp|Proc</tt>) <strong>engine_matcher</strong> <span class="extras">(readonly)</span>
404
+
405
+
406
+
407
+
408
+
409
+ </h3><div class="docstring">
410
+ <div class="discussion">
411
+ <p>Returns The pattern or the block to recognize the engine.</p>
412
+
413
+
414
+ </div>
415
+ </div>
416
+ <div class="tags">
417
+
418
+ <p class="tag_title">Returns:</p>
419
+ <ul class="return">
420
+
421
+ <li>
422
+
423
+
424
+ <span class='type'>(<tt>Regexp|Proc</tt>)</span>
425
+
426
+
427
+
428
+ &mdash;
429
+ <div class='inline'><p>The pattern or the block to recognize the engine.</p>
430
+ </div>
431
+
432
+ </li>
433
+
434
+ </ul>
435
+
436
+ </div><table class="source_code">
437
+ <tr>
438
+ <td>
439
+ <pre class="lines">
440
+
441
+
442
+ 16
443
+ 17
444
+ 18
445
+ 19
446
+ 20
447
+ 21
448
+ 22
449
+ 23
450
+ 24
451
+ 25
452
+ 26
453
+ 27
454
+ 28
455
+ 29
456
+ 30
457
+ 31
458
+ 32
459
+ 33
460
+ 34
461
+ 35
462
+ 36
463
+ 37
464
+ 38
465
+ 39
466
+ 40
467
+ 41
468
+ 42
469
+ 43
470
+ 44
471
+ 45
472
+ 46
473
+ 47
474
+ 48
475
+ 49
476
+ 50
477
+ 51
478
+ 52
479
+ 53
480
+ 54
481
+ 55
482
+ 56
483
+ 57
484
+ 58
485
+ 59
486
+ 60
487
+ 61
488
+ 62
489
+ 63
490
+ 64
491
+ 65
492
+ 66
493
+ 67
494
+ 68
495
+ 69
496
+ 70
497
+ 71
498
+ 72
499
+ 73
500
+ 74
501
+ 75
502
+ 76
503
+ 77
504
+ 78</pre>
505
+ </td>
506
+ <td>
507
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/browser.rb', line 16</span>
508
+
509
+ <span class='kw'>class</span> <span class='const'>Browser</span> <span class='op'>&lt;</span> <span class='const'>Base</span>
510
+ <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:name</span><span class='comma'>,</span> <span class='symbol'>:engine_matcher</span><span class='comma'>,</span> <span class='symbol'>:version_matcher</span>
511
+
512
+ <span class='comment'># Creates a new definition.
513
+ </span> <span class='comment'>#
514
+ </span> <span class='comment'># @param id [Symbol] The platform id.
515
+ </span> <span class='comment'># @param name [String] The platform name.
516
+ </span> <span class='comment'># @param engine_matcher [Regexp|Proc] The pattern or the block to recognize the engine.
517
+ </span> <span class='comment'># @param version_matcher [Regexp|Proc] The pattern or the block to recognize the version.
518
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
519
+ <span class='ivar'>@id</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
520
+ <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
521
+ <span class='ivar'>@engine_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span>
522
+ <span class='ivar'>@version_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span>
523
+ <span class='kw'>end</span>
524
+
525
+ <span class='comment'># Matches against an header.
526
+ </span> <span class='comment'>#
527
+ </span> <span class='comment'># @param header [String] The header to match
528
+ </span> <span class='comment'># @return [Array|NilClass] An array with the engine and the version if match succeeded, `false` or `nil` otherwise.
529
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span>
530
+ <span class='comment'># First of all, match the engine
531
+ </span> <span class='id identifier rubyid_engine'>engine</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='ivar'>@id</span> <span class='op'>:</span> <span class='kw'>nil</span>
532
+
533
+ <span class='kw'>if</span> <span class='id identifier rubyid_engine'>engine</span>
534
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@version_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span><span class='rparen'>)</span>
535
+ <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
536
+ <span class='lbracket'>[</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span><span class='rbracket'>]</span>
537
+ <span class='kw'>else</span>
538
+ <span class='kw'>nil</span>
539
+ <span class='kw'>end</span>
540
+ <span class='kw'>end</span>
541
+
542
+ <span class='id identifier rubyid_private'>private</span>
543
+
544
+ <span class='comment'># :nodoc:
545
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
546
+ <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Regexp</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='symbol'>:match</span> <span class='op'>:</span> <span class='symbol'>:call</span>
547
+ <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
548
+ <span class='kw'>end</span>
549
+
550
+ <span class='comment'># :nodoc:
551
+ </span> <span class='comment'># @private
552
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
553
+ <span class='comment'># Adjust version
554
+ </span> <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
555
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_to_a'>to_a</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>MatchData</span><span class='rparen'>)</span>
556
+ <span class='const'>Versionomy</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
557
+ <span class='kw'>rescue</span>
558
+ <span class='id identifier rubyid_version'>version</span>
559
+ <span class='kw'>end</span>
560
+
561
+ <span class='comment'># :nodoc:
562
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
563
+ <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='rparen'>)</span> <span class='lbrace'>{</span>
564
+ <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Definitions</span><span class='period'>.</span><span class='id identifier rubyid_platforms'>platforms</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_platform'>platform</span><span class='comma'>,</span> <span class='id identifier rubyid_definition'>definition</span><span class='op'>|</span>
565
+ <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_definition'>definition</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
566
+ <span class='kw'>end</span>
567
+
568
+ <span class='kw'>nil</span>
569
+ <span class='rbrace'>}</span>
570
+ <span class='kw'>end</span>
571
+ <span class='kw'>end</span></pre>
572
+ </td>
573
+ </tr>
574
+ </table>
575
+ </div>
576
+
577
+
578
+ <span id=""></span>
579
+ <div class="method_details ">
580
+ <h3 class="signature " id="name-instance_method">
581
+
582
+ - (<tt>String</tt>) <strong>name</strong> <span class="extras">(readonly)</span>
583
+
584
+
585
+
586
+
587
+
588
+ </h3><div class="docstring">
589
+ <div class="discussion">
590
+ <p>Returns The platform name.</p>
591
+
592
+
593
+ </div>
594
+ </div>
595
+ <div class="tags">
596
+
597
+ <p class="tag_title">Returns:</p>
598
+ <ul class="return">
599
+
600
+ <li>
601
+
602
+
603
+ <span class='type'>(<tt>String</tt>)</span>
604
+
605
+
606
+
607
+ &mdash;
608
+ <div class='inline'><p>The platform name.</p>
609
+ </div>
610
+
611
+ </li>
612
+
613
+ </ul>
614
+
615
+ </div><table class="source_code">
616
+ <tr>
617
+ <td>
618
+ <pre class="lines">
619
+
620
+
621
+ 16
622
+ 17
623
+ 18
624
+ 19
625
+ 20
626
+ 21
627
+ 22
628
+ 23
629
+ 24
630
+ 25
631
+ 26
632
+ 27
633
+ 28
634
+ 29
635
+ 30
636
+ 31
637
+ 32
638
+ 33
639
+ 34
640
+ 35
641
+ 36
642
+ 37
643
+ 38
644
+ 39
645
+ 40
646
+ 41
647
+ 42
648
+ 43
649
+ 44
650
+ 45
651
+ 46
652
+ 47
653
+ 48
654
+ 49
655
+ 50
656
+ 51
657
+ 52
658
+ 53
659
+ 54
660
+ 55
661
+ 56
662
+ 57
663
+ 58
664
+ 59
665
+ 60
666
+ 61
667
+ 62
668
+ 63
669
+ 64
670
+ 65
671
+ 66
672
+ 67
673
+ 68
674
+ 69
675
+ 70
676
+ 71
677
+ 72
678
+ 73
679
+ 74
680
+ 75
681
+ 76
682
+ 77
683
+ 78</pre>
684
+ </td>
685
+ <td>
686
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/browser.rb', line 16</span>
687
+
688
+ <span class='kw'>class</span> <span class='const'>Browser</span> <span class='op'>&lt;</span> <span class='const'>Base</span>
689
+ <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:name</span><span class='comma'>,</span> <span class='symbol'>:engine_matcher</span><span class='comma'>,</span> <span class='symbol'>:version_matcher</span>
690
+
691
+ <span class='comment'># Creates a new definition.
692
+ </span> <span class='comment'>#
693
+ </span> <span class='comment'># @param id [Symbol] The platform id.
694
+ </span> <span class='comment'># @param name [String] The platform name.
695
+ </span> <span class='comment'># @param engine_matcher [Regexp|Proc] The pattern or the block to recognize the engine.
696
+ </span> <span class='comment'># @param version_matcher [Regexp|Proc] The pattern or the block to recognize the version.
697
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
698
+ <span class='ivar'>@id</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
699
+ <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
700
+ <span class='ivar'>@engine_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span>
701
+ <span class='ivar'>@version_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span>
702
+ <span class='kw'>end</span>
703
+
704
+ <span class='comment'># Matches against an header.
705
+ </span> <span class='comment'>#
706
+ </span> <span class='comment'># @param header [String] The header to match
707
+ </span> <span class='comment'># @return [Array|NilClass] An array with the engine and the version if match succeeded, `false` or `nil` otherwise.
708
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span>
709
+ <span class='comment'># First of all, match the engine
710
+ </span> <span class='id identifier rubyid_engine'>engine</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='ivar'>@id</span> <span class='op'>:</span> <span class='kw'>nil</span>
711
+
712
+ <span class='kw'>if</span> <span class='id identifier rubyid_engine'>engine</span>
713
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@version_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span><span class='rparen'>)</span>
714
+ <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
715
+ <span class='lbracket'>[</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span><span class='rbracket'>]</span>
716
+ <span class='kw'>else</span>
717
+ <span class='kw'>nil</span>
718
+ <span class='kw'>end</span>
719
+ <span class='kw'>end</span>
720
+
721
+ <span class='id identifier rubyid_private'>private</span>
722
+
723
+ <span class='comment'># :nodoc:
724
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
725
+ <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Regexp</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='symbol'>:match</span> <span class='op'>:</span> <span class='symbol'>:call</span>
726
+ <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
727
+ <span class='kw'>end</span>
728
+
729
+ <span class='comment'># :nodoc:
730
+ </span> <span class='comment'># @private
731
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
732
+ <span class='comment'># Adjust version
733
+ </span> <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
734
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_to_a'>to_a</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>MatchData</span><span class='rparen'>)</span>
735
+ <span class='const'>Versionomy</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
736
+ <span class='kw'>rescue</span>
737
+ <span class='id identifier rubyid_version'>version</span>
738
+ <span class='kw'>end</span>
739
+
740
+ <span class='comment'># :nodoc:
741
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
742
+ <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='rparen'>)</span> <span class='lbrace'>{</span>
743
+ <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Definitions</span><span class='period'>.</span><span class='id identifier rubyid_platforms'>platforms</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_platform'>platform</span><span class='comma'>,</span> <span class='id identifier rubyid_definition'>definition</span><span class='op'>|</span>
744
+ <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_definition'>definition</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
745
+ <span class='kw'>end</span>
746
+
747
+ <span class='kw'>nil</span>
748
+ <span class='rbrace'>}</span>
749
+ <span class='kw'>end</span>
750
+ <span class='kw'>end</span></pre>
751
+ </td>
752
+ </tr>
753
+ </table>
754
+ </div>
755
+
756
+
757
+ <span id=""></span>
758
+ <div class="method_details ">
759
+ <h3 class="signature " id="version_matcher-instance_method">
760
+
761
+ - (<tt>Regexp|Proc</tt>) <strong>version_matcher</strong> <span class="extras">(readonly)</span>
762
+
763
+
764
+
765
+
766
+
767
+ </h3><div class="docstring">
768
+ <div class="discussion">
769
+ <p>Returns The pattern or the block to recognize the version.</p>
770
+
771
+
772
+ </div>
773
+ </div>
774
+ <div class="tags">
775
+
776
+ <p class="tag_title">Returns:</p>
777
+ <ul class="return">
778
+
779
+ <li>
780
+
781
+
782
+ <span class='type'>(<tt>Regexp|Proc</tt>)</span>
783
+
784
+
785
+
786
+ &mdash;
787
+ <div class='inline'><p>The pattern or the block to recognize the version.</p>
788
+ </div>
789
+
790
+ </li>
791
+
792
+ </ul>
793
+
794
+ </div><table class="source_code">
795
+ <tr>
796
+ <td>
797
+ <pre class="lines">
798
+
799
+
800
+ 16
801
+ 17
802
+ 18
803
+ 19
804
+ 20
805
+ 21
806
+ 22
807
+ 23
808
+ 24
809
+ 25
810
+ 26
811
+ 27
812
+ 28
813
+ 29
814
+ 30
815
+ 31
816
+ 32
817
+ 33
818
+ 34
819
+ 35
820
+ 36
821
+ 37
822
+ 38
823
+ 39
824
+ 40
825
+ 41
826
+ 42
827
+ 43
828
+ 44
829
+ 45
830
+ 46
831
+ 47
832
+ 48
833
+ 49
834
+ 50
835
+ 51
836
+ 52
837
+ 53
838
+ 54
839
+ 55
840
+ 56
841
+ 57
842
+ 58
843
+ 59
844
+ 60
845
+ 61
846
+ 62
847
+ 63
848
+ 64
849
+ 65
850
+ 66
851
+ 67
852
+ 68
853
+ 69
854
+ 70
855
+ 71
856
+ 72
857
+ 73
858
+ 74
859
+ 75
860
+ 76
861
+ 77
862
+ 78</pre>
863
+ </td>
864
+ <td>
865
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/browser.rb', line 16</span>
866
+
867
+ <span class='kw'>class</span> <span class='const'>Browser</span> <span class='op'>&lt;</span> <span class='const'>Base</span>
868
+ <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:name</span><span class='comma'>,</span> <span class='symbol'>:engine_matcher</span><span class='comma'>,</span> <span class='symbol'>:version_matcher</span>
869
+
870
+ <span class='comment'># Creates a new definition.
871
+ </span> <span class='comment'>#
872
+ </span> <span class='comment'># @param id [Symbol] The platform id.
873
+ </span> <span class='comment'># @param name [String] The platform name.
874
+ </span> <span class='comment'># @param engine_matcher [Regexp|Proc] The pattern or the block to recognize the engine.
875
+ </span> <span class='comment'># @param version_matcher [Regexp|Proc] The pattern or the block to recognize the version.
876
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_id'>id</span><span class='comma'>,</span> <span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid__'>_</span><span class='rparen'>)</span>
877
+ <span class='ivar'>@id</span> <span class='op'>=</span> <span class='id identifier rubyid_id'>id</span>
878
+ <span class='ivar'>@name</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span>
879
+ <span class='ivar'>@engine_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_engine_matcher'>engine_matcher</span>
880
+ <span class='ivar'>@version_matcher</span> <span class='op'>=</span> <span class='id identifier rubyid_version_matcher'>version_matcher</span>
881
+ <span class='kw'>end</span>
882
+
883
+ <span class='comment'># Matches against an header.
884
+ </span> <span class='comment'>#
885
+ </span> <span class='comment'># @param header [String] The header to match
886
+ </span> <span class='comment'># @return [Array|NilClass] An array with the engine and the version if match succeeded, `false` or `nil` otherwise.
887
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span>
888
+ <span class='comment'># First of all, match the engine
889
+ </span> <span class='id identifier rubyid_engine'>engine</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='ivar'>@id</span> <span class='op'>:</span> <span class='kw'>nil</span>
890
+
891
+ <span class='kw'>if</span> <span class='id identifier rubyid_engine'>engine</span>
892
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@version_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span><span class='rparen'>)</span>
893
+ <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
894
+ <span class='lbracket'>[</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span><span class='rbracket'>]</span>
895
+ <span class='kw'>else</span>
896
+ <span class='kw'>nil</span>
897
+ <span class='kw'>end</span>
898
+ <span class='kw'>end</span>
899
+
900
+ <span class='id identifier rubyid_private'>private</span>
901
+
902
+ <span class='comment'># :nodoc:
903
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
904
+ <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Regexp</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='symbol'>:match</span> <span class='op'>:</span> <span class='symbol'>:call</span>
905
+ <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_subject'>subject</span><span class='rparen'>)</span>
906
+ <span class='kw'>end</span>
907
+
908
+ <span class='comment'># :nodoc:
909
+ </span> <span class='comment'># @private
910
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
911
+ <span class='comment'># Adjust version
912
+ </span> <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
913
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_to_a'>to_a</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='kw'>if</span> <span class='id identifier rubyid_version'>version</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='op'>::</span><span class='const'>MatchData</span><span class='rparen'>)</span>
914
+ <span class='const'>Versionomy</span><span class='period'>.</span><span class='id identifier rubyid_parse'>parse</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
915
+ <span class='kw'>rescue</span>
916
+ <span class='id identifier rubyid_version'>version</span>
917
+ <span class='kw'>end</span>
918
+
919
+ <span class='comment'># :nodoc:
920
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
921
+ <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='rparen'>)</span> <span class='lbrace'>{</span>
922
+ <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Definitions</span><span class='period'>.</span><span class='id identifier rubyid_platforms'>platforms</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_platform'>platform</span><span class='comma'>,</span> <span class='id identifier rubyid_definition'>definition</span><span class='op'>|</span>
923
+ <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:result</span><span class='comma'>,</span> <span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_definition'>definition</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
924
+ <span class='kw'>end</span>
925
+
926
+ <span class='kw'>nil</span>
927
+ <span class='rbrace'>}</span>
928
+ <span class='kw'>end</span>
929
+ <span class='kw'>end</span></pre>
930
+ </td>
931
+ </tr>
932
+ </table>
933
+ </div>
934
+
935
+ </div>
936
+
937
+
938
+ <div id="instance_method_details" class="method_details_list">
939
+ <h2>Instance Method Details</h2>
940
+
941
+
942
+ <div class="method_details first">
943
+ <h3 class="signature first" id="match-instance_method">
944
+
945
+ - (<tt>Array|NilClass</tt>) <strong>match</strong>(header)
946
+
947
+
948
+
949
+
950
+
951
+ </h3><div class="docstring">
952
+ <div class="discussion">
953
+ <p>Matches against an header.</p>
954
+
955
+
956
+ </div>
957
+ </div>
958
+ <div class="tags">
959
+ <p class="tag_title">Parameters:</p>
960
+ <ul class="param">
961
+
962
+ <li>
963
+
964
+ <span class='name'>header</span>
965
+
966
+
967
+ <span class='type'>(<tt>String</tt>)</span>
968
+
969
+
970
+
971
+ &mdash;
972
+ <div class='inline'><p>The header to match</p>
973
+ </div>
974
+
975
+ </li>
976
+
977
+ </ul>
978
+
979
+ <p class="tag_title">Returns:</p>
980
+ <ul class="return">
981
+
982
+ <li>
983
+
984
+
985
+ <span class='type'>(<tt>Array|NilClass</tt>)</span>
986
+
987
+
988
+
989
+ &mdash;
990
+ <div class='inline'><p>An array with the engine and the version if match succeeded, <code>false</code> or <code>nil</code> otherwise.</p>
991
+ </div>
992
+
993
+ </li>
994
+
995
+ </ul>
996
+
997
+ </div><table class="source_code">
998
+ <tr>
999
+ <td>
1000
+ <pre class="lines">
1001
+
1002
+
1003
+ 36
1004
+ 37
1005
+ 38
1006
+ 39
1007
+ 40
1008
+ 41
1009
+ 42
1010
+ 43
1011
+ 44
1012
+ 45
1013
+ 46
1014
+ 47</pre>
1015
+ </td>
1016
+ <td>
1017
+ <pre class="code"><span class="info file"># File 'lib/brauser/definitions/browser.rb', line 36</span>
1018
+
1019
+ <span class='kw'>def</span> <span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span>
1020
+ <span class='comment'># First of all, match the engine
1021
+ </span> <span class='id identifier rubyid_engine'>engine</span> <span class='op'>=</span> <span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@engine_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='ivar'>@id</span> <span class='op'>:</span> <span class='kw'>nil</span>
1022
+
1023
+ <span class='kw'>if</span> <span class='id identifier rubyid_engine'>engine</span>
1024
+ <span class='id identifier rubyid_version'>version</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_version'>extract_version</span><span class='lparen'>(</span><span class='id identifier rubyid_perform_match'>perform_match</span><span class='lparen'>(</span><span class='ivar'>@version_matcher</span><span class='comma'>,</span> <span class='id identifier rubyid_header'>header</span><span class='rparen'>)</span><span class='rparen'>)</span>
1025
+ <span class='id identifier rubyid_platform'>platform</span> <span class='op'>=</span> <span class='id identifier rubyid_extract_platform'>extract_platform</span><span class='lparen'>(</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span>
1026
+ <span class='lbracket'>[</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_engine'>engine</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Value</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_platform'>platform</span><span class='rparen'>)</span><span class='rbracket'>]</span>
1027
+ <span class='kw'>else</span>
1028
+ <span class='kw'>nil</span>
1029
+ <span class='kw'>end</span>
1030
+ <span class='kw'>end</span></pre>
1031
+ </td>
1032
+ </tr>
1033
+ </table>
1034
+ </div>
1035
+
1036
+ </div>
1037
+
1038
+ </div>
1039
+
1040
+ <div id="footer">
1041
+ Generated on Mon Sep 29 16:43:32 2014 by
1042
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1043
+ 0.8.7.4 (ruby-2.1.3).
1044
+ </div>
1045
+
1046
+ </body>
1047
+ </html>