brauser 3.2.6 → 3.3.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +29 -0
  4. data/.travis-gemfile +1 -1
  5. data/.travis.yml +2 -1
  6. data/Gemfile +3 -3
  7. data/README.md +6 -6
  8. data/brauser.gemspec +1 -1
  9. data/doc/Brauser.html +7 -7
  10. data/doc/Brauser/Browseable.html +127 -0
  11. data/doc/Brauser/{BrowserMethods → Browseable}/Attributes.html +34 -30
  12. data/doc/Brauser/Browseable/DefaultDefinitions.html +387 -0
  13. data/doc/Brauser/{BrowserMethods → Browseable}/General.html +9 -9
  14. data/doc/Brauser/{BrowserMethods → Browseable}/General/ClassMethods.html +33 -33
  15. data/doc/Brauser/{BrowserMethods → Browseable}/Parsing.html +23 -23
  16. data/doc/Brauser/{BrowserMethods → Browseable}/PartialQuerying.html +59 -53
  17. data/doc/Brauser/{BrowserMethods → Browseable}/Querying.html +43 -37
  18. data/doc/Brauser/{BrowserMethods → Browseable}/Register.html +9 -9
  19. data/doc/Brauser/Browseable/Register/ClassMethods.html +516 -0
  20. data/doc/Brauser/Browser.html +787 -1362
  21. data/doc/Brauser/Definition.html +230 -40
  22. data/doc/Brauser/Hooks.html +4 -4
  23. data/doc/Brauser/Hooks/RubyOnRails.html +4 -4
  24. data/doc/Brauser/Query.html +53 -53
  25. data/doc/Brauser/{BrowserMethods.html → Queryable.html} +13 -11
  26. data/doc/Brauser/{Chainers.html → Queryable/Chainers.html} +51 -45
  27. data/doc/Brauser/{Queries.html → Queryable/Queries.html} +47 -41
  28. data/doc/Brauser/Version.html +6 -6
  29. data/doc/_index.html +41 -27
  30. data/doc/class_list.html +1 -1
  31. data/doc/css/style.css +1 -0
  32. data/doc/file.README.html +10 -10
  33. data/doc/frames.html +1 -1
  34. data/doc/index.html +10 -10
  35. data/doc/method_list.html +68 -74
  36. data/doc/top-level-namespace.html +4 -4
  37. data/lib/brauser.rb +14 -3
  38. data/lib/brauser/browseable/attributes.rb +95 -0
  39. data/lib/brauser/browseable/general.rb +104 -0
  40. data/lib/brauser/browseable/parsing.rb +127 -0
  41. data/lib/brauser/browseable/partial_querying.rb +116 -0
  42. data/lib/brauser/browseable/querying.rb +63 -0
  43. data/lib/brauser/browseable/register.rb +73 -0
  44. data/lib/brauser/browser.rb +34 -741
  45. data/lib/brauser/definition.rb +30 -5
  46. data/lib/brauser/definitions/browsers.rb +66 -0
  47. data/lib/brauser/definitions/languages.rb +130 -0
  48. data/lib/brauser/definitions/platforms.rb +30 -0
  49. data/lib/brauser/query.rb +4 -99
  50. data/lib/brauser/queryable/chainers.rb +56 -0
  51. data/lib/brauser/queryable/queries.rb +60 -0
  52. data/lib/brauser/version.rb +3 -2
  53. data/spec/brauser/browser_spec.rb +26 -29
  54. data/spec/brauser/query_spec.rb +15 -13
  55. metadata +30 -17
  56. data/.bundle/install.log +0 -106
  57. data/doc/Brauser/BrowserMethods/Register/ClassMethods.html +0 -770
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: Brauser::Browser
8
8
 
9
- &mdash; Documentation by YARD 0.8.7.3
9
+ &mdash; Documentation by YARD 0.8.7.4
10
10
 
11
11
  </title>
12
12
 
@@ -17,7 +17,7 @@
17
17
  <script type="text/javascript" charset="utf-8">
18
18
  hasFrames = window.top.frames.main ? true : false;
19
19
  relpath = '../';
20
- framesUrl = "../frames.html#!" + escape(window.location.href);
20
+ framesUrl = "../frames.html#!Brauser/Browser.html";
21
21
  </script>
22
22
 
23
23
 
@@ -91,7 +91,7 @@
91
91
 
92
92
 
93
93
  <dt class="r2">Includes:</dt>
94
- <dd class="r2"><span class='object_link'><a href="BrowserMethods/Attributes.html" title="Brauser::BrowserMethods::Attributes (module)">Brauser::BrowserMethods::Attributes</a></span>, <span class='object_link'><a href="BrowserMethods/General.html" title="Brauser::BrowserMethods::General (module)">Brauser::BrowserMethods::General</a></span>, <span class='object_link'><a href="BrowserMethods/Parsing.html" title="Brauser::BrowserMethods::Parsing (module)">Brauser::BrowserMethods::Parsing</a></span>, <span class='object_link'><a href="BrowserMethods/PartialQuerying.html" title="Brauser::BrowserMethods::PartialQuerying (module)">Brauser::BrowserMethods::PartialQuerying</a></span>, <span class='object_link'><a href="BrowserMethods/Querying.html" title="Brauser::BrowserMethods::Querying (module)">Brauser::BrowserMethods::Querying</a></span>, <span class='object_link'><a href="BrowserMethods/Register.html" title="Brauser::BrowserMethods::Register (module)">Brauser::BrowserMethods::Register</a></span></dd>
94
+ <dd class="r2"><span class='object_link'><a href="Browseable/Attributes.html" title="Brauser::Browseable::Attributes (module)">Brauser::Browseable::Attributes</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html" title="Brauser::Browseable::DefaultDefinitions (module)">Brauser::Browseable::DefaultDefinitions</a></span>, <span class='object_link'><a href="Browseable/General.html" title="Brauser::Browseable::General (module)">Brauser::Browseable::General</a></span>, <span class='object_link'><a href="Browseable/Parsing.html" title="Brauser::Browseable::Parsing (module)">Brauser::Browseable::Parsing</a></span>, <span class='object_link'><a href="Browseable/PartialQuerying.html" title="Brauser::Browseable::PartialQuerying (module)">Brauser::Browseable::PartialQuerying</a></span>, <span class='object_link'><a href="Browseable/Querying.html" title="Brauser::Browseable::Querying (module)">Brauser::Browseable::Querying</a></span>, <span class='object_link'><a href="Browseable/Register.html" title="Brauser::Browseable::Register (module)">Brauser::Browseable::Register</a></span></dd>
95
95
 
96
96
 
97
97
 
@@ -114,7 +114,16 @@
114
114
 
115
115
 
116
116
  </div>
117
+ <h2>Constant Summary</h2>
118
+
119
+
120
+
117
121
 
122
+ <h2>Constant Summary</h2>
123
+
124
+ <h3 class="inherited">Constants included
125
+ from <span class='object_link'><a href="Browseable/DefaultDefinitions.html" title="Brauser::Browseable::DefaultDefinitions (module)">Brauser::Browseable::DefaultDefinitions</a></span></h3>
126
+ <p class="inherited"><span class='object_link'><a href="Browseable/DefaultDefinitions.html#LANGUAGES-constant" title="Brauser::Browseable::DefaultDefinitions::LANGUAGES (constant)">Brauser::Browseable::DefaultDefinitions::LANGUAGES</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html#MAJOR_DESKTOP_BROWSERS-constant" title="Brauser::Browseable::DefaultDefinitions::MAJOR_DESKTOP_BROWSERS (constant)">Brauser::Browseable::DefaultDefinitions::MAJOR_DESKTOP_BROWSERS</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html#MINOR_DESKTOP_BROWSERS-constant" title="Brauser::Browseable::DefaultDefinitions::MINOR_DESKTOP_BROWSERS (constant)">Brauser::Browseable::DefaultDefinitions::MINOR_DESKTOP_BROWSERS</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html#MOBILE_BROWSERS-constant" title="Brauser::Browseable::DefaultDefinitions::MOBILE_BROWSERS (constant)">Brauser::Browseable::DefaultDefinitions::MOBILE_BROWSERS</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html#MSIE_BROWSERS-constant" title="Brauser::Browseable::DefaultDefinitions::MSIE_BROWSERS (constant)">Brauser::Browseable::DefaultDefinitions::MSIE_BROWSERS</a></span>, <span class='object_link'><a href="Browseable/DefaultDefinitions.html#PLATFORMS-constant" title="Brauser::Browseable::DefaultDefinitions::PLATFORMS (constant)">Brauser::Browseable::DefaultDefinitions::PLATFORMS</a></span></p>
118
127
 
119
128
 
120
129
  <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
@@ -153,8 +162,6 @@
153
162
 
154
163
 
155
164
 
156
- (also: #ua)
157
-
158
165
  </span>
159
166
 
160
167
 
@@ -255,7 +262,7 @@
255
262
  <li class="public ">
256
263
  <span class="summary_signature">
257
264
 
258
- <a href="#version-instance_method" title="#version (instance method)">- (String) <strong>version</strong> </a>
265
+ <a href="#version-instance_method" title="#version (instance method)">- (String|Query) <strong>version</strong>(versions = nil) </a>
259
266
 
260
267
 
261
268
 
@@ -272,7 +279,7 @@
272
279
 
273
280
 
274
281
 
275
- <span class="summary_desc"><div class='inline'><p>The current browser version.</p>
282
+ <span class="summary_desc"><div class='inline'><p>Get the current browser version (if called without arguments) or checks if the browser is a specific version.</p>
276
283
  </div></span>
277
284
 
278
285
  </li>
@@ -339,32 +346,20 @@
339
346
  </li>
340
347
 
341
348
 
342
- <li class="public ">
343
- <span class="summary_signature">
344
-
345
- <a href="#to_s-instance_method" title="#to_s (instance method)">- (String) <strong>to_s</strong> </a>
346
-
347
-
348
-
349
- </span>
350
-
349
+ </ul>
351
350
 
351
+
352
+
352
353
 
353
354
 
354
355
 
355
356
 
356
357
 
357
-
358
358
 
359
- <span class="summary_desc"><div class='inline'><p>Returns the current browser as a string.</p>
360
- </div></span>
361
359
 
362
- </li>
363
-
364
-
365
- </ul>
366
360
 
367
-
361
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Browseable/Querying.html" title="Brauser::Browseable::Querying (module)">Brauser::Browseable::Querying</a></span></h3>
362
+ <p class="inherited"><span class='object_link'><a href="Browseable/Querying.html#accepts%3F-instance_method" title="Brauser::Browseable::Querying#accepts? (method)">#accepts?</a></span>, <span class='object_link'><a href="Browseable/Querying.html#is%3F-instance_method" title="Brauser::Browseable::Querying#is? (method)">#is?</a></span>, <span class='object_link'><a href="Browseable/Querying.html#on%3F-instance_method" title="Brauser::Browseable::Querying#on? (method)">#on?</a></span>, <span class='object_link'><a href="Browseable/Querying.html#supported%3F-instance_method" title="Brauser::Browseable::Querying#supported? (method)">#supported?</a></span>, <span class='object_link'><a href="Browseable/Querying.html#version%3F-instance_method" title="Brauser::Browseable::Querying#version? (method)">#version?</a></span></p>
368
363
 
369
364
 
370
365
 
@@ -374,8 +369,8 @@
374
369
 
375
370
 
376
371
 
377
- <h3 class="inherited">Methods included from <span class='object_link'><a href="BrowserMethods/Querying.html" title="Brauser::BrowserMethods::Querying (module)">Brauser::BrowserMethods::Querying</a></span></h3>
378
- <p class="inherited"><span class='object_link'><a href="BrowserMethods/Querying.html#accepts%3F-instance_method" title="Brauser::BrowserMethods::Querying#accepts? (method)">#accepts?</a></span>, <span class='object_link'><a href="BrowserMethods/Querying.html#is%3F-instance_method" title="Brauser::BrowserMethods::Querying#is? (method)">#is?</a></span>, <span class='object_link'><a href="BrowserMethods/Querying.html#on%3F-instance_method" title="Brauser::BrowserMethods::Querying#on? (method)">#on?</a></span>, <span class='object_link'><a href="BrowserMethods/Querying.html#supported%3F-instance_method" title="Brauser::BrowserMethods::Querying#supported? (method)">#supported?</a></span>, <span class='object_link'><a href="BrowserMethods/Querying.html#v%3F-instance_method" title="Brauser::BrowserMethods::Querying#v? (method)">#v?</a></span></p>
372
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Browseable/PartialQuerying.html" title="Brauser::Browseable::PartialQuerying (module)">Brauser::Browseable::PartialQuerying</a></span></h3>
373
+ <p class="inherited"><span class='object_link'><a href="Browseable/PartialQuerying.html#accepts-instance_method" title="Brauser::Browseable::PartialQuerying#accepts (method)">#accepts</a></span>, <span class='object_link'><a href="Browseable/PartialQuerying.html#is-instance_method" title="Brauser::Browseable::PartialQuerying#is (method)">#is</a></span>, <span class='object_link'><a href="Browseable/PartialQuerying.html#on-instance_method" title="Brauser::Browseable::PartialQuerying#on (method)">#on</a></span>, <span class='object_link'><a href="Browseable/PartialQuerying.html#version_equals_to-instance_method" title="Brauser::Browseable::PartialQuerying#version_equals_to (method)">#version_equals_to</a></span></p>
379
374
 
380
375
 
381
376
 
@@ -385,8 +380,8 @@
385
380
 
386
381
 
387
382
 
388
- <h3 class="inherited">Methods included from <span class='object_link'><a href="BrowserMethods/PartialQuerying.html" title="Brauser::BrowserMethods::PartialQuerying (module)">Brauser::BrowserMethods::PartialQuerying</a></span></h3>
389
- <p class="inherited"><span class='object_link'><a href="BrowserMethods/PartialQuerying.html#accepts-instance_method" title="Brauser::BrowserMethods::PartialQuerying#accepts (method)">#accepts</a></span>, <span class='object_link'><a href="BrowserMethods/PartialQuerying.html#is-instance_method" title="Brauser::BrowserMethods::PartialQuerying#is (method)">#is</a></span>, <span class='object_link'><a href="BrowserMethods/PartialQuerying.html#on-instance_method" title="Brauser::BrowserMethods::PartialQuerying#on (method)">#on</a></span>, <span class='object_link'><a href="BrowserMethods/PartialQuerying.html#v-instance_method" title="Brauser::BrowserMethods::PartialQuerying#v (method)">#v</a></span></p>
383
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Browseable/Parsing.html" title="Brauser::Browseable::Parsing (module)">Brauser::Browseable::Parsing</a></span></h3>
384
+ <p class="inherited"><span class='object_link'><a href="Browseable/Parsing.html#parse_accept_language-instance_method" title="Brauser::Browseable::Parsing#parse_accept_language (method)">#parse_accept_language</a></span>, <span class='object_link'><a href="Browseable/Parsing.html#parse_agent-instance_method" title="Brauser::Browseable::Parsing#parse_agent (method)">#parse_agent</a></span></p>
390
385
 
391
386
 
392
387
 
@@ -396,11 +391,6 @@
396
391
 
397
392
 
398
393
 
399
- <h3 class="inherited">Methods included from <span class='object_link'><a href="BrowserMethods/Parsing.html" title="Brauser::BrowserMethods::Parsing (module)">Brauser::BrowserMethods::Parsing</a></span></h3>
400
- <p class="inherited"><span class='object_link'><a href="BrowserMethods/Parsing.html#parse_accept_language-instance_method" title="Brauser::BrowserMethods::Parsing#parse_accept_language (method)">#parse_accept_language</a></span>, <span class='object_link'><a href="BrowserMethods/Parsing.html#parse_agent-instance_method" title="Brauser::BrowserMethods::Parsing#parse_agent (method)">#parse_agent</a></span></p>
401
-
402
-
403
-
404
394
 
405
395
 
406
396
 
@@ -414,8 +404,8 @@
414
404
 
415
405
 
416
406
 
417
- <h3 class="inherited">Methods included from <span class='object_link'><a href="BrowserMethods/Attributes.html" title="Brauser::BrowserMethods::Attributes (module)">Brauser::BrowserMethods::Attributes</a></span></h3>
418
- <p class="inherited"><span class='object_link'><a href="BrowserMethods/Attributes.html#classes-instance_method" title="Brauser::BrowserMethods::Attributes#classes (method)">#classes</a></span>, <span class='object_link'><a href="BrowserMethods/Attributes.html#platform_name-instance_method" title="Brauser::BrowserMethods::Attributes#platform_name (method)">#platform_name</a></span>, <span class='object_link'><a href="BrowserMethods/Attributes.html#readable_name-instance_method" title="Brauser::BrowserMethods::Attributes#readable_name (method)">#readable_name</a></span></p>
407
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="Browseable/Attributes.html" title="Brauser::Browseable::Attributes (module)">Brauser::Browseable::Attributes</a></span></h3>
408
+ <p class="inherited"><span class='object_link'><a href="Browseable/Attributes.html#classes-instance_method" title="Brauser::Browseable::Attributes#classes (method)">#classes</a></span>, <span class='object_link'><a href="Browseable/Attributes.html#platform_name-instance_method" title="Brauser::Browseable::Attributes#platform_name (method)">#platform_name</a></span>, <span class='object_link'><a href="Browseable/Attributes.html#readable_name-instance_method" title="Brauser::Browseable::Attributes#readable_name (method)">#readable_name</a></span></p>
419
409
 
420
410
 
421
411
 
@@ -489,20 +479,20 @@
489
479
  <pre class="lines">
490
480
 
491
481
 
492
- 710
493
- 711
494
- 712
495
- 713
496
- 714
497
- 715
498
- 716
499
- 717
500
- 718
501
- 719
502
- 720</pre>
482
+ 46
483
+ 47
484
+ 48
485
+ 49
486
+ 50
487
+ 51
488
+ 52
489
+ 53
490
+ 54
491
+ 55
492
+ 56</pre>
503
493
  </td>
504
494
  <td>
505
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 710</span>
495
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 46</span>
506
496
 
507
497
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_agent'>agent</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_accept_language'>accept_language</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
508
498
  <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browser</span><span class='period'>.</span><span class='id identifier rubyid_add_default_browsers'>add_default_browsers</span>
@@ -630,27 +620,23 @@ browser.is_msie_v_gt_4_1_on_windows?
630
620
  <pre class="lines">
631
621
 
632
622
 
633
- 739
634
- 740
635
- 741
636
- 742
637
- 743
638
- 744
639
- 745
640
- 746
641
- 747</pre>
623
+ 85
624
+ 86
625
+ 87
626
+ 88
627
+ 89
628
+ 90
629
+ 91</pre>
642
630
  </td>
643
631
  <td>
644
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 739</span>
632
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 85</span>
645
633
 
646
634
  <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
647
- <span class='kw'>begin</span>
648
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
649
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
650
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
651
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
652
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
653
- <span class='kw'>end</span>
635
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
636
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
637
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
638
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
639
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
654
640
  <span class='kw'>end</span></pre>
655
641
  </td>
656
642
  </tr>
@@ -706,135 +692,92 @@ browser.is_msie_v_gt_4_1_on_windows?
706
692
  <pre class="lines">
707
693
 
708
694
 
709
- 687
710
- 688
711
- 689
712
- 690
713
- 691
714
- 692
715
- 693
716
- 694
717
- 695
718
- 696
719
- 697
720
- 698
721
- 699
722
- 700
723
- 701
724
- 702
725
- 703
726
- 704
727
- 705
728
- 706
729
- 707
730
- 708
731
- 709
732
- 710
733
- 711
734
- 712
735
- 713
736
- 714
737
- 715
738
- 716
739
- 717
740
- 718
741
- 719
742
- 720
743
- 721
744
- 722
745
- 723
746
- 724
747
- 725
748
- 726
749
- 727
750
- 728
751
- 729
752
- 730
753
- 731
754
- 732
755
- 733
756
- 734
757
- 735
758
- 736
759
- 737
760
- 738
761
- 739
762
- 740
763
- 741
764
- 742
765
- 743
766
- 744
767
- 745
768
- 746
769
- 747
770
- 748
771
- 749
772
- 750
773
- 751
774
- 752
775
- 753
776
- 754
777
- 755
778
- 756
779
- 757
780
- 758
781
- 759
782
- 760
783
- 761
784
- 762
785
- 763
786
- 764
787
- 765
788
- 766
789
- 767
790
- 768
791
- 769
792
- 770
793
- 771
794
- 772
795
- 773
796
- 774
797
- 775
798
- 776
799
- 777
800
- 778
801
- 779
802
- 780
803
- 781
804
- 782
805
- 783
806
- 784
807
- 785
808
- 786
809
- 787
810
- 788
811
- 789
812
- 790
813
- 791
814
- 792
815
- 793
816
- 794
817
- 795
818
- 796
819
- 797
820
- 798
821
- 799
822
- 800
823
- 801
824
- 802
825
- 803
826
- 804
827
- 805
828
- 806
829
- 807
830
- 808
831
- 809
832
- 810
833
- 811
834
- 812</pre>
695
+ 23
696
+ 24
697
+ 25
698
+ 26
699
+ 27
700
+ 28
701
+ 29
702
+ 30
703
+ 31
704
+ 32
705
+ 33
706
+ 34
707
+ 35
708
+ 36
709
+ 37
710
+ 38
711
+ 39
712
+ 40
713
+ 41
714
+ 42
715
+ 43
716
+ 44
717
+ 45
718
+ 46
719
+ 47
720
+ 48
721
+ 49
722
+ 50
723
+ 51
724
+ 52
725
+ 53
726
+ 54
727
+ 55
728
+ 56
729
+ 57
730
+ 58
731
+ 59
732
+ 60
733
+ 61
734
+ 62
735
+ 63
736
+ 64
737
+ 65
738
+ 66
739
+ 67
740
+ 68
741
+ 69
742
+ 70
743
+ 71
744
+ 72
745
+ 73
746
+ 74
747
+ 75
748
+ 76
749
+ 77
750
+ 78
751
+ 79
752
+ 80
753
+ 81
754
+ 82
755
+ 83
756
+ 84
757
+ 85
758
+ 86
759
+ 87
760
+ 88
761
+ 89
762
+ 90
763
+ 91
764
+ 92
765
+ 93
766
+ 94
767
+ 95
768
+ 96
769
+ 97
770
+ 98
771
+ 99
772
+ 100
773
+ 101
774
+ 102
775
+ 103
776
+ 104
777
+ 105</pre>
835
778
  </td>
836
779
  <td>
837
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
780
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
838
781
 
839
782
  <span class='kw'>class</span> <span class='const'>Browser</span>
840
783
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -845,15 +788,15 @@ browser.is_msie_v_gt_4_1_on_windows?
845
788
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
846
789
 
847
790
  <span class='comment'># Aliases
848
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
849
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
791
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
850
792
 
851
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
852
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
853
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
854
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
855
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
856
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
793
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
794
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
795
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
796
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
797
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
798
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
799
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
857
800
 
858
801
  <span class='comment'># Creates a new browser.
859
802
  </span> <span class='comment'>#
@@ -871,6 +814,16 @@ browser.is_msie_v_gt_4_1_on_windows?
871
814
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
872
815
  <span class='kw'>end</span>
873
816
 
817
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
818
+ </span> <span class='comment'>#
819
+ </span> <span class='comment'># @see #is_version
820
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
821
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
822
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
823
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
824
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
825
+ <span class='kw'>end</span>
826
+
874
827
  <span class='comment'># This method enables the use of dynamic queries in just one method.
875
828
  </span> <span class='comment'>#
876
829
  </span> <span class='comment'># For example:
@@ -889,78 +842,25 @@ browser.is_msie_v_gt_4_1_on_windows?
889
842
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
890
843
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
891
844
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
892
- <span class='kw'>begin</span>
893
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
894
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
895
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
896
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
897
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
898
- <span class='kw'>end</span>
845
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
846
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
847
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
848
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
849
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
899
850
  <span class='kw'>end</span>
900
851
 
901
- <span class='comment'># Returns the current browser as a string.
902
- </span> <span class='comment'>#
903
- </span> <span class='comment'># @see #classes
852
+ <span class='id identifier rubyid_private'>private</span>
853
+
854
+ <span class='comment'># Executes a parsed query
904
855
  </span> <span class='comment'>#
905
- </span> <span class='comment'># @return [String] A string representation of the current browser.
906
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
907
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
856
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
857
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
858
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
859
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
860
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
861
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
862
+ <span class='rbrace'>}</span>
908
863
  <span class='kw'>end</span>
909
-
910
- <span class='id identifier rubyid_private'>private</span>
911
- <span class='comment'># Parse query, getting all arguments.
912
- </span> <span class='comment'>#
913
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
914
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
915
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
916
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
917
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
918
- <span class='kw'>end</span>
919
- <span class='kw'>end</span>
920
-
921
- <span class='comment'># Handles a part of a query.
922
- </span> <span class='comment'>#
923
- </span> <span class='comment'># @param part [String] A part of a query.
924
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
925
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
926
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
927
-
928
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
929
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
930
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
931
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
932
- <span class='kw'>end</span>
933
-
934
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
935
- <span class='kw'>end</span>
936
-
937
- <span class='comment'># Parses the version for a query.
938
- </span> <span class='comment'>#
939
- </span> <span class='comment'># @param version [String] The version to parse.
940
- </span> <span class='comment'># @return [String] The parsed version.
941
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
942
- <span class='lbracket'>[</span>
943
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
944
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
945
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
946
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
947
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
948
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
949
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
950
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
951
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
952
- <span class='kw'>end</span>
953
-
954
- <span class='comment'># Executes a parsed query
955
- </span> <span class='comment'>#
956
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
957
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
958
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
959
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
960
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
961
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
962
- <span class='rbrace'>}</span>
963
- <span class='kw'>end</span>
964
864
  <span class='kw'>end</span></pre>
965
865
  </td>
966
866
  </tr>
@@ -976,10 +876,6 @@ browser.is_msie_v_gt_4_1_on_windows?
976
876
 
977
877
 
978
878
 
979
- <span class="aliases">Also known as:
980
- <span class="names"><span id='ua-instance_method'>ua</span></span>
981
- </span>
982
-
983
879
 
984
880
 
985
881
  </h3><div class="docstring">
@@ -1015,135 +911,92 @@ browser.is_msie_v_gt_4_1_on_windows?
1015
911
  <pre class="lines">
1016
912
 
1017
913
 
1018
- 687
1019
- 688
1020
- 689
1021
- 690
1022
- 691
1023
- 692
1024
- 693
1025
- 694
1026
- 695
1027
- 696
1028
- 697
1029
- 698
1030
- 699
1031
- 700
1032
- 701
1033
- 702
1034
- 703
1035
- 704
1036
- 705
1037
- 706
1038
- 707
1039
- 708
1040
- 709
1041
- 710
1042
- 711
1043
- 712
1044
- 713
1045
- 714
1046
- 715
1047
- 716
1048
- 717
1049
- 718
1050
- 719
1051
- 720
1052
- 721
1053
- 722
1054
- 723
1055
- 724
1056
- 725
1057
- 726
1058
- 727
1059
- 728
1060
- 729
1061
- 730
1062
- 731
1063
- 732
1064
- 733
1065
- 734
1066
- 735
1067
- 736
1068
- 737
1069
- 738
1070
- 739
1071
- 740
1072
- 741
1073
- 742
1074
- 743
1075
- 744
1076
- 745
1077
- 746
1078
- 747
1079
- 748
1080
- 749
1081
- 750
1082
- 751
1083
- 752
1084
- 753
1085
- 754
1086
- 755
1087
- 756
1088
- 757
1089
- 758
1090
- 759
1091
- 760
1092
- 761
1093
- 762
1094
- 763
1095
- 764
1096
- 765
1097
- 766
1098
- 767
1099
- 768
1100
- 769
1101
- 770
1102
- 771
1103
- 772
1104
- 773
1105
- 774
1106
- 775
1107
- 776
1108
- 777
1109
- 778
1110
- 779
1111
- 780
1112
- 781
1113
- 782
1114
- 783
1115
- 784
1116
- 785
1117
- 786
1118
- 787
1119
- 788
1120
- 789
1121
- 790
1122
- 791
1123
- 792
1124
- 793
1125
- 794
1126
- 795
1127
- 796
1128
- 797
1129
- 798
1130
- 799
1131
- 800
1132
- 801
1133
- 802
1134
- 803
1135
- 804
1136
- 805
1137
- 806
1138
- 807
1139
- 808
1140
- 809
1141
- 810
1142
- 811
1143
- 812</pre>
914
+ 23
915
+ 24
916
+ 25
917
+ 26
918
+ 27
919
+ 28
920
+ 29
921
+ 30
922
+ 31
923
+ 32
924
+ 33
925
+ 34
926
+ 35
927
+ 36
928
+ 37
929
+ 38
930
+ 39
931
+ 40
932
+ 41
933
+ 42
934
+ 43
935
+ 44
936
+ 45
937
+ 46
938
+ 47
939
+ 48
940
+ 49
941
+ 50
942
+ 51
943
+ 52
944
+ 53
945
+ 54
946
+ 55
947
+ 56
948
+ 57
949
+ 58
950
+ 59
951
+ 60
952
+ 61
953
+ 62
954
+ 63
955
+ 64
956
+ 65
957
+ 66
958
+ 67
959
+ 68
960
+ 69
961
+ 70
962
+ 71
963
+ 72
964
+ 73
965
+ 74
966
+ 75
967
+ 76
968
+ 77
969
+ 78
970
+ 79
971
+ 80
972
+ 81
973
+ 82
974
+ 83
975
+ 84
976
+ 85
977
+ 86
978
+ 87
979
+ 88
980
+ 89
981
+ 90
982
+ 91
983
+ 92
984
+ 93
985
+ 94
986
+ 95
987
+ 96
988
+ 97
989
+ 98
990
+ 99
991
+ 100
992
+ 101
993
+ 102
994
+ 103
995
+ 104
996
+ 105</pre>
1144
997
  </td>
1145
998
  <td>
1146
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
999
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
1147
1000
 
1148
1001
  <span class='kw'>class</span> <span class='const'>Browser</span>
1149
1002
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -1154,15 +1007,15 @@ browser.is_msie_v_gt_4_1_on_windows?
1154
1007
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
1155
1008
 
1156
1009
  <span class='comment'># Aliases
1157
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
1158
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
1010
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
1159
1011
 
1160
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
1161
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
1162
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
1163
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
1164
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1165
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
1012
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
1013
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
1014
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
1015
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
1016
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
1017
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1018
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
1166
1019
 
1167
1020
  <span class='comment'># Creates a new browser.
1168
1021
  </span> <span class='comment'>#
@@ -1180,6 +1033,16 @@ browser.is_msie_v_gt_4_1_on_windows?
1180
1033
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
1181
1034
  <span class='kw'>end</span>
1182
1035
 
1036
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
1037
+ </span> <span class='comment'>#
1038
+ </span> <span class='comment'># @see #is_version
1039
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
1040
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
1041
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
1042
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1043
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
1044
+ <span class='kw'>end</span>
1045
+
1183
1046
  <span class='comment'># This method enables the use of dynamic queries in just one method.
1184
1047
  </span> <span class='comment'>#
1185
1048
  </span> <span class='comment'># For example:
@@ -1198,78 +1061,25 @@ browser.is_msie_v_gt_4_1_on_windows?
1198
1061
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
1199
1062
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1200
1063
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1201
- <span class='kw'>begin</span>
1202
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1203
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1204
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1205
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1206
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1207
- <span class='kw'>end</span>
1064
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1065
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1066
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1067
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1068
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1208
1069
  <span class='kw'>end</span>
1209
1070
 
1210
- <span class='comment'># Returns the current browser as a string.
1211
- </span> <span class='comment'>#
1212
- </span> <span class='comment'># @see #classes
1071
+ <span class='id identifier rubyid_private'>private</span>
1072
+
1073
+ <span class='comment'># Executes a parsed query
1213
1074
  </span> <span class='comment'>#
1214
- </span> <span class='comment'># @return [String] A string representation of the current browser.
1215
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1216
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
1075
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1076
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1077
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1078
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1079
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1080
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1081
+ <span class='rbrace'>}</span>
1217
1082
  <span class='kw'>end</span>
1218
-
1219
- <span class='id identifier rubyid_private'>private</span>
1220
- <span class='comment'># Parse query, getting all arguments.
1221
- </span> <span class='comment'>#
1222
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
1223
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
1224
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1225
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
1226
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1227
- <span class='kw'>end</span>
1228
- <span class='kw'>end</span>
1229
-
1230
- <span class='comment'># Handles a part of a query.
1231
- </span> <span class='comment'>#
1232
- </span> <span class='comment'># @param part [String] A part of a query.
1233
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1234
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1235
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
1236
-
1237
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
1238
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
1239
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1240
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
1241
- <span class='kw'>end</span>
1242
-
1243
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
1244
- <span class='kw'>end</span>
1245
-
1246
- <span class='comment'># Parses the version for a query.
1247
- </span> <span class='comment'>#
1248
- </span> <span class='comment'># @param version [String] The version to parse.
1249
- </span> <span class='comment'># @return [String] The parsed version.
1250
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
1251
- <span class='lbracket'>[</span>
1252
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
1253
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
1254
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
1255
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
1256
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
1257
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
1258
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
1259
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1260
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
1261
- <span class='kw'>end</span>
1262
-
1263
- <span class='comment'># Executes a parsed query
1264
- </span> <span class='comment'>#
1265
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1266
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1267
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1268
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1269
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1270
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1271
- <span class='rbrace'>}</span>
1272
- <span class='kw'>end</span>
1273
1083
  <span class='kw'>end</span></pre>
1274
1084
  </td>
1275
1085
  </tr>
@@ -1320,135 +1130,92 @@ browser.is_msie_v_gt_4_1_on_windows?
1320
1130
  <pre class="lines">
1321
1131
 
1322
1132
 
1323
- 687
1324
- 688
1325
- 689
1326
- 690
1327
- 691
1328
- 692
1329
- 693
1330
- 694
1331
- 695
1332
- 696
1333
- 697
1334
- 698
1335
- 699
1336
- 700
1337
- 701
1338
- 702
1339
- 703
1340
- 704
1341
- 705
1342
- 706
1343
- 707
1344
- 708
1345
- 709
1346
- 710
1347
- 711
1348
- 712
1349
- 713
1350
- 714
1351
- 715
1352
- 716
1353
- 717
1354
- 718
1355
- 719
1356
- 720
1357
- 721
1358
- 722
1359
- 723
1360
- 724
1361
- 725
1362
- 726
1363
- 727
1364
- 728
1365
- 729
1366
- 730
1367
- 731
1368
- 732
1369
- 733
1370
- 734
1371
- 735
1372
- 736
1373
- 737
1374
- 738
1375
- 739
1376
- 740
1377
- 741
1378
- 742
1379
- 743
1380
- 744
1381
- 745
1382
- 746
1383
- 747
1384
- 748
1385
- 749
1386
- 750
1387
- 751
1388
- 752
1389
- 753
1390
- 754
1391
- 755
1392
- 756
1393
- 757
1394
- 758
1395
- 759
1396
- 760
1397
- 761
1398
- 762
1399
- 763
1400
- 764
1401
- 765
1402
- 766
1403
- 767
1404
- 768
1405
- 769
1406
- 770
1407
- 771
1408
- 772
1409
- 773
1410
- 774
1411
- 775
1412
- 776
1413
- 777
1414
- 778
1415
- 779
1416
- 780
1417
- 781
1418
- 782
1419
- 783
1420
- 784
1421
- 785
1422
- 786
1423
- 787
1424
- 788
1425
- 789
1426
- 790
1427
- 791
1428
- 792
1429
- 793
1430
- 794
1431
- 795
1432
- 796
1433
- 797
1434
- 798
1435
- 799
1436
- 800
1437
- 801
1438
- 802
1439
- 803
1440
- 804
1441
- 805
1442
- 806
1443
- 807
1444
- 808
1445
- 809
1446
- 810
1447
- 811
1448
- 812</pre>
1133
+ 23
1134
+ 24
1135
+ 25
1136
+ 26
1137
+ 27
1138
+ 28
1139
+ 29
1140
+ 30
1141
+ 31
1142
+ 32
1143
+ 33
1144
+ 34
1145
+ 35
1146
+ 36
1147
+ 37
1148
+ 38
1149
+ 39
1150
+ 40
1151
+ 41
1152
+ 42
1153
+ 43
1154
+ 44
1155
+ 45
1156
+ 46
1157
+ 47
1158
+ 48
1159
+ 49
1160
+ 50
1161
+ 51
1162
+ 52
1163
+ 53
1164
+ 54
1165
+ 55
1166
+ 56
1167
+ 57
1168
+ 58
1169
+ 59
1170
+ 60
1171
+ 61
1172
+ 62
1173
+ 63
1174
+ 64
1175
+ 65
1176
+ 66
1177
+ 67
1178
+ 68
1179
+ 69
1180
+ 70
1181
+ 71
1182
+ 72
1183
+ 73
1184
+ 74
1185
+ 75
1186
+ 76
1187
+ 77
1188
+ 78
1189
+ 79
1190
+ 80
1191
+ 81
1192
+ 82
1193
+ 83
1194
+ 84
1195
+ 85
1196
+ 86
1197
+ 87
1198
+ 88
1199
+ 89
1200
+ 90
1201
+ 91
1202
+ 92
1203
+ 93
1204
+ 94
1205
+ 95
1206
+ 96
1207
+ 97
1208
+ 98
1209
+ 99
1210
+ 100
1211
+ 101
1212
+ 102
1213
+ 103
1214
+ 104
1215
+ 105</pre>
1449
1216
  </td>
1450
1217
  <td>
1451
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
1218
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
1452
1219
 
1453
1220
  <span class='kw'>class</span> <span class='const'>Browser</span>
1454
1221
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -1459,15 +1226,15 @@ browser.is_msie_v_gt_4_1_on_windows?
1459
1226
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
1460
1227
 
1461
1228
  <span class='comment'># Aliases
1462
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
1463
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
1229
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
1464
1230
 
1465
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
1466
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
1467
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
1468
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
1469
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1470
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
1231
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
1232
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
1233
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
1234
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
1235
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
1236
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1237
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
1471
1238
 
1472
1239
  <span class='comment'># Creates a new browser.
1473
1240
  </span> <span class='comment'>#
@@ -1485,6 +1252,16 @@ browser.is_msie_v_gt_4_1_on_windows?
1485
1252
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
1486
1253
  <span class='kw'>end</span>
1487
1254
 
1255
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
1256
+ </span> <span class='comment'>#
1257
+ </span> <span class='comment'># @see #is_version
1258
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
1259
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
1260
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
1261
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1262
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
1263
+ <span class='kw'>end</span>
1264
+
1488
1265
  <span class='comment'># This method enables the use of dynamic queries in just one method.
1489
1266
  </span> <span class='comment'>#
1490
1267
  </span> <span class='comment'># For example:
@@ -1503,78 +1280,25 @@ browser.is_msie_v_gt_4_1_on_windows?
1503
1280
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
1504
1281
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1505
1282
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1506
- <span class='kw'>begin</span>
1507
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1508
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1509
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1510
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1511
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1512
- <span class='kw'>end</span>
1283
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1284
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1285
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1286
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1287
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1513
1288
  <span class='kw'>end</span>
1514
1289
 
1515
- <span class='comment'># Returns the current browser as a string.
1516
- </span> <span class='comment'>#
1517
- </span> <span class='comment'># @see #classes
1290
+ <span class='id identifier rubyid_private'>private</span>
1291
+
1292
+ <span class='comment'># Executes a parsed query
1518
1293
  </span> <span class='comment'>#
1519
- </span> <span class='comment'># @return [String] A string representation of the current browser.
1520
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1521
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
1294
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1295
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1296
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1297
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1298
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1299
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1300
+ <span class='rbrace'>}</span>
1522
1301
  <span class='kw'>end</span>
1523
-
1524
- <span class='id identifier rubyid_private'>private</span>
1525
- <span class='comment'># Parse query, getting all arguments.
1526
- </span> <span class='comment'>#
1527
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
1528
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
1529
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1530
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
1531
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1532
- <span class='kw'>end</span>
1533
- <span class='kw'>end</span>
1534
-
1535
- <span class='comment'># Handles a part of a query.
1536
- </span> <span class='comment'>#
1537
- </span> <span class='comment'># @param part [String] A part of a query.
1538
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1539
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1540
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
1541
-
1542
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
1543
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
1544
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1545
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
1546
- <span class='kw'>end</span>
1547
-
1548
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
1549
- <span class='kw'>end</span>
1550
-
1551
- <span class='comment'># Parses the version for a query.
1552
- </span> <span class='comment'>#
1553
- </span> <span class='comment'># @param version [String] The version to parse.
1554
- </span> <span class='comment'># @return [String] The parsed version.
1555
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
1556
- <span class='lbracket'>[</span>
1557
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
1558
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
1559
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
1560
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
1561
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
1562
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
1563
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
1564
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1565
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
1566
- <span class='kw'>end</span>
1567
-
1568
- <span class='comment'># Executes a parsed query
1569
- </span> <span class='comment'>#
1570
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1571
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1572
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1573
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1574
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1575
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1576
- <span class='rbrace'>}</span>
1577
- <span class='kw'>end</span>
1578
1302
  <span class='kw'>end</span></pre>
1579
1303
  </td>
1580
1304
  </tr>
@@ -1625,135 +1349,92 @@ browser.is_msie_v_gt_4_1_on_windows?
1625
1349
  <pre class="lines">
1626
1350
 
1627
1351
 
1628
- 687
1629
- 688
1630
- 689
1631
- 690
1632
- 691
1633
- 692
1634
- 693
1635
- 694
1636
- 695
1637
- 696
1638
- 697
1639
- 698
1640
- 699
1641
- 700
1642
- 701
1643
- 702
1644
- 703
1645
- 704
1646
- 705
1647
- 706
1648
- 707
1649
- 708
1650
- 709
1651
- 710
1652
- 711
1653
- 712
1654
- 713
1655
- 714
1656
- 715
1657
- 716
1658
- 717
1659
- 718
1660
- 719
1661
- 720
1662
- 721
1663
- 722
1664
- 723
1665
- 724
1666
- 725
1667
- 726
1668
- 727
1669
- 728
1670
- 729
1671
- 730
1672
- 731
1673
- 732
1674
- 733
1675
- 734
1676
- 735
1677
- 736
1678
- 737
1679
- 738
1680
- 739
1681
- 740
1682
- 741
1683
- 742
1684
- 743
1685
- 744
1686
- 745
1687
- 746
1688
- 747
1689
- 748
1690
- 749
1691
- 750
1692
- 751
1693
- 752
1694
- 753
1695
- 754
1696
- 755
1697
- 756
1698
- 757
1699
- 758
1700
- 759
1701
- 760
1702
- 761
1703
- 762
1704
- 763
1705
- 764
1706
- 765
1707
- 766
1708
- 767
1709
- 768
1710
- 769
1711
- 770
1712
- 771
1713
- 772
1714
- 773
1715
- 774
1716
- 775
1717
- 776
1718
- 777
1719
- 778
1720
- 779
1721
- 780
1722
- 781
1723
- 782
1724
- 783
1725
- 784
1726
- 785
1727
- 786
1728
- 787
1729
- 788
1730
- 789
1731
- 790
1732
- 791
1733
- 792
1734
- 793
1735
- 794
1736
- 795
1737
- 796
1738
- 797
1739
- 798
1740
- 799
1741
- 800
1742
- 801
1743
- 802
1744
- 803
1745
- 804
1746
- 805
1747
- 806
1748
- 807
1749
- 808
1750
- 809
1751
- 810
1752
- 811
1753
- 812</pre>
1352
+ 23
1353
+ 24
1354
+ 25
1355
+ 26
1356
+ 27
1357
+ 28
1358
+ 29
1359
+ 30
1360
+ 31
1361
+ 32
1362
+ 33
1363
+ 34
1364
+ 35
1365
+ 36
1366
+ 37
1367
+ 38
1368
+ 39
1369
+ 40
1370
+ 41
1371
+ 42
1372
+ 43
1373
+ 44
1374
+ 45
1375
+ 46
1376
+ 47
1377
+ 48
1378
+ 49
1379
+ 50
1380
+ 51
1381
+ 52
1382
+ 53
1383
+ 54
1384
+ 55
1385
+ 56
1386
+ 57
1387
+ 58
1388
+ 59
1389
+ 60
1390
+ 61
1391
+ 62
1392
+ 63
1393
+ 64
1394
+ 65
1395
+ 66
1396
+ 67
1397
+ 68
1398
+ 69
1399
+ 70
1400
+ 71
1401
+ 72
1402
+ 73
1403
+ 74
1404
+ 75
1405
+ 76
1406
+ 77
1407
+ 78
1408
+ 79
1409
+ 80
1410
+ 81
1411
+ 82
1412
+ 83
1413
+ 84
1414
+ 85
1415
+ 86
1416
+ 87
1417
+ 88
1418
+ 89
1419
+ 90
1420
+ 91
1421
+ 92
1422
+ 93
1423
+ 94
1424
+ 95
1425
+ 96
1426
+ 97
1427
+ 98
1428
+ 99
1429
+ 100
1430
+ 101
1431
+ 102
1432
+ 103
1433
+ 104
1434
+ 105</pre>
1754
1435
  </td>
1755
1436
  <td>
1756
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
1437
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
1757
1438
 
1758
1439
  <span class='kw'>class</span> <span class='const'>Browser</span>
1759
1440
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -1764,15 +1445,15 @@ browser.is_msie_v_gt_4_1_on_windows?
1764
1445
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
1765
1446
 
1766
1447
  <span class='comment'># Aliases
1767
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
1768
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
1448
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
1769
1449
 
1770
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
1771
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
1772
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
1773
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
1774
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1775
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
1450
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
1451
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
1452
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
1453
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
1454
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
1455
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1456
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
1776
1457
 
1777
1458
  <span class='comment'># Creates a new browser.
1778
1459
  </span> <span class='comment'>#
@@ -1790,6 +1471,16 @@ browser.is_msie_v_gt_4_1_on_windows?
1790
1471
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
1791
1472
  <span class='kw'>end</span>
1792
1473
 
1474
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
1475
+ </span> <span class='comment'>#
1476
+ </span> <span class='comment'># @see #is_version
1477
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
1478
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
1479
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
1480
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1481
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
1482
+ <span class='kw'>end</span>
1483
+
1793
1484
  <span class='comment'># This method enables the use of dynamic queries in just one method.
1794
1485
  </span> <span class='comment'>#
1795
1486
  </span> <span class='comment'># For example:
@@ -1808,78 +1499,25 @@ browser.is_msie_v_gt_4_1_on_windows?
1808
1499
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
1809
1500
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1810
1501
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1811
- <span class='kw'>begin</span>
1812
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1813
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1814
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1815
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1816
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1817
- <span class='kw'>end</span>
1502
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1503
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1504
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1505
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1506
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1818
1507
  <span class='kw'>end</span>
1819
1508
 
1820
- <span class='comment'># Returns the current browser as a string.
1821
- </span> <span class='comment'>#
1822
- </span> <span class='comment'># @see #classes
1509
+ <span class='id identifier rubyid_private'>private</span>
1510
+
1511
+ <span class='comment'># Executes a parsed query
1823
1512
  </span> <span class='comment'>#
1824
- </span> <span class='comment'># @return [String] A string representation of the current browser.
1825
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
1826
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
1513
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1514
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1515
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1516
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1517
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1518
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1519
+ <span class='rbrace'>}</span>
1827
1520
  <span class='kw'>end</span>
1828
-
1829
- <span class='id identifier rubyid_private'>private</span>
1830
- <span class='comment'># Parse query, getting all arguments.
1831
- </span> <span class='comment'>#
1832
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
1833
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
1834
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1835
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
1836
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1837
- <span class='kw'>end</span>
1838
- <span class='kw'>end</span>
1839
-
1840
- <span class='comment'># Handles a part of a query.
1841
- </span> <span class='comment'>#
1842
- </span> <span class='comment'># @param part [String] A part of a query.
1843
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
1844
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
1845
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
1846
-
1847
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
1848
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
1849
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1850
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
1851
- <span class='kw'>end</span>
1852
-
1853
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
1854
- <span class='kw'>end</span>
1855
-
1856
- <span class='comment'># Parses the version for a query.
1857
- </span> <span class='comment'>#
1858
- </span> <span class='comment'># @param version [String] The version to parse.
1859
- </span> <span class='comment'># @return [String] The parsed version.
1860
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
1861
- <span class='lbracket'>[</span>
1862
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
1863
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
1864
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
1865
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
1866
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
1867
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
1868
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
1869
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
1870
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
1871
- <span class='kw'>end</span>
1872
-
1873
- <span class='comment'># Executes a parsed query
1874
- </span> <span class='comment'>#
1875
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1876
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1877
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1878
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1879
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1880
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1881
- <span class='rbrace'>}</span>
1882
- <span class='kw'>end</span>
1883
1521
  <span class='kw'>end</span></pre>
1884
1522
  </td>
1885
1523
  </tr>
@@ -1930,135 +1568,92 @@ browser.is_msie_v_gt_4_1_on_windows?
1930
1568
  <pre class="lines">
1931
1569
 
1932
1570
 
1933
- 687
1934
- 688
1935
- 689
1936
- 690
1937
- 691
1938
- 692
1939
- 693
1940
- 694
1941
- 695
1942
- 696
1943
- 697
1944
- 698
1945
- 699
1946
- 700
1947
- 701
1948
- 702
1949
- 703
1950
- 704
1951
- 705
1952
- 706
1953
- 707
1954
- 708
1955
- 709
1956
- 710
1957
- 711
1958
- 712
1959
- 713
1960
- 714
1961
- 715
1962
- 716
1963
- 717
1964
- 718
1965
- 719
1966
- 720
1967
- 721
1968
- 722
1969
- 723
1970
- 724
1971
- 725
1972
- 726
1973
- 727
1974
- 728
1975
- 729
1976
- 730
1977
- 731
1978
- 732
1979
- 733
1980
- 734
1981
- 735
1982
- 736
1983
- 737
1984
- 738
1985
- 739
1986
- 740
1987
- 741
1988
- 742
1989
- 743
1990
- 744
1991
- 745
1992
- 746
1993
- 747
1994
- 748
1995
- 749
1996
- 750
1997
- 751
1998
- 752
1999
- 753
2000
- 754
2001
- 755
2002
- 756
2003
- 757
2004
- 758
2005
- 759
2006
- 760
2007
- 761
2008
- 762
2009
- 763
2010
- 764
2011
- 765
2012
- 766
2013
- 767
2014
- 768
2015
- 769
2016
- 770
2017
- 771
2018
- 772
2019
- 773
2020
- 774
2021
- 775
2022
- 776
2023
- 777
2024
- 778
2025
- 779
2026
- 780
2027
- 781
2028
- 782
2029
- 783
2030
- 784
2031
- 785
2032
- 786
2033
- 787
2034
- 788
2035
- 789
2036
- 790
2037
- 791
2038
- 792
2039
- 793
2040
- 794
2041
- 795
2042
- 796
2043
- 797
2044
- 798
2045
- 799
2046
- 800
2047
- 801
2048
- 802
2049
- 803
2050
- 804
2051
- 805
2052
- 806
2053
- 807
2054
- 808
2055
- 809
2056
- 810
2057
- 811
2058
- 812</pre>
1571
+ 23
1572
+ 24
1573
+ 25
1574
+ 26
1575
+ 27
1576
+ 28
1577
+ 29
1578
+ 30
1579
+ 31
1580
+ 32
1581
+ 33
1582
+ 34
1583
+ 35
1584
+ 36
1585
+ 37
1586
+ 38
1587
+ 39
1588
+ 40
1589
+ 41
1590
+ 42
1591
+ 43
1592
+ 44
1593
+ 45
1594
+ 46
1595
+ 47
1596
+ 48
1597
+ 49
1598
+ 50
1599
+ 51
1600
+ 52
1601
+ 53
1602
+ 54
1603
+ 55
1604
+ 56
1605
+ 57
1606
+ 58
1607
+ 59
1608
+ 60
1609
+ 61
1610
+ 62
1611
+ 63
1612
+ 64
1613
+ 65
1614
+ 66
1615
+ 67
1616
+ 68
1617
+ 69
1618
+ 70
1619
+ 71
1620
+ 72
1621
+ 73
1622
+ 74
1623
+ 75
1624
+ 76
1625
+ 77
1626
+ 78
1627
+ 79
1628
+ 80
1629
+ 81
1630
+ 82
1631
+ 83
1632
+ 84
1633
+ 85
1634
+ 86
1635
+ 87
1636
+ 88
1637
+ 89
1638
+ 90
1639
+ 91
1640
+ 92
1641
+ 93
1642
+ 94
1643
+ 95
1644
+ 96
1645
+ 97
1646
+ 98
1647
+ 99
1648
+ 100
1649
+ 101
1650
+ 102
1651
+ 103
1652
+ 104
1653
+ 105</pre>
2059
1654
  </td>
2060
1655
  <td>
2061
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
1656
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
2062
1657
 
2063
1658
  <span class='kw'>class</span> <span class='const'>Browser</span>
2064
1659
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -2069,15 +1664,15 @@ browser.is_msie_v_gt_4_1_on_windows?
2069
1664
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
2070
1665
 
2071
1666
  <span class='comment'># Aliases
2072
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
2073
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
1667
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
2074
1668
 
2075
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
2076
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
2077
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
2078
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
2079
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
2080
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
1669
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
1670
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
1671
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
1672
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
1673
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
1674
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1675
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
2081
1676
 
2082
1677
  <span class='comment'># Creates a new browser.
2083
1678
  </span> <span class='comment'>#
@@ -2095,6 +1690,16 @@ browser.is_msie_v_gt_4_1_on_windows?
2095
1690
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
2096
1691
  <span class='kw'>end</span>
2097
1692
 
1693
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
1694
+ </span> <span class='comment'>#
1695
+ </span> <span class='comment'># @see #is_version
1696
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
1697
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
1698
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
1699
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1700
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
1701
+ <span class='kw'>end</span>
1702
+
2098
1703
  <span class='comment'># This method enables the use of dynamic queries in just one method.
2099
1704
  </span> <span class='comment'>#
2100
1705
  </span> <span class='comment'># For example:
@@ -2113,78 +1718,25 @@ browser.is_msie_v_gt_4_1_on_windows?
2113
1718
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
2114
1719
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
2115
1720
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2116
- <span class='kw'>begin</span>
2117
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
2118
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
2119
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
2120
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
2121
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2122
- <span class='kw'>end</span>
1721
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1722
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1723
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1724
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1725
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2123
1726
  <span class='kw'>end</span>
2124
1727
 
2125
- <span class='comment'># Returns the current browser as a string.
2126
- </span> <span class='comment'>#
2127
- </span> <span class='comment'># @see #classes
1728
+ <span class='id identifier rubyid_private'>private</span>
1729
+
1730
+ <span class='comment'># Executes a parsed query
2128
1731
  </span> <span class='comment'>#
2129
- </span> <span class='comment'># @return [String] A string representation of the current browser.
2130
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
2131
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
1732
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1733
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1734
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1735
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1736
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1737
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1738
+ <span class='rbrace'>}</span>
2132
1739
  <span class='kw'>end</span>
2133
-
2134
- <span class='id identifier rubyid_private'>private</span>
2135
- <span class='comment'># Parse query, getting all arguments.
2136
- </span> <span class='comment'>#
2137
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
2138
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
2139
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
2140
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
2141
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
2142
- <span class='kw'>end</span>
2143
- <span class='kw'>end</span>
2144
-
2145
- <span class='comment'># Handles a part of a query.
2146
- </span> <span class='comment'>#
2147
- </span> <span class='comment'># @param part [String] A part of a query.
2148
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
2149
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
2150
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
2151
-
2152
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
2153
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
2154
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
2155
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
2156
- <span class='kw'>end</span>
2157
-
2158
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
2159
- <span class='kw'>end</span>
2160
-
2161
- <span class='comment'># Parses the version for a query.
2162
- </span> <span class='comment'>#
2163
- </span> <span class='comment'># @param version [String] The version to parse.
2164
- </span> <span class='comment'># @return [String] The parsed version.
2165
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
2166
- <span class='lbracket'>[</span>
2167
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
2168
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
2169
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
2170
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
2171
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
2172
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
2173
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
2174
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
2175
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
2176
- <span class='kw'>end</span>
2177
-
2178
- <span class='comment'># Executes a parsed query
2179
- </span> <span class='comment'>#
2180
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
2181
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
2182
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
2183
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
2184
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
2185
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
2186
- <span class='rbrace'>}</span>
2187
- <span class='kw'>end</span>
2188
1740
  <span class='kw'>end</span></pre>
2189
1741
  </td>
2190
1742
  </tr>
@@ -2196,7 +1748,7 @@ browser.is_msie_v_gt_4_1_on_windows?
2196
1748
  <div class="method_details ">
2197
1749
  <h3 class="signature " id="version-instance_method">
2198
1750
 
2199
- - (<tt>String</tt>) <strong>version</strong>
1751
+ - (<tt>String|<span class='object_link'><a href="Query.html" title="Brauser::Query (class)">Query</a></span></tt>) <strong>version</strong>(versions = nil)
2200
1752
 
2201
1753
 
2202
1754
 
@@ -2204,166 +1756,152 @@ browser.is_msie_v_gt_4_1_on_windows?
2204
1756
 
2205
1757
  </h3><div class="docstring">
2206
1758
  <div class="discussion">
2207
- <p>Returns The current browser version.</p>
1759
+ <p>Get the current browser version (if called without arguments) or checks if the browser is a specific version.</p>
2208
1760
 
2209
1761
 
2210
1762
  </div>
2211
1763
  </div>
2212
1764
  <div class="tags">
1765
+ <p class="tag_title">Parameters:</p>
1766
+ <ul class="param">
1767
+
1768
+ <li>
1769
+
1770
+ <span class='name'>versions</span>
1771
+
1772
+
1773
+ <span class='type'>(<tt>String|Hash</tt>)</span>
1774
+
1775
+
1776
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
1777
+
1778
+
1779
+ &mdash;
1780
+ <div class='inline'><p>A string in the form <code>operator version &amp;&amp; ...</code> (example: <code>&gt;= 7 &amp;&amp; &lt; 4</code>) or an hash with specific version to match against,
1781
+ in form <code>{:operator =&gt; version}</code>, where operator is one of <code>:lt, :lte, :eq, :gt, :gte</code>.</p>
1782
+ </div>
1783
+
1784
+ </li>
2213
1785
 
1786
+ </ul>
1787
+
2214
1788
  <p class="tag_title">Returns:</p>
2215
1789
  <ul class="return">
2216
1790
 
2217
1791
  <li>
2218
1792
 
2219
1793
 
2220
- <span class='type'>(<tt>String</tt>)</span>
1794
+ <span class='type'>(<tt>String|<span class='object_link'><a href="Query.html" title="Brauser::Query (class)">Query</a></span></tt>)</span>
2221
1795
 
2222
1796
 
2223
1797
 
2224
1798
  &mdash;
2225
- <div class='inline'><p>The current browser version.</p>
1799
+ <div class='inline'><p>The browser version or a query which can evaluated for concatenation or result.</p>
2226
1800
  </div>
2227
1801
 
2228
1802
  </li>
2229
1803
 
2230
1804
  </ul>
2231
1805
 
1806
+ <p class="tag_title">See Also:</p>
1807
+ <ul class="see">
1808
+
1809
+ <li>#is_version</li>
1810
+
1811
+ </ul>
1812
+
2232
1813
  </div><table class="source_code">
2233
1814
  <tr>
2234
1815
  <td>
2235
1816
  <pre class="lines">
2236
1817
 
2237
1818
 
2238
- 687
2239
- 688
2240
- 689
2241
- 690
2242
- 691
2243
- 692
2244
- 693
2245
- 694
2246
- 695
2247
- 696
2248
- 697
2249
- 698
2250
- 699
2251
- 700
2252
- 701
2253
- 702
2254
- 703
2255
- 704
2256
- 705
2257
- 706
2258
- 707
2259
- 708
2260
- 709
2261
- 710
2262
- 711
2263
- 712
2264
- 713
2265
- 714
2266
- 715
2267
- 716
2268
- 717
2269
- 718
2270
- 719
2271
- 720
2272
- 721
2273
- 722
2274
- 723
2275
- 724
2276
- 725
2277
- 726
2278
- 727
2279
- 728
2280
- 729
2281
- 730
2282
- 731
2283
- 732
2284
- 733
2285
- 734
2286
- 735
2287
- 736
2288
- 737
2289
- 738
2290
- 739
2291
- 740
2292
- 741
2293
- 742
2294
- 743
2295
- 744
2296
- 745
2297
- 746
2298
- 747
2299
- 748
2300
- 749
2301
- 750
2302
- 751
2303
- 752
2304
- 753
2305
- 754
2306
- 755
2307
- 756
2308
- 757
2309
- 758
2310
- 759
2311
- 760
2312
- 761
2313
- 762
2314
- 763
2315
- 764
2316
- 765
2317
- 766
2318
- 767
2319
- 768
2320
- 769
2321
- 770
2322
- 771
2323
- 772
2324
- 773
2325
- 774
2326
- 775
2327
- 776
2328
- 777
2329
- 778
2330
- 779
2331
- 780
2332
- 781
2333
- 782
2334
- 783
2335
- 784
2336
- 785
2337
- 786
2338
- 787
2339
- 788
2340
- 789
2341
- 790
2342
- 791
2343
- 792
2344
- 793
2345
- 794
2346
- 795
2347
- 796
2348
- 797
2349
- 798
2350
- 799
2351
- 800
2352
- 801
2353
- 802
2354
- 803
2355
- 804
2356
- 805
2357
- 806
2358
- 807
2359
- 808
2360
- 809
2361
- 810
2362
- 811
2363
- 812</pre>
1819
+ 23
1820
+ 24
1821
+ 25
1822
+ 26
1823
+ 27
1824
+ 28
1825
+ 29
1826
+ 30
1827
+ 31
1828
+ 32
1829
+ 33
1830
+ 34
1831
+ 35
1832
+ 36
1833
+ 37
1834
+ 38
1835
+ 39
1836
+ 40
1837
+ 41
1838
+ 42
1839
+ 43
1840
+ 44
1841
+ 45
1842
+ 46
1843
+ 47
1844
+ 48
1845
+ 49
1846
+ 50
1847
+ 51
1848
+ 52
1849
+ 53
1850
+ 54
1851
+ 55
1852
+ 56
1853
+ 57
1854
+ 58
1855
+ 59
1856
+ 60
1857
+ 61
1858
+ 62
1859
+ 63
1860
+ 64
1861
+ 65
1862
+ 66
1863
+ 67
1864
+ 68
1865
+ 69
1866
+ 70
1867
+ 71
1868
+ 72
1869
+ 73
1870
+ 74
1871
+ 75
1872
+ 76
1873
+ 77
1874
+ 78
1875
+ 79
1876
+ 80
1877
+ 81
1878
+ 82
1879
+ 83
1880
+ 84
1881
+ 85
1882
+ 86
1883
+ 87
1884
+ 88
1885
+ 89
1886
+ 90
1887
+ 91
1888
+ 92
1889
+ 93
1890
+ 94
1891
+ 95
1892
+ 96
1893
+ 97
1894
+ 98
1895
+ 99
1896
+ 100
1897
+ 101
1898
+ 102
1899
+ 103
1900
+ 104
1901
+ 105</pre>
2364
1902
  </td>
2365
1903
  <td>
2366
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 687</span>
1904
+ <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 23</span>
2367
1905
 
2368
1906
  <span class='kw'>class</span> <span class='const'>Browser</span>
2369
1907
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:agent</span>
@@ -2374,15 +1912,15 @@ browser.is_msie_v_gt_4_1_on_windows?
2374
1912
  <span class='id identifier rubyid_attr_accessor'>attr_accessor</span> <span class='symbol'>:platform</span>
2375
1913
 
2376
1914
  <span class='comment'># Aliases
2377
- </span> <span class='kw'>alias</span> <span class='symbol'>:ua</span> <span class='symbol'>:agent</span>
2378
- <span class='kw'>alias</span> <span class='symbol'>:ua=</span> <span class='symbol'>:agent=</span>
1915
+ </span> <span class='id identifier rubyid_alias_attribute'>alias_attribute</span> <span class='symbol'>:ua</span><span class='comma'>,</span> <span class='symbol'>:agent</span>
2379
1916
 
2380
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>General</span>
2381
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Attributes</span>
2382
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Register</span>
2383
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Parsing</span>
2384
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
2385
- <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>BrowserMethods</span><span class='op'>::</span><span class='const'>Querying</span>
1917
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>General</span>
1918
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Attributes</span>
1919
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>DefaultDefinitions</span>
1920
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Register</span>
1921
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Parsing</span>
1922
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>PartialQuerying</span>
1923
+ <span class='id identifier rubyid_include'>include</span> <span class='op'>::</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Browseable</span><span class='op'>::</span><span class='const'>Querying</span>
2386
1924
 
2387
1925
  <span class='comment'># Creates a new browser.
2388
1926
  </span> <span class='comment'>#
@@ -2400,6 +1938,16 @@ browser.is_msie_v_gt_4_1_on_windows?
2400
1938
  <span class='id identifier rubyid_parse_agent'>parse_agent</span><span class='lparen'>(</span><span class='ivar'>@agent</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='ivar'>@agent</span>
2401
1939
  <span class='kw'>end</span>
2402
1940
 
1941
+ <span class='comment'># Get the current browser version (if called without arguments) or checks if the browser is a specific version.
1942
+ </span> <span class='comment'>#
1943
+ </span> <span class='comment'># @see #is_version
1944
+ </span> <span class='comment'># @param versions [String|Hash] A string in the form `operator version &amp;&amp; ...` (example: `&gt;= 7 &amp;&amp; &lt; 4`) or an hash with specific version to match against,
1945
+ </span> <span class='comment'># in form `{:operator =&gt; version}`, where operator is one of `:lt, :lte, :eq, :gt, :gte`.
1946
+ </span> <span class='comment'># @return [String|Query] The browser version or a query which can evaluated for concatenation or result.
1947
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_version'>version</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
1948
+ <span class='op'>!</span><span class='id identifier rubyid_versions'>versions</span> <span class='op'>?</span> <span class='ivar'>@version</span> <span class='op'>:</span> <span class='id identifier rubyid_version_equals_to'>version_equals_to</span><span class='lparen'>(</span><span class='id identifier rubyid_versions'>versions</span><span class='rparen'>)</span>
1949
+ <span class='kw'>end</span>
1950
+
2403
1951
  <span class='comment'># This method enables the use of dynamic queries in just one method.
2404
1952
  </span> <span class='comment'>#
2405
1953
  </span> <span class='comment'># For example:
@@ -2418,78 +1966,25 @@ browser.is_msie_v_gt_4_1_on_windows?
2418
1966
  </span> <span class='comment'># @param block [Proc] A block to pass to the method. Unused from the query.
2419
1967
  </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
2420
1968
  </span> <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2421
- <span class='kw'>begin</span>
2422
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
2423
- <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
2424
- <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
2425
- <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
2426
- <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2427
- <span class='kw'>end</span>
1969
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_ensure_string'>ensure_string</span>
1970
+ <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query_s'>query_s</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>false</span><span class='rparen'>)</span>
1971
+ <span class='id identifier rubyid_query_s'>query_s</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span> <span class='op'>?</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span> <span class='op'>:</span> <span class='id identifier rubyid_rv'>rv</span>
1972
+ <span class='kw'>rescue</span> <span class='const'>NoMethodError</span>
1973
+ <span class='kw'>super</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_arguments'>arguments</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
2428
1974
  <span class='kw'>end</span>
2429
1975
 
2430
- <span class='comment'># Returns the current browser as a string.
2431
- </span> <span class='comment'>#
2432
- </span> <span class='comment'># @see #classes
1976
+ <span class='id identifier rubyid_private'>private</span>
1977
+
1978
+ <span class='comment'># Executes a parsed query
2433
1979
  </span> <span class='comment'>#
2434
- </span> <span class='comment'># @return [String] A string representation of the current browser.
2435
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
2436
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
1980
+ </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
1981
+ </span> <span class='comment'># @return [Brauser::Query] The result of the query.
1982
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
1983
+ <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
1984
+ <span class='kw'>break</span> <span class='kw'>unless</span> <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
1985
+ <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1986
+ <span class='rbrace'>}</span>
2437
1987
  <span class='kw'>end</span>
2438
-
2439
- <span class='id identifier rubyid_private'>private</span>
2440
- <span class='comment'># Parse query, getting all arguments.
2441
- </span> <span class='comment'>#
2442
- </span> <span class='comment'># @param query [String] The query to issue. Use `__` to separate query and `_` in place of `.` in the version.
2443
- </span> <span class='comment'># @return [Array] And array of `[method, arguments]` entries.
2444
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query'>parse_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
2445
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\?$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>(_(v|on|is))</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> \\2</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_part'>part</span><span class='op'>|</span>
2446
- <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
2447
- <span class='kw'>end</span>
2448
- <span class='kw'>end</span>
2449
-
2450
- <span class='comment'># Handles a part of a query.
2451
- </span> <span class='comment'>#
2452
- </span> <span class='comment'># @param part [String] A part of a query.
2453
- </span> <span class='comment'># @return [Boolean|Query|nil] A query or a boolean value (if `method` ends with `?`). If the query is not valid, `NoMethodError` will be raised.
2454
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_part'>parse_query_part</span><span class='lparen'>(</span><span class='id identifier rubyid_part'>part</span><span class='rparen'>)</span>
2455
- <span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_part'>part</span><span class='period'>.</span><span class='id identifier rubyid_split'>split</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='int'>2</span><span class='rparen'>)</span>
2456
-
2457
- <span class='kw'>if</span> <span class='id identifier rubyid_method'>method</span> <span class='op'>==</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>v</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>then</span>
2458
- <span class='id identifier rubyid_arguments'>arguments</span> <span class='op'>=</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_arguments'>arguments</span><span class='rparen'>)</span>
2459
- <span class='kw'>elsif</span> <span class='op'>!</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>is</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>on</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
2460
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NoMethodError</span>
2461
- <span class='kw'>end</span>
2462
-
2463
- <span class='lbracket'>[</span><span class='id identifier rubyid_method'>method</span><span class='comma'>,</span> <span class='id identifier rubyid_arguments'>arguments</span><span class='rbracket'>]</span>
2464
- <span class='kw'>end</span>
2465
-
2466
- <span class='comment'># Parses the version for a query.
2467
- </span> <span class='comment'>#
2468
- </span> <span class='comment'># @param version [String] The version to parse.
2469
- </span> <span class='comment'># @return [String] The parsed version.
2470
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_parse_query_version'>parse_query_version</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span>
2471
- <span class='lbracket'>[</span>
2472
- <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?eq_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> == </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse ==
2473
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;=
2474
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gte_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt;= </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;=
2475
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?lt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &lt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &lt;
2476
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?gt_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &gt; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &gt;
2477
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_?and_?</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> &amp;&amp; </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Parse &amp;&amp;
2478
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>_</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='comment'># Dot notation
2479
- </span> <span class='lbracket'>[</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\s+</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span>
2480
- <span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='id identifier rubyid_version'>version</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_current'>current</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='op'>|</span> <span class='id identifier rubyid_current'>current</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_parse'>parse</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span>
2481
- <span class='kw'>end</span>
2482
-
2483
- <span class='comment'># Executes a parsed query
2484
- </span> <span class='comment'>#
2485
- </span> <span class='comment'># @param query [Array] And array of `[method, arguments]` entries.
2486
- </span> <span class='comment'># @return [Brauser::Query] The result of the query.
2487
- </span> <span class='kw'>def</span> <span class='id identifier rubyid_execute_query'>execute_query</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='rparen'>)</span>
2488
- <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='const'>Brauser</span><span class='op'>::</span><span class='const'>Query</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='kw'>true</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_call'>call</span><span class='op'>|</span>
2489
- <span class='kw'>break</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_result'>result</span>
2490
- <span class='id identifier rubyid_rv'>rv</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_call'>call</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
2491
- <span class='rbrace'>}</span>
2492
- <span class='kw'>end</span>
2493
1988
  <span class='kw'>end</span></pre>
2494
1989
  </td>
2495
1990
  </tr>
@@ -2499,82 +1994,12 @@ browser.is_msie_v_gt_4_1_on_windows?
2499
1994
  </div>
2500
1995
 
2501
1996
 
2502
- <div id="instance_method_details" class="method_details_list">
2503
- <h2>Instance Method Details</h2>
2504
-
2505
-
2506
- <div class="method_details first">
2507
- <h3 class="signature first" id="to_s-instance_method">
2508
-
2509
- - (<tt>String</tt>) <strong>to_s</strong>
2510
-
2511
-
2512
-
2513
-
2514
-
2515
- </h3><div class="docstring">
2516
- <div class="discussion">
2517
- <p>Returns the current browser as a string.</p>
2518
-
2519
-
2520
- </div>
2521
- </div>
2522
- <div class="tags">
2523
-
2524
- <p class="tag_title">Returns:</p>
2525
- <ul class="return">
2526
-
2527
- <li>
2528
-
2529
-
2530
- <span class='type'>(<tt>String</tt>)</span>
2531
-
2532
-
2533
-
2534
- &mdash;
2535
- <div class='inline'><p>A string representation of the current browser.</p>
2536
- </div>
2537
-
2538
- </li>
2539
-
2540
- </ul>
2541
-
2542
- <p class="tag_title">See Also:</p>
2543
- <ul class="see">
2544
-
2545
- <li><span class='object_link'><a href="BrowserMethods/Attributes.html#classes-instance_method" title="Brauser::BrowserMethods::Attributes#classes (method)">Brauser::BrowserMethods::Attributes#classes</a></span></li>
2546
-
2547
- </ul>
2548
-
2549
- </div><table class="source_code">
2550
- <tr>
2551
- <td>
2552
- <pre class="lines">
2553
-
2554
-
2555
- 754
2556
- 755
2557
- 756</pre>
2558
- </td>
2559
- <td>
2560
- <pre class="code"><span class="info file"># File 'lib/brauser/browser.rb', line 754</span>
2561
-
2562
- <span class='kw'>def</span> <span class='id identifier rubyid_to_s'>to_s</span>
2563
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_classes'>classes</span>
2564
- <span class='kw'>end</span></pre>
2565
- </td>
2566
- </tr>
2567
- </table>
2568
- </div>
2569
-
2570
- </div>
2571
-
2572
1997
  </div>
2573
1998
 
2574
1999
  <div id="footer">
2575
- Generated on Sun Feb 16 13:57:07 2014 by
2000
+ Generated on Sat May 10 13:59:11 2014 by
2576
2001
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2577
- 0.8.7.3 (ruby-2.1.0).
2002
+ 0.8.7.4 (ruby-2.1.0).
2578
2003
  </div>
2579
2004
 
2580
2005
  </body>