bauxite 0.4.4 → 0.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad6f39851c2d5a2d9186196386a97410f60bd80b
4
- data.tar.gz: a999b7702a1fc7123d47192c3866a895e9549c0c
3
+ metadata.gz: b814f19ff06421cccdeaeaf132a5977ec7db4e8f
4
+ data.tar.gz: 99a5eeab70836e91ae71e4d46a6cafba25b1e2a4
5
5
  SHA512:
6
- metadata.gz: f10313053b755c6571617830b57e6c2f2aa6ed77777ae387f2de1195caaa87dcf7c46d34384b0e4b02516b7d4dcd490b739c6d3ebad34fa5febe1ef8d10208cd
7
- data.tar.gz: 46c2a0b19947135e0ef37f2cb72262d60c7c27fe045e8c2b4c53125e6479e4c2eb56ac8f74c635ddd69d957d17d6640f33a97ef86d9a1c4333d1fa2bc602996d
6
+ metadata.gz: bf31de624cb941fc831973d51adee95b78632e87ff75cf4ff01a818a2f85aaab7312de68b68eef282dd1ef30a3b92e75baf13d12e6346b76ca47ed1b8a5dbe47
7
+ data.tar.gz: e4f7a6a65891bd76a3428b61457a488fd3ef3b624a7132e3cd822f94a1fc9697434bb821ad6aca6a9397d185ab7c900baf7bfcaa710e6f7678556ba70a12f501
data/README.md CHANGED
@@ -254,3 +254,87 @@ Now we can change our test to look like this:
254
254
  Finally, to execute Bauxite loading our plugin we can type:
255
255
 
256
256
  bauxite -e plugins my_test.bxt
257
+
258
+ Jenkins Integration
259
+ -------------------
260
+
261
+ If you want to run Bauxite tests in your [Jenkins CI](http://jenkins-ci.org/) server you must install `xvfb` and `selenium-server-standalone`. Googling for `selenium headless jenkins <your distro>` is a great start. Assuming you installed Ruby and Bauxite for the `jenkins` user (see the instructions above), you can create an execute shell build task with the following text:
262
+
263
+ #!/bin/bash
264
+ source ~/.rvm/scripts/rvm
265
+ bauxite -l echo -u http://localhost:4444/wd/hub \
266
+ -t 60 -o 240 --csv-summary "$WORKSPACE/test.csv" \
267
+ "$WORKSPACE/test/suite.bxt"
268
+
269
+ Assuming you have Selenium Server running on localhost and your workspace (e.g. GIT repo) contains a folder named `test` with a file named `suite.bxt` the configuration above should work like a charm.
270
+
271
+ `suite.bxt` could be something like:
272
+
273
+ # === suite.bxt === #
274
+ test login.bxt
275
+ test register.bxt
276
+ test browse_arround.bxt
277
+ test purchase_something.bxt
278
+ # more tests here...
279
+
280
+ Note the `--csv-summary` option in the configuration above. That option generates a single-ling CSV file ideal to feed the `Plot` Jenkins plugin. I won't go into the details of configuring the Plot plugin, but instead here is a fragment of a possible Jenkins config.xml plotting the Bauxite test results:
281
+
282
+ <publishers>
283
+ ...
284
+ <hudson.plugins.plot.PlotPublisher plugin="plot@1.5">
285
+ <plots>
286
+ <hudson.plugins.plot.Plot>
287
+ <title>Number of tests</title>
288
+ <yaxis>Number of tests</yaxis>
289
+ <series>
290
+ <hudson.plugins.plot.CSVSeries>
291
+ <file>test.csv</file>
292
+ <label></label>
293
+ <fileType>csv</fileType>
294
+ <strExclusionSet>
295
+ <string>OK</string>
296
+ <string>Failed</string>
297
+ <string>Total</string>
298
+ </strExclusionSet>
299
+ <inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
300
+ <exclusionValues>Total,OK,Failed</exclusionValues>
301
+ <url></url>
302
+ <displayTableFlag>false</displayTableFlag>
303
+ </hudson.plugins.plot.CSVSeries>
304
+ </series>
305
+ <group>Test</group>
306
+ <numBuilds>100</numBuilds>
307
+ <csvFileName>1620406039.csv</csvFileName>
308
+ <csvLastModification>0</csvLastModification>
309
+ <style>line</style>
310
+ <useDescr>false</useDescr>
311
+ </hudson.plugins.plot.Plot>
312
+ <hudson.plugins.plot.Plot>
313
+ <title>Test Execution Time</title>
314
+ <yaxis>Test time (s)</yaxis>
315
+ <series>
316
+ <hudson.plugins.plot.CSVSeries>
317
+ <file>test.csv</file>
318
+ <label></label>
319
+ <fileType>csv</fileType>
320
+ <strExclusionSet>
321
+ <string>Time</string>
322
+ </strExclusionSet>
323
+ <inclusionFlag>INCLUDE_BY_STRING</inclusionFlag>
324
+ <exclusionValues>Time</exclusionValues>
325
+ <url></url>
326
+ <displayTableFlag>false</displayTableFlag>
327
+ </hudson.plugins.plot.CSVSeries>
328
+ </series>
329
+ <group>Test</group>
330
+ <numBuilds>100</numBuilds>
331
+ <csvFileName>336296054.csv</csvFileName>
332
+ <csvLastModification>0</csvLastModification>
333
+ <style>line</style>
334
+ <useDescr>false</useDescr>
335
+ </hudson.plugins.plot.Plot>
336
+ </plots>
337
+ </hudson.plugins.plot.PlotPublisher>
338
+ ...
339
+ </publishers>
340
+
data/doc/Bauxite.html CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  <footer id="validator-badges" role="contentinfo">
96
96
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
97
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
97
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
98
98
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
99
99
  </footer>
100
100
 
@@ -111,6 +111,8 @@
111
111
 
112
112
  <li ><a href="#method-i-exec">#exec</a>
113
113
 
114
+ <li ><a href="#method-i-failif">#failif</a>
115
+
114
116
  <li ><a href="#method-i-js">#js</a>
115
117
 
116
118
  <li ><a href="#method-i-load">#load</a>
@@ -690,6 +692,74 @@ results of the execution will be assigned to the variable named
690
692
 
691
693
 
692
694
 
695
+ </div>
696
+
697
+
698
+ <div id="method-i-failif" class="method-detail ">
699
+
700
+ <div class="method-heading">
701
+ <span class="method-name">failif</span><span
702
+ class="method-args">(action, *args)</span>
703
+
704
+ <span class="method-click-advice">click to toggle source</span>
705
+
706
+ </div>
707
+
708
+
709
+ <div class="method-description">
710
+
711
+ <p>Executes the specified <code>action</code> expected to fail. If
712
+ <code>action</code> succeeds the <a
713
+ href="Action.html#method-i-failif">failif</a> action fails. If
714
+ <code>action</code> fails, <a href="Action.html#method-i-failif">failif</a>
715
+ succeeds.</p>
716
+
717
+ <p><a href="Action.html#method-i-failif">failif</a> effectively negates the
718
+ value of <code>action</code>. Note that this method is intended to negate
719
+ assertions (e.g. <a href="Action.html#method-i-assert">assert</a>, <a
720
+ href="Action.html#method-i-assertv">assertv</a>, <a
721
+ href="Action.html#method-i-source">source</a>, etc.). The behavior when
722
+ applied to other actions (e.g. <a
723
+ href="Action.html#method-i-load">load</a>, <a
724
+ href="Action.html#method-i-ruby">ruby</a>, <a
725
+ href="Action.html#method-i-test">test</a>, etc.) is undefined.</p>
726
+
727
+ <p>For example:</p>
728
+
729
+ <pre class="ruby"><span class="ruby-comment"># assuming &lt;input type=&quot;text&quot; id=&quot;hello&quot; value=&quot;world&quot; /&gt;</span>
730
+ <span class="ruby-identifier">assert</span> <span class="ruby-identifier">hello</span> <span class="ruby-identifier">world</span>
731
+ <span class="ruby-identifier">failif</span> <span class="ruby-identifier">assert</span> <span class="ruby-identifier">hello</span> <span class="ruby-identifier">universe</span>
732
+ <span class="ruby-identifier">failif</span> <span class="ruby-identifier">assertv</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">false</span>
733
+ <span class="ruby-comment"># =&gt; these assertions would pass</span>
734
+ </pre>
735
+
736
+
737
+
738
+
739
+ <div class="method-source-code" id="failif-source">
740
+ <pre><span class="ruby-comment"># File lib/bauxite/actions/failif.rb, line 40</span>
741
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">failif</span>(<span class="ruby-identifier">action</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
742
+ <span class="ruby-identifier">action</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">get_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">variables</span>[<span class="ruby-string">&#39;__FILE__&#39;</span>], <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">variables</span>[<span class="ruby-string">&#39;__LINE__&#39;</span>])
743
+
744
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">with_timeout</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span> <span class="ruby-keyword">do</span>
745
+ <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">with_vars</span>({ <span class="ruby-string">&#39;__TIMEOUT__&#39;</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>}) <span class="ruby-keyword">do</span>
746
+ <span class="ruby-keyword">begin</span>
747
+ <span class="ruby-identifier">ret</span> = <span class="ruby-ivar">@ctx</span>.<span class="ruby-identifier">exec_action_object</span>(<span class="ruby-identifier">action</span>)
748
+ <span class="ruby-identifier">ret</span>.<span class="ruby-identifier">call</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">ret</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-value">:call</span>
749
+ <span class="ruby-keyword">rescue</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>
750
+ <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span>
751
+ <span class="ruby-keyword">end</span>
752
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">Bauxite</span><span class="ruby-operator">::</span><span class="ruby-constant">Errors</span><span class="ruby-operator">::</span><span class="ruby-constant">AssertionError</span>, <span class="ruby-node">&quot;Assertion did not failed as expected:#{action.text}&quot;</span>
753
+ <span class="ruby-keyword">end</span>
754
+ <span class="ruby-keyword">end</span>
755
+ <span class="ruby-keyword">end</span></pre>
756
+ </div>
757
+
758
+ </div>
759
+
760
+
761
+
762
+
693
763
  </div>
694
764
 
695
765
 
@@ -1563,7 +1633,7 @@ href="Context.html#method-i-expand">Bauxite::Context#expand</a>).</p>
1563
1633
 
1564
1634
  <footer id="validator-badges" role="contentinfo">
1565
1635
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
1566
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
1636
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
1567
1637
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
1568
1638
  </footer>
1569
1639
 
@@ -336,7 +336,7 @@ might yield different results.</p>
336
336
 
337
337
  <footer id="validator-badges" role="contentinfo">
338
338
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
339
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
339
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
340
340
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
341
341
  </footer>
342
342
 
@@ -253,7 +253,7 @@ indicates success).</p>
253
253
 
254
254
  <footer id="validator-badges" role="contentinfo">
255
255
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
256
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
256
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
257
257
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
258
258
  </footer>
259
259
 
@@ -123,12 +123,16 @@
123
123
 
124
124
  <li ><a href="#method-i-exec_action">#exec_action</a>
125
125
 
126
+ <li ><a href="#method-i-exec_action_object">#exec_action_object</a>
127
+
126
128
  <li ><a href="#method-i-exec_file">#exec_file</a>
127
129
 
128
130
  <li ><a href="#method-i-expand">#expand</a>
129
131
 
130
132
  <li ><a href="#method-i-find">#find</a>
131
133
 
134
+ <li ><a href="#method-i-get_action">#get_action</a>
135
+
132
136
  <li ><a href="#method-i-get_value">#get_value</a>
133
137
 
134
138
  <li ><a href="#method-i-handle_errors">#handle_errors</a>
@@ -630,7 +634,7 @@ href="Context.html#method-i-stop">stop</a>).</p>
630
634
  <span class="ruby-string">&#39;click &quot;name=sa&quot;&#39;</span>,
631
635
  <span class="ruby-string">&#39;break&#39;</span>
632
636
  ]
633
- <span class="ruby-identifier">ctx</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">lines</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">ctx</span>.<span class="ruby-identifier">parse_action</span>(<span class="ruby-identifier">l</span>) })
637
+ <span class="ruby-identifier">ctx</span>.<span class="ruby-identifier">start</span>(<span class="ruby-identifier">lines</span>)
634
638
  <span class="ruby-comment"># =&gt; navigates to www.ruby-lang.org, types ljust in the search box</span>
635
639
  <span class="ruby-comment"># and clicks the &quot;Search&quot; button.</span>
636
640
  </pre>
@@ -971,6 +975,58 @@ behavior).</p>
971
975
 
972
976
 
973
977
 
978
+ </div>
979
+
980
+
981
+ <div id="method-i-exec_action_object" class="method-detail ">
982
+
983
+ <div class="method-heading">
984
+ <span class="method-name">exec_action_object</span><span
985
+ class="method-args">(action)</span>
986
+
987
+ <span class="method-click-advice">click to toggle source</span>
988
+
989
+ </div>
990
+
991
+
992
+ <div class="method-description">
993
+
994
+ <p>Executes the specified action object injecting built-in variables. Note
995
+ that the result returned by this method might be a lambda. If this is the
996
+ case, a further <code>call</code> method must be issued.</p>
997
+
998
+ <p>This method if part of the action execution chain and is intended for
999
+ advanced use (e.g. in complex actions). To execute an <a
1000
+ href="Action.html">Action</a> directly, the <a
1001
+ href="Context.html#method-i-exec_action">exec_action</a> method is
1002
+ preferred.</p>
1003
+
1004
+ <p>For example:</p>
1005
+
1006
+ <pre>action = ctx.get_action(&quot;echo&quot;, [&#39;Hi!&#39;], &#39;echo &quot;Hi!&quot;&#39;)
1007
+ ret = ctx.exec_action_object(action)
1008
+ ret.call if ret.respond_to? :call</pre>
1009
+
1010
+
1011
+
1012
+
1013
+ <div class="method-source-code" id="exec_action_object-source">
1014
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 488</span>
1015
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">exec_action_object</span>(<span class="ruby-identifier">action</span>)
1016
+ <span class="ruby-comment"># Inject built-in variables</span>
1017
+ <span class="ruby-identifier">file</span> = <span class="ruby-identifier">action</span>.<span class="ruby-identifier">file</span>
1018
+ <span class="ruby-identifier">dir</span> = (<span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span> <span class="ruby-identifier">file</span>) <span class="ruby-operator">?</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">file</span>) <span class="ruby-operator">:</span> <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">pwd</span>
1019
+ <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__FILE__&#39;</span>] = <span class="ruby-identifier">file</span>
1020
+ <span class="ruby-ivar">@variables</span>[<span class="ruby-string">&#39;__DIR__&#39;</span>] = <span class="ruby-constant">File</span>.<span class="ruby-identifier">absolute_path</span>(<span class="ruby-identifier">dir</span>)
1021
+ <span class="ruby-identifier">action</span>.<span class="ruby-identifier">execute</span>
1022
+ <span class="ruby-keyword">end</span></pre>
1023
+ </div>
1024
+
1025
+ </div>
1026
+
1027
+
1028
+
1029
+
974
1030
  </div>
975
1031
 
976
1032
 
@@ -1012,6 +1068,67 @@ behavior).</p>
1012
1068
 
1013
1069
 
1014
1070
 
1071
+ </div>
1072
+
1073
+
1074
+ <div id="method-i-get_action" class="method-detail ">
1075
+
1076
+ <div class="method-heading">
1077
+ <span class="method-name">get_action</span><span
1078
+ class="method-args">(action, args, text, file, line)</span>
1079
+
1080
+ <span class="method-click-advice">click to toggle source</span>
1081
+
1082
+ </div>
1083
+
1084
+
1085
+ <div class="method-description">
1086
+
1087
+ <p>Returns an executable <a href="Action.html">Action</a> object constructed
1088
+ from the specified arguments resolving action aliases.</p>
1089
+
1090
+ <p>This method if part of the action execution chain and is intended for
1091
+ advanced use (e.g. in complex actions). To execute an <a
1092
+ href="Action.html">Action</a> directly, the <a
1093
+ href="Context.html#method-i-exec_action">exec_action</a> method is
1094
+ preferred.</p>
1095
+
1096
+
1097
+
1098
+
1099
+ <div class="method-source-code" id="get_action-source">
1100
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 450</span>
1101
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier">get_action</span>(<span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
1102
+ <span class="ruby-keyword">while</span> (<span class="ruby-identifier">alias_action</span> = <span class="ruby-ivar">@aliases</span>[<span class="ruby-identifier">action</span>])
1103
+ <span class="ruby-identifier">action</span> = <span class="ruby-identifier">alias_action</span>[<span class="ruby-value">:action</span>]
1104
+ <span class="ruby-identifier">args</span> = <span class="ruby-identifier">alias_action</span>[<span class="ruby-value">:args</span>].<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span>
1105
+ <span class="ruby-identifier">a</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp">/\$\{(\d+)(\*q?)?\}/</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span>
1106
+ <span class="ruby-comment"># expand ${1} to args[0], ${2} to args[1], etc.</span>
1107
+ <span class="ruby-comment"># expand ${4*} to &quot;#{args[4]} #{args[5]} ...&quot;</span>
1108
+ <span class="ruby-comment"># expand ${4*q} to &quot;\&quot;#{args[4]}\&quot; \&quot;#{args[5]}\&quot; ...&quot;</span>
1109
+ <span class="ruby-identifier">idx</span> = <span class="ruby-node">$1</span>.<span class="ruby-identifier">to_i</span><span class="ruby-operator">-</span><span class="ruby-value">1</span>
1110
+ <span class="ruby-keyword">if</span> <span class="ruby-node">$2</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span>
1111
+ <span class="ruby-identifier">args</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">||</span> <span class="ruby-string">&#39;&#39;</span>
1112
+ <span class="ruby-keyword">else</span>
1113
+ <span class="ruby-identifier">range</span> = <span class="ruby-identifier">args</span>[<span class="ruby-identifier">idx</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>]
1114
+ <span class="ruby-identifier">range</span> = <span class="ruby-identifier">range</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span> <span class="ruby-string">&#39;&quot;&#39;</span><span class="ruby-operator">+</span><span class="ruby-identifier">arg</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&#39;&quot;&#39;</span>, <span class="ruby-string">&#39;&quot;&quot;&#39;</span>)<span class="ruby-operator">+</span><span class="ruby-string">&#39;&quot;&#39;</span> } <span class="ruby-keyword">if</span> <span class="ruby-node">$2</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;*q&#39;</span>
1115
+ <span class="ruby-identifier">range</span>.<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>)
1116
+ <span class="ruby-keyword">end</span>
1117
+ <span class="ruby-keyword">end</span>
1118
+ <span class="ruby-keyword">end</span>
1119
+ <span class="ruby-keyword">end</span>
1120
+
1121
+ <span class="ruby-identifier">text</span> = ([<span class="ruby-identifier">action</span>] <span class="ruby-operator">+</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-string">&#39;&quot;&#39;</span><span class="ruby-operator">+</span><span class="ruby-identifier">a</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-string">&#39;&quot;&#39;</span>, <span class="ruby-string">&#39;&quot;&quot;&#39;</span>)<span class="ruby-operator">+</span><span class="ruby-string">&#39;&quot;&#39;</span> }).<span class="ruby-identifier">join</span>(<span class="ruby-string">&#39; &#39;</span>) <span class="ruby-keyword">unless</span> <span class="ruby-identifier">text</span>
1122
+
1123
+ <span class="ruby-constant">Action</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword">self</span>, <span class="ruby-identifier">action</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">file</span>, <span class="ruby-identifier">line</span>)
1124
+ <span class="ruby-keyword">end</span></pre>
1125
+ </div>
1126
+
1127
+ </div>
1128
+
1129
+
1130
+
1131
+
1015
1132
  </div>
1016
1133
 
1017
1134
 
@@ -1251,7 +1368,7 @@ to execute the block itself.</p>
1251
1368
 
1252
1369
 
1253
1370
  <div class="method-source-code" id="action_args-source">
1254
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 463</span>
1371
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 518</span>
1255
1372
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">action_args</span>(<span class="ruby-identifier">action</span>)
1256
1373
  <span class="ruby-identifier">action</span> <span class="ruby-operator">+=</span> <span class="ruby-string">&#39;_action&#39;</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">action</span>
1257
1374
  <span class="ruby-constant">Action</span>.<span class="ruby-identifier">public_instance_method</span>(<span class="ruby-identifier">action</span>).<span class="ruby-identifier">parameters</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">att</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span> }
@@ -1291,7 +1408,7 @@ to execute the block itself.</p>
1291
1408
 
1292
1409
 
1293
1410
  <div class="method-source-code" id="actions-source">
1294
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 453</span>
1411
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 508</span>
1295
1412
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">actions</span>
1296
1413
  <span class="ruby-identifier">_action_methods</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">m</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_action$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1297
1414
  <span class="ruby-keyword">end</span></pre>
@@ -1330,7 +1447,7 @@ to execute the block itself.</p>
1330
1447
 
1331
1448
 
1332
1449
  <div class="method-source-code" id="loggers-source">
1333
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 492</span>
1450
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 547</span>
1334
1451
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">loggers</span>
1335
1452
  <span class="ruby-constant">Loggers</span>.<span class="ruby-identifier">constants</span>.<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/logger$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1336
1453
  <span class="ruby-keyword">end</span></pre>
@@ -1372,7 +1489,7 @@ to execute the block itself.</p>
1372
1489
 
1373
1490
 
1374
1491
  <div class="method-source-code" id="max_action_name_size-source">
1375
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 516</span>
1492
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 571</span>
1376
1493
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">max_action_name_size</span>
1377
1494
  <span class="ruby-identifier">actions</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value">0</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">s</span> }
1378
1495
  <span class="ruby-keyword">end</span></pre>
@@ -1411,7 +1528,7 @@ to execute the block itself.</p>
1411
1528
 
1412
1529
 
1413
1530
  <div class="method-source-code" id="parsers-source">
1414
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 502</span>
1531
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 557</span>
1415
1532
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">parsers</span>
1416
1533
  (<span class="ruby-constant">Parser</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>) <span class="ruby-operator">-</span> <span class="ruby-constant">ParserModule</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>))
1417
1534
  .<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">to_s</span> }
@@ -1455,7 +1572,7 @@ custom selectors are returned.</p>
1455
1572
 
1456
1573
 
1457
1574
  <div class="method-source-code" id="selectors-source">
1458
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 478</span>
1575
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 533</span>
1459
1576
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier">selectors</span>(<span class="ruby-identifier">include_standard_selectors</span> = <span class="ruby-keyword">true</span>)
1460
1577
  <span class="ruby-identifier">ret</span> = <span class="ruby-constant">Selector</span>.<span class="ruby-identifier">public_instance_methods</span>(<span class="ruby-keyword">false</span>).<span class="ruby-identifier">map</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">sub</span>(<span class="ruby-regexp">/_selector$/</span>, <span class="ruby-string">&#39;&#39;</span>) }
1461
1578
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">include_standard_selectors</span>
@@ -1537,7 +1654,7 @@ with the corresponding variable value.</p>
1537
1654
 
1538
1655
 
1539
1656
  <div class="method-source-code" id="expand-source">
1540
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 537</span>
1657
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 592</span>
1541
1658
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">expand</span>(<span class="ruby-identifier">s</span>)
1542
1659
  <span class="ruby-identifier">result</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-identifier">s</span>) <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>,<span class="ruby-identifier">kv</span><span class="ruby-operator">|</span>
1543
1660
  <span class="ruby-identifier">s</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-node">/\$\{#{kv[0]}\}/</span>, <span class="ruby-identifier">kv</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">to_s</span>)
@@ -1590,7 +1707,7 @@ variables is restored.</p>
1590
1707
 
1591
1708
 
1592
1709
  <div class="method-source-code" id="with_vars-source">
1593
- <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 560</span>
1710
+ <pre><span class="ruby-comment"># File lib/bauxite/core/context.rb, line 615</span>
1594
1711
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">with_vars</span>(<span class="ruby-identifier">vars</span>)
1595
1712
  <span class="ruby-identifier">current</span> = <span class="ruby-ivar">@variables</span>
1596
1713
  <span class="ruby-ivar">@variables</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">vars</span>)
@@ -1616,7 +1733,7 @@ variables is restored.</p>
1616
1733
 
1617
1734
  <footer id="validator-badges" role="contentinfo">
1618
1735
  <p><a href="http://validator.w3.org/check/referer">Validate</a>
1619
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.0.
1736
+ <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
1620
1737
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
1621
1738
  </footer>
1622
1739