brauser 3.3.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -0
  3. data/.travis-gemfile +4 -5
  4. data/.travis.yml +2 -2
  5. data/CHANGELOG.md +4 -0
  6. data/Gemfile +7 -8
  7. data/README.md +31 -95
  8. data/Rakefile +0 -1
  9. data/brauser.gemspec +4 -4
  10. data/default_definitions/browsers.rb +50 -0
  11. data/default_definitions/languages.rb +118 -0
  12. data/default_definitions/platforms.rb +24 -0
  13. data/doc/Brauser.html +6 -6
  14. data/doc/Brauser/Browser.html +3867 -580
  15. data/doc/Brauser/Definitions.html +537 -0
  16. data/doc/Brauser/Definitions/Base.html +342 -0
  17. data/doc/Brauser/Definitions/Browser.html +1047 -0
  18. data/doc/Brauser/Definitions/Language.html +496 -0
  19. data/doc/Brauser/Definitions/Platform.html +686 -0
  20. data/doc/Brauser/Hooks.html +2 -2
  21. data/doc/Brauser/Hooks/RubyOnRails.html +9 -9
  22. data/doc/Brauser/Parser.html +513 -0
  23. data/doc/Brauser/Value.html +601 -0
  24. data/doc/Brauser/Version.html +5 -5
  25. data/doc/_index.html +25 -108
  26. data/doc/class_list.html +1 -1
  27. data/doc/file.README.html +33 -97
  28. data/doc/index.html +33 -97
  29. data/doc/method_list.html +72 -120
  30. data/doc/top-level-namespace.html +2 -2
  31. data/lib/brauser.rb +13 -15
  32. data/lib/brauser/browser.rb +195 -66
  33. data/lib/brauser/definitions/base.rb +71 -0
  34. data/lib/brauser/definitions/browser.rb +80 -0
  35. data/lib/brauser/definitions/language.rb +29 -0
  36. data/lib/brauser/definitions/platform.rb +42 -0
  37. data/lib/brauser/hooks.rb +1 -2
  38. data/lib/brauser/parser.rb +47 -0
  39. data/lib/brauser/value.rb +39 -0
  40. data/lib/brauser/version.rb +3 -4
  41. data/spec/brauser/browser_spec.rb +73 -564
  42. data/spec/brauser/default_definitions_spec.rb +129 -0
  43. data/spec/brauser/definitions/base_spec.rb +48 -0
  44. data/spec/brauser/definitions/browser_spec.rb +47 -0
  45. data/spec/brauser/definitions/language_spec.rb +18 -0
  46. data/spec/brauser/definitions/platform_spec.rb +36 -0
  47. data/spec/brauser/hooks_spec.rb +5 -6
  48. data/spec/brauser/parser_spec.rb +31 -0
  49. data/spec/brauser/value_spec.rb +34 -0
  50. data/spec/coverage_helper.rb +0 -1
  51. data/spec/spec_helper.rb +0 -1
  52. metadata +50 -23
  53. data/lib/brauser/browseable/attributes.rb +0 -95
  54. data/lib/brauser/browseable/general.rb +0 -104
  55. data/lib/brauser/browseable/parsing.rb +0 -127
  56. data/lib/brauser/browseable/partial_querying.rb +0 -116
  57. data/lib/brauser/browseable/querying.rb +0 -63
  58. data/lib/brauser/browseable/register.rb +0 -73
  59. data/lib/brauser/definition.rb +0 -80
  60. data/lib/brauser/definitions/browsers.rb +0 -68
  61. data/lib/brauser/definitions/languages.rb +0 -130
  62. data/lib/brauser/definitions/platforms.rb +0 -30
  63. data/lib/brauser/query.rb +0 -36
  64. data/lib/brauser/queryable/chainers.rb +0 -56
  65. data/lib/brauser/queryable/queries.rb +0 -60
  66. data/spec/brauser/definition_spec.rb +0 -39
  67. data/spec/brauser/query_spec.rb +0 -111
@@ -119,7 +119,7 @@
119
119
 
120
120
  </div>
121
121
  </dt>
122
- <dd><pre class="code"><span class='int'>3</span></pre></dd>
122
+ <dd><pre class="code"><span class='int'>4</span></pre></dd>
123
123
 
124
124
  <dt id="MINOR-constant" class="">MINOR =
125
125
  <div class="docstring">
@@ -134,7 +134,7 @@
134
134
 
135
135
  </div>
136
136
  </dt>
137
- <dd><pre class="code"><span class='int'>3</span></pre></dd>
137
+ <dd><pre class="code"><span class='int'>0</span></pre></dd>
138
138
 
139
139
  <dt id="PATCH-constant" class="">PATCH =
140
140
  <div class="docstring">
@@ -149,7 +149,7 @@
149
149
 
150
150
  </div>
151
151
  </dt>
152
- <dd><pre class="code"><span class='int'>2</span></pre></dd>
152
+ <dd><pre class="code"><span class='int'>0</span></pre></dd>
153
153
 
154
154
  <dt id="STRING-constant" class="">STRING =
155
155
  <div class="docstring">
@@ -180,9 +180,9 @@
180
180
  </div>
181
181
 
182
182
  <div id="footer">
183
- Generated on Thu May 22 12:11:27 2014 by
183
+ Generated on Mon Sep 29 16:43:31 2014 by
184
184
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
185
- 0.8.7.4 (ruby-2.1.2).
185
+ 0.8.7.4 (ruby-2.1.3).
186
186
  </div>
187
187
 
188
188
  </body>
@@ -80,34 +80,19 @@
80
80
  <td valign='top' width="33%">
81
81
 
82
82
 
83
- <ul id="alpha_A" class="alpha">
84
- <li class="letter">A</li>
85
- <ul>
86
-
87
- <li>
88
- <span class='object_link'><a href="Brauser/Browseable/Attributes.html" title="Brauser::Browseable::Attributes (module)">Attributes</a></span>
89
-
90
- <small>(Brauser::Browseable)</small>
91
-
92
- </li>
93
-
94
- </ul>
95
- </ul>
96
-
97
-
98
83
  <ul id="alpha_B" class="alpha">
99
84
  <li class="letter">B</li>
100
85
  <ul>
101
86
 
102
87
  <li>
103
- <span class='object_link'><a href="Brauser.html" title="Brauser (module)">Brauser</a></span>
88
+ <span class='object_link'><a href="Brauser/Definitions/Base.html" title="Brauser::Definitions::Base (class)">Base</a></span>
89
+
90
+ <small>(Brauser::Definitions)</small>
104
91
 
105
92
  </li>
106
93
 
107
94
  <li>
108
- <span class='object_link'><a href="Brauser/Browseable.html" title="Brauser::Browseable (module)">Browseable</a></span>
109
-
110
- <small>(Brauser)</small>
95
+ <span class='object_link'><a href="Brauser.html" title="Brauser (module)">Brauser</a></span>
111
96
 
112
97
  </li>
113
98
 
@@ -118,32 +103,10 @@
118
103
 
119
104
  </li>
120
105
 
121
- </ul>
122
- </ul>
123
-
124
-
125
- <ul id="alpha_C" class="alpha">
126
- <li class="letter">C</li>
127
- <ul>
128
-
129
- <li>
130
- <span class='object_link'><a href="Brauser/Queryable/Chainers.html" title="Brauser::Queryable::Chainers (module)">Chainers</a></span>
131
-
132
- <small>(Brauser::Queryable)</small>
133
-
134
- </li>
135
-
136
- <li>
137
- <span class='object_link'><a href="Brauser/Browseable/General/ClassMethods.html" title="Brauser::Browseable::General::ClassMethods (module)">ClassMethods</a></span>
138
-
139
- <small>(Brauser::Browseable::General)</small>
140
-
141
- </li>
142
-
143
106
  <li>
144
- <span class='object_link'><a href="Brauser/Browseable/Register/ClassMethods.html" title="Brauser::Browseable::Register::ClassMethods (module)">ClassMethods</a></span>
107
+ <span class='object_link'><a href="Brauser/Definitions/Browser.html" title="Brauser::Definitions::Browser (class)">Browser</a></span>
145
108
 
146
- <small>(Brauser::Browseable::Register)</small>
109
+ <small>(Brauser::Definitions)</small>
147
110
 
148
111
  </li>
149
112
 
@@ -156,14 +119,7 @@
156
119
  <ul>
157
120
 
158
121
  <li>
159
- <span class='object_link'><a href="Brauser/Browseable/DefaultDefinitions.html" title="Brauser::Browseable::DefaultDefinitions (module)">DefaultDefinitions</a></span>
160
-
161
- <small>(Brauser::Browseable)</small>
162
-
163
- </li>
164
-
165
- <li>
166
- <span class='object_link'><a href="Brauser/Definition.html" title="Brauser::Definition (class)">Definition</a></span>
122
+ <span class='object_link'><a href="Brauser/Definitions.html" title="Brauser::Definitions (module)">Definitions</a></span>
167
123
 
168
124
  <small>(Brauser)</small>
169
125
 
@@ -173,21 +129,6 @@
173
129
  </ul>
174
130
 
175
131
 
176
- <ul id="alpha_G" class="alpha">
177
- <li class="letter">G</li>
178
- <ul>
179
-
180
- <li>
181
- <span class='object_link'><a href="Brauser/Browseable/General.html" title="Brauser::Browseable::General (module)">General</a></span>
182
-
183
- <small>(Brauser::Browseable)</small>
184
-
185
- </li>
186
-
187
- </ul>
188
- </ul>
189
-
190
-
191
132
  <ul id="alpha_H" class="alpha">
192
133
  <li class="letter">H</li>
193
134
  <ul>
@@ -203,21 +144,14 @@
203
144
  </ul>
204
145
 
205
146
 
206
- <ul id="alpha_P" class="alpha">
207
- <li class="letter">P</li>
147
+ <ul id="alpha_L" class="alpha">
148
+ <li class="letter">L</li>
208
149
  <ul>
209
150
 
210
151
  <li>
211
- <span class='object_link'><a href="Brauser/Browseable/Parsing.html" title="Brauser::Browseable::Parsing (module)">Parsing</a></span>
152
+ <span class='object_link'><a href="Brauser/Definitions/Language.html" title="Brauser::Definitions::Language (class)">Language</a></span>
212
153
 
213
- <small>(Brauser::Browseable)</small>
214
-
215
- </li>
216
-
217
- <li>
218
- <span class='object_link'><a href="Brauser/Browseable/PartialQuerying.html" title="Brauser::Browseable::PartialQuerying (module)">PartialQuerying</a></span>
219
-
220
- <small>(Brauser::Browseable)</small>
154
+ <small>(Brauser::Definitions)</small>
221
155
 
222
156
  </li>
223
157
 
@@ -225,38 +159,21 @@
225
159
  </ul>
226
160
 
227
161
 
228
- </td><td valign='top' width="33%">
229
-
230
-
231
- <ul id="alpha_Q" class="alpha">
232
- <li class="letter">Q</li>
162
+ <ul id="alpha_P" class="alpha">
163
+ <li class="letter">P</li>
233
164
  <ul>
234
165
 
235
166
  <li>
236
- <span class='object_link'><a href="Brauser/Queryable/Queries.html" title="Brauser::Queryable::Queries (module)">Queries</a></span>
237
-
238
- <small>(Brauser::Queryable)</small>
239
-
240
- </li>
241
-
242
- <li>
243
- <span class='object_link'><a href="Brauser/Query.html" title="Brauser::Query (class)">Query</a></span>
244
-
245
- <small>(Brauser)</small>
246
-
247
- </li>
248
-
249
- <li>
250
- <span class='object_link'><a href="Brauser/Queryable.html" title="Brauser::Queryable (module)">Queryable</a></span>
167
+ <span class='object_link'><a href="Brauser/Parser.html" title="Brauser::Parser (class)">Parser</a></span>
251
168
 
252
169
  <small>(Brauser)</small>
253
170
 
254
171
  </li>
255
172
 
256
173
  <li>
257
- <span class='object_link'><a href="Brauser/Browseable/Querying.html" title="Brauser::Browseable::Querying (module)">Querying</a></span>
174
+ <span class='object_link'><a href="Brauser/Definitions/Platform.html" title="Brauser::Definitions::Platform (class)">Platform</a></span>
258
175
 
259
- <small>(Brauser::Browseable)</small>
176
+ <small>(Brauser::Definitions)</small>
260
177
 
261
178
  </li>
262
179
 
@@ -268,13 +185,6 @@
268
185
  <li class="letter">R</li>
269
186
  <ul>
270
187
 
271
- <li>
272
- <span class='object_link'><a href="Brauser/Browseable/Register.html" title="Brauser::Browseable::Register (module)">Register</a></span>
273
-
274
- <small>(Brauser::Browseable)</small>
275
-
276
- </li>
277
-
278
188
  <li>
279
189
  <span class='object_link'><a href="Brauser/Hooks/RubyOnRails.html" title="Brauser::Hooks::RubyOnRails (module)">RubyOnRails</a></span>
280
190
 
@@ -290,6 +200,13 @@
290
200
  <li class="letter">V</li>
291
201
  <ul>
292
202
 
203
+ <li>
204
+ <span class='object_link'><a href="Brauser/Value.html" title="Brauser::Value (class)">Value</a></span>
205
+
206
+ <small>(Brauser)</small>
207
+
208
+ </li>
209
+
293
210
  <li>
294
211
  <span class='object_link'><a href="Brauser/Version.html" title="Brauser::Version (module)">Version</a></span>
295
212
 
@@ -309,9 +226,9 @@
309
226
  </div>
310
227
 
311
228
  <div id="footer">
312
- Generated on Thu May 22 12:11:27 2014 by
229
+ Generated on Mon Sep 29 16:43:31 2014 by
313
230
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
314
- 0.8.7.4 (ruby-2.1.2).
231
+ 0.8.7.4 (ruby-2.1.3).
315
232
  </div>
316
233
 
317
234
  </body>
@@ -46,7 +46,7 @@
46
46
 
47
47
  <ul id="full_list" class="class">
48
48
  <li><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></li>
49
- <li><a class='toggle'></a> <span class='object_link'><a href="Brauser.html" title="Brauser (module)">Brauser</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Browseable.html" title="Brauser::Browseable (module)">Browseable</a></span><small class='search_info'>Brauser</small></li><ul><li><span class='object_link'><a href="Brauser/Browseable/Attributes.html" title="Brauser::Browseable::Attributes (module)">Attributes</a></span><small class='search_info'>Brauser::Browseable</small></li><li><span class='object_link'><a href="Brauser/Browseable/DefaultDefinitions.html" title="Brauser::Browseable::DefaultDefinitions (module)">DefaultDefinitions</a></span><small class='search_info'>Brauser::Browseable</small></li><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Browseable/General.html" title="Brauser::Browseable::General (module)">General</a></span><small class='search_info'>Brauser::Browseable</small></li><ul><li><span class='object_link'><a href="Brauser/Browseable/General/ClassMethods.html" title="Brauser::Browseable::General::ClassMethods (module)">ClassMethods</a></span><small class='search_info'>Brauser::Browseable::General</small></li></ul><li><span class='object_link'><a href="Brauser/Browseable/Parsing.html" title="Brauser::Browseable::Parsing (module)">Parsing</a></span><small class='search_info'>Brauser::Browseable</small></li><li><span class='object_link'><a href="Brauser/Browseable/PartialQuerying.html" title="Brauser::Browseable::PartialQuerying (module)">PartialQuerying</a></span><small class='search_info'>Brauser::Browseable</small></li><li><span class='object_link'><a href="Brauser/Browseable/Querying.html" title="Brauser::Browseable::Querying (module)">Querying</a></span><small class='search_info'>Brauser::Browseable</small></li><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Browseable/Register.html" title="Brauser::Browseable::Register (module)">Register</a></span><small class='search_info'>Brauser::Browseable</small></li><ul><li><span class='object_link'><a href="Brauser/Browseable/Register/ClassMethods.html" title="Brauser::Browseable::Register::ClassMethods (module)">ClassMethods</a></span><small class='search_info'>Brauser::Browseable::Register</small></li></ul></ul><li><span class='object_link'><a href="Brauser/Browser.html" title="Brauser::Browser (class)">Browser</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><span class='object_link'><a href="Brauser/Definition.html" title="Brauser::Definition (class)">Definition</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Hooks.html" title="Brauser::Hooks (module)">Hooks</a></span><small class='search_info'>Brauser</small></li><ul><li><span class='object_link'><a href="Brauser/Hooks/RubyOnRails.html" title="Brauser::Hooks::RubyOnRails (module)">RubyOnRails</a></span><small class='search_info'>Brauser::Hooks</small></li></ul><li><span class='object_link'><a href="Brauser/Query.html" title="Brauser::Query (class)">Query</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Queryable.html" title="Brauser::Queryable (module)">Queryable</a></span><small class='search_info'>Brauser</small></li><ul><li><span class='object_link'><a href="Brauser/Queryable/Chainers.html" title="Brauser::Queryable::Chainers (module)">Chainers</a></span><small class='search_info'>Brauser::Queryable</small></li><li><span class='object_link'><a href="Brauser/Queryable/Queries.html" title="Brauser::Queryable::Queries (module)">Queries</a></span><small class='search_info'>Brauser::Queryable</small></li></ul><li><span class='object_link'><a href="Brauser/Version.html" title="Brauser::Version (module)">Version</a></span><small class='search_info'>Brauser</small></li></ul>
49
+ <li><a class='toggle'></a> <span class='object_link'><a href="Brauser.html" title="Brauser (module)">Brauser</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="Brauser/Browser.html" title="Brauser::Browser (class)">Browser</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Definitions.html" title="Brauser::Definitions (module)">Definitions</a></span><small class='search_info'>Brauser</small></li><ul><li><span class='object_link'><a href="Brauser/Definitions/Base.html" title="Brauser::Definitions::Base (class)">Base</a></span> &lt; Object<small class='search_info'>Brauser::Definitions</small></li><li><span class='object_link'><a href="Brauser/Definitions/Browser.html" title="Brauser::Definitions::Browser (class)">Browser</a></span> &lt; Base<small class='search_info'>Brauser::Definitions</small></li><li><span class='object_link'><a href="Brauser/Definitions/Language.html" title="Brauser::Definitions::Language (class)">Language</a></span> &lt; Base<small class='search_info'>Brauser::Definitions</small></li><li><span class='object_link'><a href="Brauser/Definitions/Platform.html" title="Brauser::Definitions::Platform (class)">Platform</a></span> &lt; Base<small class='search_info'>Brauser::Definitions</small></li></ul><li><a class='toggle'></a> <span class='object_link'><a href="Brauser/Hooks.html" title="Brauser::Hooks (module)">Hooks</a></span><small class='search_info'>Brauser</small></li><ul><li><span class='object_link'><a href="Brauser/Hooks/RubyOnRails.html" title="Brauser::Hooks::RubyOnRails (module)">RubyOnRails</a></span><small class='search_info'>Brauser::Hooks</small></li></ul><li><span class='object_link'><a href="Brauser/Parser.html" title="Brauser::Parser (class)">Parser</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><span class='object_link'><a href="Brauser/Value.html" title="Brauser::Value (class)">Value</a></span> &lt; Object<small class='search_info'>Brauser</small></li><li><span class='object_link'><a href="Brauser/Version.html" title="Brauser::Version (module)">Version</a></span><small class='search_info'>Brauser</small></li></ul>
50
50
 
51
51
  </ul>
52
52
  </div>
@@ -72,7 +72,7 @@
72
72
 
73
73
  <p>A framework agnostic browser detection and querying helper.</p>
74
74
 
75
- <p>http://sw.cow.tc/brauser</p>
75
+ <p>http://sw.cowtech.it/brauser</p>
76
76
 
77
77
  <p>http://rdoc.info/gems/brauser</p>
78
78
 
@@ -82,7 +82,7 @@
82
82
 
83
83
  <h3 id="installation">Installation</h3>
84
84
 
85
- <p>Brauser comes with a Ruby on Rails hooks (more framework to follow), so for Rails you have just to add this to your Gemfile:</p>
85
+ <p>Brauser comes with a Ruby on Rails hooks (more frameworks to follow), so for Rails you have just to add this to your Gemfile:</p>
86
86
 
87
87
  <p><code>ruby
88
88
  gem "brauser"
@@ -102,11 +102,15 @@ browser = Brauser::Browser.new(USER_AGENT_HEADER, ACCEPT_LANGUAGE_HEADER)
102
102
 
103
103
  <h3 id="getting-browser-information">Getting browser information</h3>
104
104
 
105
- <p>Once you instantiate the browser, you can query the browser about <code>name</code>, <code>version</code> and <code>platform</code>. You can also get readable name and platforms via <code>readable_name</code> and <code>platform_name</code>.</p>
105
+ <p>Once you instantiate the browser, you can query the browser about <code>name</code>, <code>version</code>, <code>platform</code>, <code>languages</code>. </p>
106
106
 
107
- <p>The version is returned as a <code>String</code>, and you can use <code>Brauser::Browser.compare_versions</code> to compare against another version.</p>
107
+ <p>You can also get readable name and platforms via <code>human_name</code>, <code>human_platform</code>, <code>human_languages</code>.</p>
108
108
 
109
- <p>The name and the platform are returned as <code>Symbol</code> and can be in the range of names and engines registered via <code>register_browser</code>, <code>register_default_browsers</code>, <code>register_platform</code> and <code>register_default_platforms</code>.</p>
109
+ <p>The version is handle via the <a href="http://dazuma.github.io/versionomy/">versionomy</a> gem.</p>
110
+
111
+ <p>The name and the platform are returned as <code>Symbol</code> and can be in the range of names and engines registered via <code>Brauser::Definitions.register</code>.</p>
112
+
113
+ <p>The languages are returned as an hash where values are the priorities.</p>
110
114
 
111
115
  <p>Also, you can get global information using <code>browser.to_s</code> or <code>browser.classes</code>. This will return an array or a string already formatted to be used in your views to scope your CSS.</p>
112
116
 
@@ -128,126 +132,58 @@ browser = Brauser::Browser.new(USER_AGENT_HEADER, ACCEPT_LANGUAGE_HEADER)
128
132
 
129
133
  <h3 id="querying-the-browser">Querying the browser</h3>
130
134
 
131
- <p>Brauser supports querying about name (method <code>is</code>), version (method <code>v</code>), platform (method <code>on</code>) and language (method <code>accepts</code>).</p>
135
+ <p>Brauser supports querying about name, version, platform, language.</p>
132
136
 
133
- <p>The <code>is</code> method queries about a browser name (or a list of names) and optionally by version and platform:</p>
137
+ <p>name and platform support querying via the <code>==</code> operator, which supports a single value or a list of values. </p>
134
138
 
135
139
  <p><code>ruby
136
140
  # We talk about the ending ? later.
137
- browser.is?(:chrome)
141
+ browser.name == :chrome
138
142
  # =&gt; true
139
- browser.is?([:msie, :firefox])
140
- # =&gt; false
141
- browser.is?(:chrome, {lt: "2"}, :osx)
142
- # =&gt; true
143
- browser.is?(:chrome, "&gt;= 3", :windows)
143
+ browser.name == [:msie, :firefox]
144
144
  # =&gt; false
145
145
  </code></p>
146
146
 
147
- <p>The method <code>is</code> is the only which supports direct internal propagation to version and platform.</p>
148
-
149
- <p>The <code>version</code> (short: <code>v</code>) method queries about the browser version. You can specify the comparison with an hash or a little expression.</p>
150
-
151
- <p>In the case of hash, the syntax is <code>{:operator =&gt; value}</code>, where <code>:operator</code> is one of <code>[:lt, :lte, :eq, :gte, :gt]</code> and value can be a Float or a String.</p>
152
-
153
- <p>In the case of expression, the syntax is <code>OPERATOR VALUE &amp;&amp; ..</code>, where <code>OPERATOR</code> is one of <code>["&lt;", "&lt;=", "=", "==", "&gt;=", "&gt;"]</code> and value specifies the version.</p>
154
-
155
- <p>Examples:</p>
147
+ <p>The version is delegated to the versionomy gem. You can use comparison operator. The right hand part must be either a <code>String</code> or a <code>Versionomy::Value</code>.</p>
156
148
 
157
149
  <p><code>ruby
158
- # Those two methods are equivalent.
159
- browser.version?({lt: "2", gt: 1})
160
- # =&gt; true
161
- browser.is?("&lt; 2 &amp;&amp; &gt; 1")
150
+ browser.version == "3"
151
+ # =&gt; false
152
+ browser.version &gt;= "2"
162
153
  # =&gt; true
163
154
  </code></p>
164
155
 
165
- <p>The method <code>on</code> check is the current browser in one of the specified platform. The platform should be passed as <code>Symbol</code>.</p>
156
+ <p>The language support querying via the <code>accepts?</code> method, which supports a single value or a list of values.</p>
166
157
 
167
158
  <p><code>ruby
168
- browser.on?(:osx)
159
+ browser.accepts?(:it)
169
160
  # =&gt; true
170
- browser.on?([:windows, :ios])
171
- # =&gt; false
172
- </code></p>
173
-
174
- <p>At the end, the method <code>accepts</code> checks if the browser accepts one of the specified languages. Languages should be passed as language codes in <code>String</code>.</p>
175
-
176
- <p><code>ruby
177
- browser.accepts?("en")
161
+ browser.accepts?(:it, :en)
178
162
  # =&gt; true
179
- browser.accepts?(["de", "es"])
180
- # =&gt; false
181
163
  </code></p>
182
164
 
183
- <p>Every query method exists in two forms: the concatenation one (the method name doesn’t end with a <code>?</code>.</p>
184
-
185
- <p>The former return a <code>Query</code> object, which supports the same query method of the browser and thus enables concatenation.</p>
186
-
187
- <p>The latter return a boolean object, and it’s equivalent to calling <code>result</code> on the query after concatenation.</p>
188
-
189
- <p>Ideally, you should use the <code>?</code> version to end the query and fetch the result.</p>
165
+ <p>All the querying can be combined in the single method <code>is?</code>:</p>
190
166
 
191
167
  <p><code>ruby
192
- # These expressions are equivalent.
193
- browser.is?(:chrome, {lt: "2"}, :osx)
194
- browser.is(:chrome, {lt: "2"}, :osx).result
195
- browser.is(:chrome).version({lt: "2"}).on?(:osx)
196
- browser.is(:chrome).version({lt: "2"}).on(:osx).result
168
+ browser.is?(name: :chrome, version: "&gt;= 4", platform: [:osx, :windows], languages: :it)
169
+ # =&gt; false
197
170
  </code></p>
198
171
 
199
- <p>Finally, Brauser support dynamic query operator to write simple queries without using concatenation.</p>
172
+ <p>Name, platform and languages can be either symbols or array of symbols. Version must be a query in the form is <code>OPERATOR VALUE &amp;&amp; ..</code>,
173
+ where <code>OPERATOR</code> is one of <code>["&lt;", "&lt;=", "=", "==", "&gt;=", "&gt;"]</code> and value specifies the version.</p>
200
174
 
201
- <p>You construct the method just using operator specified above, separating method name and method arguments with a <code>_</code>.</p>
175
+ <h3 id="adding-new-browsers-platform-and-languages">Adding new browsers, platform and languages.</h3>
202
176
 
203
- <p>For the version, use the expression form but use symbol operators and replace <code>.</code> with <code>_</code> and <code>&amp;&amp;</code> with <code>and</code>.</p>
177
+ <p>To add new browsers, simply call <code>::Brauser::Definitions.register(:browser, :id, ...)</code>.</p>
204
178
 
205
- <p>Example:</p>
206
-
207
- <p>```ruby
208
- # These expressions are equivalent.
209
- browser.is(:chrome).version(“&lt; 2 &amp;&amp; &gt; 1.2”).on(:osx).result
210
- browser.is_chrome_v_lt_2_and_gt_1_2_on_osx.result</p>
211
-
212
- <h1 id="these-expressions-are-equivalent">These expressions are equivalent.</h1>
213
- <p>browser.is(:chrome).version(“&lt; 2 &amp;&amp; &gt; 1.2”).on?(:osx)
214
- browser.is_chrome_v_lt_2_and_gt_1_2_on_osx?
215
- ```</p>
216
-
217
- <h3 id="adding-new-browsers">Adding new browsers</h3>
218
-
219
- <p>To add new browsers, simply call <code>::Brauser::Browser.add(:browsers, ...)</code>.</p>
220
-
221
- <p>This methods accepts a single instance or an array of instances of the <code>::Brauser::Definition</code> class.</p>
179
+ <p>The first argument can be <code>:browser</code>, <code>:platform</code> or <code>:language</code>.
180
+ The second argument is the id of the definition.
181
+ The remaining argument will be passed to the definition constructor.</p>
222
182
 
223
183
  <p>For example, for Google Chrome the call should be:</p>
224
184
 
225
185
  <p><code>ruby
226
- Brauser::Browsers.add(:browsers, ::Brauser::Definition.new(:chrome, "Chrome", /((chrome)|(chromium))/i, /(.+Chrom[a-z]+\/)([a-z0-9.]+)/i))
227
- </code></p>
228
-
229
- <h3 id="adding-new-platforms">Adding new platforms</h3>
230
-
231
- <p>To add new platforms, simply call <code>::Brauser::Browser.add(:platforms, ...)</code>.</p>
232
-
233
- <p>This methods accepts a single instance or an array of instances of the <code>::Brauser::Definition</code> class.</p>
234
-
235
- <p>For example, for Mac OS X the call should be:</p>
236
-
237
- <p><code>ruby
238
- Brauser::Browsers.add(:platforms, ::Brauser::Definition.new(:osx, /mac|macintosh|mac os x/i, "Apple MacOS X"))
239
- </code></p>
240
-
241
- <h3 id="adding-new-languages">Adding new languages</h3>
242
-
243
- <p>To add new languages, simply call <code>::Brauser::Browser.add(:languages, ...)</code>.</p>
244
-
245
- <p>This methods accepts a single instance or an array of instances of the <code>::Brauser::Definition</code> class.</p>
246
-
247
- <p>For example, for Italian the call should be:</p>
248
-
249
- <p><code>ruby
250
- Brauser::Browsers.add(:languages, ::Brauser::Definition.new(:it, "Italian"))
186
+ Brauser::Definitions.register(:browsers, :chrome, "Chrome", /((chrome)|(chromium))/i, /(.+Chrom[a-z]+\/)([a-z0-9.]+)/i)
251
187
  </code></p>
252
188
 
253
189
  <h2 id="contributing-to-brauser">Contributing to brauser</h2>
@@ -270,9 +206,9 @@ Brauser::Browsers.add(:languages, ::Brauser::Definition.new(:it, "Italian"))
270
206
  </div></div>
271
207
 
272
208
  <div id="footer">
273
- Generated on Thu May 22 12:11:27 2014 by
209
+ Generated on Mon Sep 29 16:43:31 2014 by
274
210
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
275
- 0.8.7.4 (ruby-2.1.2).
211
+ 0.8.7.4 (ruby-2.1.3).
276
212
  </div>
277
213
 
278
214
  </body>