1 <?xml version="1.0" encoding="iso-8859-1"?>
3 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
8 <title>Class: MCollective::RPC::Progress</title>
9 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10 <meta http-equiv="Content-Script-Type" content="text/javascript" />
11 <link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
12 <script type="text/javascript">
15 function popupCode( url ) {
16 window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
19 function toggleCode( id ) {
20 if ( document.getElementById )
21 elem = document.getElementById( id );
22 else if ( document.all )
23 elem = eval( "document.all." + id );
27 elemStyle = elem.style;
29 if ( elemStyle.display != "block" ) {
30 elemStyle.display = "block"
32 elemStyle.display = "none"
38 // Make codeblocks hidden by default
39 document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
49 <div id="classHeader">
50 <table class="header-table">
51 <tr class="top-aligned-row">
52 <td><strong>Class</strong></td>
53 <td class="class-name-in-header">MCollective::RPC::Progress</td>
55 <tr class="top-aligned-row">
56 <td><strong>In:</strong></td>
58 <a href="../../../files/lib/mcollective/rpc/progress_rb.html">
59 lib/mcollective/rpc/progress.rb
65 <tr class="top-aligned-row">
66 <td><strong>Parent:</strong></td>
73 <!-- banner header -->
75 <div id="bodyContent">
79 <div id="contextContent">
81 <div id="description">
83 Class that shows a progress bar, currently only supports a twirling
87 You can specify a size for the progress bar if you want if you dont it will
88 use the helper functions to figure out terminal dimensions and draw an
89 appropriately sized bar
92 p = <a href="Progress.html#M000051">Progress.new</a> 100.times {|i| print
93 p.twirl(i+1, 100) + "\r"};puts
96 * [ ==================================================> ] 100 / 100
104 <div id="method-list">
105 <h3 class="section-bar">Methods</h3>
107 <div class="name-list">
108 <a href="#M000051">new</a>
109 <a href="#M000052">twirl</a>
127 <!-- if method_list -->
129 <h3 class="section-bar">Public Class methods</h3>
131 <div id="method-M000051" class="method-detail">
132 <a name="M000051"></a>
134 <div class="method-heading">
135 <a href="#M000051" class="method-signature">
136 <span class="method-name">new</span><span class="method-args">(size=nil)</span>
140 <div class="method-description">
141 <p><a class="source-toggle" href="#"
142 onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
143 <div class="method-source-code" id="M000051-source">
145 <span class="ruby-comment cmt"># File lib/mcollective/rpc/progress.rb, line 15</span>
146 15: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">size</span>=<span class="ruby-keyword kw">nil</span>)
147 16: <span class="ruby-ivar">@twirl</span> = [<span class="ruby-value str">'|'</span>, <span class="ruby-value str">'/'</span>, <span class="ruby-value str">'-'</span>, <span class="ruby-value str">"\\"</span>, <span class="ruby-value str">'|'</span>, <span class="ruby-value str">'/'</span>, <span class="ruby-value str">'-'</span>, <span class="ruby-value str">"\\"</span>]
148 17: <span class="ruby-ivar">@twirldex</span> = <span class="ruby-value">0</span>
150 19: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">size</span>
151 20: <span class="ruby-ivar">@size</span> = <span class="ruby-identifier">size</span>
152 21: <span class="ruby-keyword kw">else</span>
153 22: <span class="ruby-identifier">cols</span> = <span class="ruby-constant">Util</span>.<span class="ruby-identifier">terminal_dimensions</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">-</span> <span class="ruby-value">22</span>
155 24: <span class="ruby-comment cmt"># Defaults back to old behavior if it</span>
156 25: <span class="ruby-comment cmt"># couldn't figure out the size or if</span>
157 26: <span class="ruby-comment cmt"># its more than 60 wide</span>
158 27: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">cols</span> <span class="ruby-operator"><=</span> <span class="ruby-value">0</span>
159 28: <span class="ruby-ivar">@size</span> = <span class="ruby-value">0</span>
160 29: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">cols</span> <span class="ruby-operator">></span> <span class="ruby-value">60</span>
161 30: <span class="ruby-ivar">@size</span> = <span class="ruby-value">60</span>
162 31: <span class="ruby-keyword kw">else</span>
163 32: <span class="ruby-ivar">@size</span> = <span class="ruby-identifier">cols</span>
164 33: <span class="ruby-keyword kw">end</span>
165 34: <span class="ruby-keyword kw">end</span>
166 35: <span class="ruby-keyword kw">end</span>
172 <h3 class="section-bar">Public Instance methods</h3>
174 <div id="method-M000052" class="method-detail">
175 <a name="M000052"></a>
177 <div class="method-heading">
178 <a href="#M000052" class="method-signature">
179 <span class="method-name">twirl</span><span class="method-args">(current, total)</span>
183 <div class="method-description">
184 <p><a class="source-toggle" href="#"
185 onclick="toggleCode('M000052-source');return false;">[Source]</a></p>
186 <div class="method-source-code" id="M000052-source">
188 <span class="ruby-comment cmt"># File lib/mcollective/rpc/progress.rb, line 37</span>
189 37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">twirl</span>(<span class="ruby-identifier">current</span>, <span class="ruby-identifier">total</span>)
190 38: <span class="ruby-comment cmt"># if the size is negative there is just not enough</span>
191 39: <span class="ruby-comment cmt"># space on the terminal, return a simpler version</span>
192 40: <span class="ruby-keyword kw">return</span> <span class="ruby-node">"\r#{current} / #{total}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@size</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
194 42: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">current</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">total</span>
195 43: <span class="ruby-identifier">txt</span> = <span class="ruby-value str">"\r %s [ "</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:green</span>, <span class="ruby-value str">"*"</span>)
196 44: <span class="ruby-keyword kw">else</span>
197 45: <span class="ruby-identifier">txt</span> = <span class="ruby-value str">"\r %s [ "</span> <span class="ruby-operator">%</span> <span class="ruby-constant">Util</span>.<span class="ruby-identifier">colorize</span>(<span class="ruby-identifier">:red</span>, <span class="ruby-ivar">@twirl</span>[<span class="ruby-ivar">@twirldex</span>])
198 46: <span class="ruby-keyword kw">end</span>
200 48: <span class="ruby-identifier">dashes</span> = ((<span class="ruby-identifier">current</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> <span class="ruby-identifier">total</span>) <span class="ruby-operator">*</span> <span class="ruby-ivar">@size</span>).<span class="ruby-identifier">round</span>
202 50: <span class="ruby-identifier">dashes</span>.<span class="ruby-identifier">times</span> { <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"="</span> }
203 51: <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">">"</span>
205 53: (<span class="ruby-ivar">@size</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">dashes</span>).<span class="ruby-identifier">times</span> { <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" "</span> }
207 55: <span class="ruby-identifier">txt</span> <span class="ruby-operator"><<</span> <span class="ruby-node">" ] #{current} / #{total}"</span>
209 57: <span class="ruby-ivar">@twirldex</span> <span class="ruby-operator">==</span> <span class="ruby-value">7</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@twirldex</span> = <span class="ruby-value">0</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@twirldex</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
211 59: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">txt</span>
212 60: <span class="ruby-keyword kw">end</span>
225 <div id="validator-badges">
226 <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>