<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta name="Content-Type" content="text/html; charset=UTF-8" /> <title>Class: TableFu::Datum</title> <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" /> <script type="text/javascript" charset="utf-8"> relpath = '..'; if (relpath != '') relpath += '/'; </script> <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script> <script type="text/javascript" charset="utf-8" src="../js/app.js"></script> </head> <body> <script type="text/javascript" charset="utf-8"> if (window.top.frames.main) document.body.className = 'frames'; </script> <div id="header"> <div id="menu"> <a href="../_index.html">Index (D)</a> » <span class='title'><a href="../TableFu.html" title="TableFu (class)">TableFu</a></span> » <span class="title">Datum</span> <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div> </div> <div id="search"> <a id="class_list_link" href="#">Class List</a> <a id="method_list_link" href="#">Method List</a> <a id ="file_list_link" href="#">File List</a> </div> <div class="clear"></div> </div> <iframe id="search_frame"></iframe> <div id="content"><h1>Class: TableFu::Datum </h1> <dl class="box"> <dt class="r1">Inherits:</dt> <dd class="r1"> <span class="inheritName">Object</span> <ul class="fullTree"> <li>Object</li> <li class="next">TableFu::Datum</li> </ul> <a href="#" class="inheritanceTree">show all</a> </dd> <dt class="r2 last">Defined in:</dt> <dd class="r2 last">lib/table_fu.rb</dd> </dl> <div class="clear"></div> <h2>Overview</h2><div class="docstring"> <div class="discussion"> <p> A Datum is an individual cell in the TableFu::Row </p> </div> </div> <div class="tags"> </div><div id="subclasses"> <h2>Direct Known Subclasses</h2> <p class="children"><a href="Header.html" title="TableFu::Header (class)">Header</a></p> </div> <h2>Instance Attribute Summary</h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#column_name-instance_method" title="#column_name (instance method)">- (Object) <strong>column_name</strong> </a> </span> <span class="note title readonly">readonly</span> <span class="summary_desc"> Returns the value of attribute column_name. </span> </li> <li class="public "> <span class="summary_signature"> <a href="#options-instance_method" title="#options (instance method)">- (Object) <strong>options</strong> </a> </span> <span class="note title readonly">readonly</span> <span class="summary_desc"> Returns the value of attribute options. </span> </li> </ul> <h2>Instance Method Summary</h2> <ul class="summary"> <li class="public "> <span class="summary_signature"> <a href="#initialize-instance_method" title="#initialize (instance method)">- (Datum) <strong>initialize</strong>(datum, col_name, row_num, spreadsheet) </a> </span> <span class="note title constructor">constructor</span> <span class="summary_desc"> Each piece of datum should know where it is by column and row number, along with the spreadsheet it’s apart of. </span> </li> <li class="public "> <span class="summary_signature"> <a href="#macro_value-instance_method" title="#macro_value (instance method)">- (Object) <strong>macro_value</strong> </a> </span> <span class="summary_desc"> Returns the macro’d format if there is one . </span> </li> <li class="public "> <span class="summary_signature"> <a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(method) </a> </span> <span class="summary_desc"> This method missing looks for 4 matches. </span> </li> <li class="public "> <span class="summary_signature"> <a href="#to_s-instance_method" title="#to_s (instance method)">- (Object) <strong>to_s</strong> </a> </span> <span class="summary_desc"> Our standard formatter for the datum. </span> </li> <li class="public "> <span class="summary_signature"> <a href="#value-instance_method" title="#value (instance method)">- (Object) <strong>value</strong> </a> </span> <span class="summary_desc"> Returns the raw value of a datum . </span> </li> </ul> <div id="constructor_details" class="method_details_list"> <h2>Constructor Details</h2> <div class="method_details first"> <p class="signature first" id="initialize-instance_method"> - (<tt><a href="" title="TableFu::Datum (class)">Datum</a></tt>) <strong>initialize</strong>(datum, col_name, row_num, spreadsheet) </p><div class="docstring"> <div class="discussion"> <p> Each piece of datum should know where it is by column and row number, along with the spreadsheet it’s apart of. There’s probably a better way to go about doing this. Subclass? </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 244 245 246 247 248 249</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 244</span> <span class='def def kw'>def</span> <span class='initialize identifier id'>initialize</span><span class='lparen token'>(</span><span class='datum identifier id'>datum</span><span class='comma token'>,</span> <span class='col_name identifier id'>col_name</span><span class='comma token'>,</span> <span class='row_num identifier id'>row_num</span><span class='comma token'>,</span> <span class='spreadsheet identifier id'>spreadsheet</span><span class='rparen token'>)</span> <span class='@datum ivar id'>@datum</span> <span class='assign token'>=</span> <span class='datum identifier id'>datum</span> <span class='@column_name ivar id'>@column_name</span> <span class='assign token'>=</span> <span class='col_name identifier id'>col_name</span> <span class='@row_num ivar id'>@row_num</span> <span class='assign token'>=</span> <span class='row_num identifier id'>row_num</span> <span class='@spreadsheet ivar id'>@spreadsheet</span> <span class='assign token'>=</span> <span class='spreadsheet identifier id'>spreadsheet</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> </div> <div id="method_missing_details" class="method_details_list"> <h2>Dynamic Method Handling</h2> <p class="notice this"> This class handles dynamic methods through the <tt>method_missing</tt> method </p> <div class="method_details first"> <p class="signature first" id="method_missing-instance_method"> - (<tt>Object</tt>) <strong>method_missing</strong>(method) </p><div class="docstring"> <div class="discussion"> <p> This method missing looks for 4 matches </p> <p> First Option We have a column option by that method name and it applies to this column Example - </p> <pre class="code"> <span class='rshft op'>>></span> <span class='@data ivar id'>@data</span><span class='dot token'>.</span><span class='column_name identifier id'>column_name</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'Total'</span> <span class='rshft op'>>></span> <span class='@datum ivar id'>@datum</span><span class='dot token'>.</span><span class='style identifier id'>style</span> </pre> <p> Finds col_opt[:style] = {‘Total’ => ‘text-align:left;’} </p> <pre class="code"> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'text-align:left;'</span> </pre> <p> Second Option We have a column option by that method name, but no attribute </p> <pre class="code"> <span class='rshft op'>>></span> <span class='@data ivar id'>@data</span><span class='dot token'>.</span><span class='column_name identifier id'>column_name</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'Total'</span> <span class='rshft op'>>></span> <span class='@datum ivar id'>@datum</span><span class='dot token'>.</span><span class='style identifier id'>style</span> <span class='Finds constant id'>Finds</span> <span class='col_opt identifier id'>col_opt</span><span class='lbrack token'>[</span><span class='symbol val'>:style</span><span class='rbrack token'>]</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='string val'>'State'</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>'text-align:left;'</span><span class='rbrace token'>}</span> <span class='assign token'>=</span><span class='gt op'>></span> <span class='string val'>''</span> </pre> <p> Third Option The boolean </p> <pre class="code"> <span class='rshft op'>>></span> <span class='@data ivar id'>@data</span><span class='dot token'>.</span><span class='invisible? fid id'>invisible?</span> </pre> <p> And we’ve set it col_opts[:invisible] = [‘Total’] </p> <pre class="code"> <span class='assign token'>=</span><span class='gt op'>></span> <span class='true true kw'>true</span> </pre> <p> Fourth Option The boolean that’s false </p> <pre class="code"> <span class='rshft op'>>></span> <span class='@data ivar id'>@data</span><span class='dot token'>.</span><span class='invisible? fid id'>invisible?</span> </pre> <p> And it’s not in the list col_opts[:invisible] = [‘State’] </p> <pre class="code"> <span class='assign token'>=</span><span class='gt op'>></span> <span class='false false kw'>false</span> </pre> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 337 338 339 340 341 342 343 344 345 346 347 348 349 350</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 337</span> <span class='def def kw'>def</span> <span class='method_missing identifier id'>method_missing</span><span class='lparen token'>(</span><span class='method identifier id'>method</span><span class='rparen token'>)</span> <span class='opts identifier id'>opts</span> <span class='assign token'>=</span> <span class='indifferent_access identifier id'>indifferent_access</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='col_opts identifier id'>col_opts</span> <span class='if if kw'>if</span> <span class='val identifier id'>val</span> <span class='assign token'>=</span> <span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='rbrack token'>]</span> <span class='andop op'>&&</span> <span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='rbrack token'>]</span><span class='lbrack token'>[</span><span class='column_name identifier id'>column_name</span><span class='rbrack token'>]</span> <span class='val identifier id'>val</span> <span class='elsif elsif kw'>elsif</span> <span class='val identifier id'>val</span> <span class='assign token'>=</span> <span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='rbrack token'>]</span> <span class='andop op'>&&</span> <span class='notop op'>!</span><span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='rbrack token'>]</span><span class='lbrack token'>[</span><span class='column_name identifier id'>column_name</span><span class='rbrack token'>]</span> <span class='string val'>''</span> <span class='elsif elsif kw'>elsif</span> <span class='method identifier id'>method</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span> <span class='match op'>=~</span> <span class='regexp val'>/\?$/</span> <span class='andop op'>&&</span> <span class='col_opts identifier id'>col_opts</span> <span class='assign token'>=</span> <span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span><span class='dot token'>.</span><span class='chop identifier id'>chop</span><span class='dot token'>.</span><span class='to_sym identifier id'>to_sym</span><span class='rbrack token'>]</span> <span class='col_opts identifier id'>col_opts</span><span class='dot token'>.</span><span class='index identifier id'>index</span><span class='lparen token'>(</span><span class='column_name identifier id'>column_name</span><span class='rparen token'>)</span> <span class='orop op'>||</span> <span class='false false kw'>false</span> <span class='elsif elsif kw'>elsif</span> <span class='method identifier id'>method</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span> <span class='match op'>=~</span> <span class='regexp val'>/\?$/</span> <span class='andop op'>&&</span> <span class='notop op'>!</span><span class='opts identifier id'>opts</span><span class='lbrack token'>[</span><span class='method identifier id'>method</span><span class='dot token'>.</span><span class='to_s identifier id'>to_s</span><span class='dot token'>.</span><span class='chop identifier id'>chop</span><span class='dot token'>.</span><span class='to_sym identifier id'>to_sym</span><span class='rbrack token'>]</span> <span class='nil nil kw'>nil</span> <span class='else else kw'>else</span> <span class='super super kw'>super</span> <span class='end end kw'>end</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> </div> <div id="instance_attr_details" class="attr_details"> <h2>Instance Attribute Details</h2> <span id=""></span> <span id="column_name-instance_method"></span> <div class="method_details first"> <p class="signature first" id="column_name-instance_method"> - (<tt>Object</tt>) <strong>column_name</strong> <span class="extras">(readonly)</span> </p><div class="docstring"> <div class="discussion"> <p> Returns the value of attribute column_name </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 239 240 241</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 239</span> <span class='def def kw'>def</span> <span class='column_name identifier id'>column_name</span> <span class='@column_name ivar id'>@column_name</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> <span id=""></span> <span id="options-instance_method"></span> <div class="method_details "> <p class="signature " id="options-instance_method"> - (<tt>Object</tt>) <strong>options</strong> <span class="extras">(readonly)</span> </p><div class="docstring"> <div class="discussion"> <p> Returns the value of attribute options </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 239 240 241</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 239</span> <span class='def def kw'>def</span> <span class='options identifier id'>options</span> <span class='@options ivar id'>@options</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> </div> <div id="instance_method_details" class="method_details_list"> <h2>Instance Method Details</h2> <div class="method_details first"> <p class="signature first" id="macro_value-instance_method"> - (<tt>Object</tt>) <strong>macro_value</strong> </p><div class="docstring"> <div class="discussion"> <p> Returns the macro’d format if there is one </p> <p> Returns: The macro value if it exists, otherwise nil </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 277</span> <span class='def def kw'>def</span> <span class='macro_value identifier id'>macro_value</span> <span class='comment val'># Grab the macro method first</span> <span class='comment val'># Then get a array of the values in the columns listed as arguments</span> <span class='comment val'># Splat the arguments to the macro method.</span> <span class='comment val'># Example:</span> <span class='comment val'># @spreadsheet.col_opts[:formatting] = </span> <span class='comment val'># {'Total Appropriation' => :currency,</span> <span class='comment val'># 'AppendedColumn' => {'method' => 'append', 'arguments' => ['Projects','State']}}</span> <span class='comment val'># </span> <span class='comment val'># in the above case we handle the AppendedColumn in this method</span> <span class='if if kw'>if</span> <span class='@row_num ivar id'>@row_num</span> <span class='andop op'>&&</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span> <span class='andop op'>&&</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span><span class='lbrack token'>[</span><span class='@column_name ivar id'>@column_name</span><span class='rbrack token'>]</span><span class='dot token'>.</span><span class='is_a? fid id'>is_a?</span><span class='lparen token'>(</span><span class='Hash constant id'>Hash</span><span class='rparen token'>)</span> <span class='method identifier id'>method</span> <span class='assign token'>=</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span><span class='lbrack token'>[</span><span class='@column_name ivar id'>@column_name</span><span class='rbrack token'>]</span><span class='lbrack token'>[</span><span class='string val'>'method'</span><span class='rbrack token'>]</span> <span class='arguments identifier id'>arguments</span> <span class='assign token'>=</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span><span class='lbrack token'>[</span><span class='@column_name ivar id'>@column_name</span><span class='rbrack token'>]</span><span class='lbrack token'>[</span><span class='string val'>'arguments'</span><span class='rbrack token'>]</span><span class='dot token'>.</span><span class='inject identifier id'>inject</span><span class='lparen token'>(</span><span class='lbrack token'>[</span><span class='rbrack token'>]</span><span class='rparen token'>)</span><span class='lbrace token'>{</span><span class='bitor op'>|</span><span class='arr identifier id'>arr</span><span class='comma token'>,</span><span class='arg identifier id'>arg</span><span class='bitor op'>|</span> <span class='arr identifier id'>arr</span> <span class='lshft op'><<</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='rows identifier id'>rows</span><span class='lbrack token'>[</span><span class='@row_num ivar id'>@row_num</span><span class='rbrack token'>]</span><span class='dot token'>.</span><span class='column_for identifier id'>column_for</span><span class='lparen token'>(</span><span class='arg identifier id'>arg</span><span class='rparen token'>)</span><span class='semicolon token'>;</span> <span class='arr identifier id'>arr</span><span class='rbrace token'>}</span> <span class='TableFu constant id'>TableFu</span><span class='colon2 op'>::</span><span class='Formatting constant id'>Formatting</span><span class='dot token'>.</span><span class='send identifier id'>send</span><span class='lparen token'>(</span><span class='method identifier id'>method</span><span class='comma token'>,</span> <span class='mult op'>*</span><span class='arguments identifier id'>arguments</span><span class='rparen token'>)</span> <span class='end end kw'>end</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <p class="signature " id="to_s-instance_method"> - (<tt>Object</tt>) <strong>to_s</strong> </p><div class="docstring"> <div class="discussion"> <p> Our standard formatter for the datum </p> <p> Returns: the formatted value, macro value, or a empty string </p> <p> First we test to see if this Datum has a macro attached to it. If so we let the macro method do it’s magic </p> <p> Then we test for a simple formatter method. </p> <p> And finally we return a empty string object or the value. </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 263 264 265 266 267 268 269 270 271</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 263</span> <span class='def def kw'>def</span> <span class='to_s identifier id'>to_s</span> <span class='if if kw'>if</span> <span class='macro_value identifier id'>macro_value</span> <span class='macro_value identifier id'>macro_value</span> <span class='elsif elsif kw'>elsif</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span> <span class='andop op'>&&</span> <span class='format_method identifier id'>format_method</span> <span class='assign token'>=</span> <span class='@spreadsheet ivar id'>@spreadsheet</span><span class='dot token'>.</span><span class='formatting identifier id'>formatting</span><span class='lbrack token'>[</span><span class='column_name identifier id'>column_name</span><span class='rbrack token'>]</span> <span class='TableFu constant id'>TableFu</span><span class='colon2 op'>::</span><span class='Formatting constant id'>Formatting</span><span class='dot token'>.</span><span class='send identifier id'>send</span><span class='lparen token'>(</span><span class='format_method identifier id'>format_method</span><span class='comma token'>,</span> <span class='@datum ivar id'>@datum</span><span class='rparen token'>)</span> <span class='orop op'>||</span> <span class='string val'>''</span> <span class='else else kw'>else</span> <span class='@datum ivar id'>@datum</span> <span class='orop op'>||</span> <span class='string val'>''</span> <span class='end end kw'>end</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> <div class="method_details "> <p class="signature " id="value-instance_method"> - (<tt>Object</tt>) <strong>value</strong> </p><div class="docstring"> <div class="discussion"> <p> Returns the raw value of a datum </p> <p> Returns: raw value of the datum, could be nil </p> </div> </div> <div class="tags"> </div><table class="source_code"> <tr> <td> <pre class="lines"> 298 299 300 301 302 303 304</pre> </td> <td> <pre class="code"><span class="info file"># File 'lib/table_fu.rb', line 298</span> <span class='def def kw'>def</span> <span class='value identifier id'>value</span> <span class='if if kw'>if</span> <span class='@datum ivar id'>@datum</span> <span class='match op'>=~</span> <span class='regexp val'>/[0-9]+/</span> <span class='@datum ivar id'>@datum</span><span class='dot token'>.</span><span class='to_i identifier id'>to_i</span> <span class='else else kw'>else</span> <span class='@datum ivar id'>@datum</span> <span class='end end kw'>end</span> <span class='end end kw'>end</span> </pre> </td> </tr> </table> </div> </div> </div> <div id="footer"> Generated on Tue Mar 9 17:16:37 2010 by <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a> 0.5.3 (ruby-1.8.7). </div> </body> </html>