<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>
  Class: Como::Spec
  
    &mdash; Documentation by YARD 0.9.16
  
</title>

  <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />

  <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />

<script type="text/javascript" charset="utf-8">
  pathId = "Como::Spec";
  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>
    <div class="nav_wrap">
      <iframe id="nav" src="../class_list.html?1"></iframe>
      <div id="resizer"></div>
    </div>

    <div id="main" tabindex="-1">
      <div id="header">
        <div id="menu">
  
    <a href="../_index.html">Index (S)</a> &raquo;
    <span class='title'><span class='object_link'><a href="../Como.html" title="Como (module)">Como</a></span></span>
     &raquo; 
    <span class="title">Spec</span>
  
</div>

        <div id="search">
  
    <a class="full_list_link" id="class_list_link"
        href="../class_list.html">

        <svg width="24" height="24">
          <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
          <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
          <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
        </svg>
    </a>
  
</div>
        <div class="clear"></div>
      </div>

      <div id="content"><h1>Class: Como::Spec
  
  
  
</h1>
<div class="box_info">
  
  <dl>
    <dt>Inherits:</dt>
    <dd>
      <span class="inheritName"><span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></span>
      
        <ul class="fullTree">
          <li>Object</li>
          
            <li class="next"><span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></li>
          
            <li class="next">Como::Spec</li>
          
        </ul>
        <a href="#" class="inheritanceTree">show all</a>
      
    </dd>
  </dl>
  

  
  
  
  
  

  

  
  <dl>
    <dt>Defined in:</dt>
    <dd>lib/como.rb</dd>
  </dl>
  
</div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    
<p>User interface for Como.</p>


  </div>
</div>
<div class="tags">
  

</div>
  
    <h2>
      Constant Summary
      <small><a href="#" class="constants_summary_toggle">collapse</a></small>
    </h2>

    <dl class="constants">
      
        <dt id="TYPE_PRIMS-constant" class="">TYPE_PRIMS =
          <div class="docstring">
  <div class="discussion">
    
<p>Option type primitives.</p>


  </div>
</div>
<div class="tags">
  

</div>
        </dt>
        <dd><pre class="code"><span class='lbracket'>[</span>
    <span class='comment'># No arguments (i.e. switch).
</span>    <span class='symbol'>:none</span><span class='comma'>,</span>
    <span class='comment'># One argument.
</span>    <span class='symbol'>:one</span><span class='comma'>,</span>
    <span class='comment'># More than one argument.
</span>    <span class='symbol'>:many</span><span class='comma'>,</span>
    <span class='comment'># Option can be repeated.
</span>    <span class='symbol'>:repeat</span><span class='comma'>,</span>
    <span class='comment'># Optional argument(s).
</span>    <span class='symbol'>:opt</span><span class='comma'>,</span>
    <span class='comment'># Default option.
</span>    <span class='symbol'>:default</span><span class='comma'>,</span>
    <span class='comment'># Mutually exclusive option.
</span>    <span class='symbol'>:mutex</span><span class='comma'>,</span>
    <span class='comment'># Hidden option (no usage doc).
</span>    <span class='symbol'>:hidden</span>
<span class='rbracket'>]</span></pre></dd>
      
        <dt id="MAP_TYPE_PRIMS-constant" class="">MAP_TYPE_PRIMS =
          
        </dt>
        <dd><pre class="code"><span class='lbrace'>{</span>
    <span class='symbol'>:switch</span> <span class='op'>=&gt;</span>      <span class='lbracket'>[</span> <span class='symbol'>:none</span><span class='comma'>,</span> <span class='symbol'>:opt</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:single</span> <span class='op'>=&gt;</span>      <span class='lbracket'>[</span> <span class='symbol'>:one</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:comp</span> <span class='op'>=&gt;</span>        <span class='lbracket'>[</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:repeat</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:multi</span> <span class='op'>=&gt;</span>       <span class='lbracket'>[</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:many</span><span class='comma'>,</span> <span class='symbol'>:repeat</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:opt_single</span> <span class='op'>=&gt;</span>  <span class='lbracket'>[</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:opt</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:opt_comp</span> <span class='op'>=&gt;</span>    <span class='lbracket'>[</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:repeat</span><span class='comma'>,</span> <span class='symbol'>:opt</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:opt_multi</span> <span class='op'>=&gt;</span>   <span class='lbracket'>[</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:many</span><span class='comma'>,</span> <span class='symbol'>:repeat</span><span class='comma'>,</span> <span class='symbol'>:opt</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:opt_any</span> <span class='op'>=&gt;</span>     <span class='lbracket'>[</span> <span class='symbol'>:none</span><span class='comma'>,</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:many</span><span class='comma'>,</span> <span class='symbol'>:repeat</span><span class='comma'>,</span> <span class='symbol'>:opt</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:default</span> <span class='op'>=&gt;</span>     <span class='lbracket'>[</span> <span class='symbol'>:none</span><span class='comma'>,</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:many</span><span class='comma'>,</span> <span class='symbol'>:opt</span><span class='comma'>,</span> <span class='symbol'>:default</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:exclusive</span> <span class='op'>=&gt;</span>   <span class='lbracket'>[</span> <span class='symbol'>:none</span><span class='comma'>,</span> <span class='symbol'>:one</span><span class='comma'>,</span> <span class='symbol'>:many</span><span class='comma'>,</span> <span class='symbol'>:opt</span><span class='comma'>,</span> <span class='symbol'>:mutex</span> <span class='rbracket'>]</span><span class='comma'>,</span>
    <span class='symbol'>:silent</span> <span class='op'>=&gt;</span>      <span class='lbracket'>[</span> <span class='symbol'>:none</span><span class='comma'>,</span> <span class='symbol'>:opt</span><span class='comma'>,</span> <span class='symbol'>:repeat</span><span class='comma'>,</span> <span class='symbol'>:hidden</span> <span class='rbracket'>]</span><span class='comma'>,</span>
<span class='rbrace'>}</span></pre></dd>
      
        <dt id="argv-classvariable" class="">@@argv =
          <div class="docstring">
  <div class="discussion">
    
<p>Command line options source.</p>


  </div>
</div>
<div class="tags">
  

</div>
        </dt>
        <dd><pre class="code"><span class='const'>ARGV</span></pre></dd>
      
    </dl>
  







  
    <h2>
      Class Method Summary
      <small><a href="#" class="summary_toggle">collapse</a></small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#check-class_method" title="check (class method)">.<strong>check</strong>(opt = nil, &amp;rule)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Alias for Spec.checkRule.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#checkAlso-class_method" title="checkAlso (class method)">.<strong>checkAlso</strong>(opt, error, &amp;check)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Additional option check.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#checkRule-class_method" title="checkRule (class method)">.<strong>checkRule</strong>(opt = nil, &amp;rule)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Check option combination rules.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#command-class_method" title="command (class method)">.<strong>command</strong>(prog, author, year, defs = [], config = {})  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>The primary entry point to Como.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#defineCheckHelp-class_method" title="defineCheckHelp (class method)">.<strong>defineCheckHelp</strong>(prog, author, year, defs, config = {})  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Alias for <span class='object_link'><a href="#command-class_method" title="Como::Spec.command (method)">Spec.command</a></span>.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#defineCommand-class_method" title="defineCommand (class method)">.<strong>defineCommand</strong>(prog, author, year, defs, config = {})  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Define options specification for command.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#defineProgram-class_method" title="defineProgram (class method)">.<strong>defineProgram</strong>(author, year, config = nil) { ... } &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Define options specification for program.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#execute-class_method" title="execute (class method)">.<strong>execute</strong>  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Perform command line options checking.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#mapTypeToPrims-class_method" title="mapTypeToPrims (class method)">.<strong>mapTypeToPrims</strong>(type)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Convert option types (type definitions) to option type primitives.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#program-class_method" title="program (class method)">.<strong>program</strong>(author, year, config = nil) { ... } &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Create specification for program with subcmds.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#setArgv-class_method" title="setArgv (class method)">.<strong>setArgv</strong>(newArgv)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Set command line options source, i.e.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#setUsageFooter-class_method" title="setUsageFooter (class method)">.<strong>setUsageFooter</strong>(str)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Set optional footer for “usage”.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#setUsageHeader-class_method" title="setUsageHeader (class method)">.<strong>setUsageHeader</strong>(str)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Set optional header for “usage”.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#specify-class_method" title="specify (class method)">.<strong>specify</strong>(subcmd, table)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Check/fix options specs and create option objects for the whole table.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#specifyOptOrSub-class_method" title="specifyOptOrSub (class method)">.<strong>specifyOptOrSub</strong>(opt_or_sub)  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Check/fix options specs and create option objects for the whole table.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#usage-class_method" title="usage (class method)">.<strong>usage</strong>  &#x21d2; Object </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Display program usage (and optionally exit).</p>
</div></span>
  
</li>

      
    </ul>
  
    <h2>
      Instance Method Summary
      <small><a href="#" class="summary_toggle">collapse</a></small>
    </h2>

    <ul class="summary">
      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#checkRule-instance_method" title="#checkRule (instance method)">#<strong>checkRule</strong>(opt = nil, &amp;rule)  &#x21d2; Object </a>
    

    
      (also: #check)
    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Check option combination rules.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong>(author, year)  &#x21d2; Spec </a>
    

    
  </span>
  
  
    <span class="note title constructor">constructor</span>
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Create Spec object that can handle subcmd definitions.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#subcmd-instance_method" title="#subcmd (instance method)">#<strong>subcmd</strong>(cmd, defs = [], config = {})  &#x21d2; Object </a>
    

    
      (also: #command)
    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'>
<p>Define subcommand options.</p>
</div></span>
  
</li>

      
    </ul>
  


  
  
  
  
  
  
  
  
  <h3 class="inherited">Methods inherited from <span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></h3>
  <p class="inherited"><span class='object_link'><a href="ComoCommon.html#getIo-class_method" title="Como::ComoCommon.getIo (method)">getIo</a></span>, <span class='object_link'><a href="ComoCommon.html#runHook-class_method" title="Como::ComoCommon.runHook (method)">runHook</a></span>, <span class='object_link'><a href="ComoCommon.html#setHook-class_method" title="Como::ComoCommon.setHook (method)">setHook</a></span>, <span class='object_link'><a href="ComoCommon.html#setIo-class_method" title="Como::ComoCommon.setIo (method)">setIo</a></span></p>
<div id="constructor_details" class="method_details_list">
  <h2>Constructor Details</h2>
  
    <div class="method_details first">
  <h3 class="signature first" id="initialize-instance_method">
  
    #<strong>initialize</strong>(author, year)  &#x21d2; <tt><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Create Spec object that can handle subcmd definitions.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>author</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Program author.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>year</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Year (or dates) for program.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


676
677
678
679
680
681
682</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 676</span>

<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span> <span class='rparen'>)</span>
    <span class='ivar'>@author</span> <span class='op'>=</span> <span class='id identifier rubyid_author'>author</span>
    <span class='ivar'>@year</span> <span class='op'>=</span> <span class='id identifier rubyid_year'>year</span>

    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Author name is not a String</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='id identifier rubyid_year'>year</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Year is not a String</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
  
</div>


  <div id="class_method_details" class="method_details_list">
    <h2>Class Method Details</h2>

    
      <div class="method_details first">
  <h3 class="signature first" id="check-class_method">
  
    .<strong>check</strong>(opt = nil, &amp;rule)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Alias for Spec.checkRule.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


910</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 910</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_check'>check</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_checkRule'><span class='object_link'><a href="#checkRule-class_method" title="Como::Spec.checkRule (method)">checkRule</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span> <span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="checkAlso-class_method">
  
    .<strong>checkAlso</strong>(opt, error, &amp;check)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Additional option check.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>opt</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Option name.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>error</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Error string for false return values (from check).</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>check</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Checker proc run for the option. Either</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'></span>
      
      
      
        
        <div class='inline'>
<p>false or generate an exception when errors found.</p>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


937
938
939</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 937</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_checkAlso'>checkAlso</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_check'>check</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span><span class='period'>.</span><span class='id identifier rubyid_checkAlso'>checkAlso</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_check'>check</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="checkRule-class_method">
  
    .<strong>checkRule</strong>(opt = nil, &amp;rule)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Check option combination rules.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>opt</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>nil</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Opt name to which rules are set. If not given, Opt.current is used.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>rule</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Rules to check.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


898
899
900
901
902
903
904
905
906</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 898</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_checkRule'>checkRule</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_opt'>opt</span>
        <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='lbracket'>[</span> <span class='id identifier rubyid_opt'>opt</span> <span class='rbracket'>]</span>
    <span class='kw'>else</span>
        <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_current'><span class='object_link'><a href="Opt.html#current-class_method" title="Como::Opt.current (method)">current</a></span></span>
    <span class='kw'>end</span>
    <span class='id identifier rubyid_opt'>opt</span><span class='period'>.</span><span class='id identifier rubyid_setRuleCheck'>setRuleCheck</span><span class='lparen'>(</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span>
    <span class='id identifier rubyid_opt'>opt</span><span class='period'>.</span><span class='id identifier rubyid_checkRule'>checkRule</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="command-class_method">
  
    .<strong>command</strong>(prog, author, year, defs = [], config = {})  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>The primary entry point to Como. Defines the command switches and parses
the command line. Performs “usage” display if “help” was selected.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>prog</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Program (i.e. command) name.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>author</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Author of the program.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>year</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Year (or dates) for program.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>defs</span>
      
      
        <span class='type'>(<tt>Array&lt;Array&gt;</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>[]</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Option definitions.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>config</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>{}</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Option definition&#39;s behavioral config (changes @@config defaults).</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


599
600
601
602</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 599</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_command'>command</span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defineCommand'><span class='object_link'><a href="#defineCommand-class_method" title="Como::Spec.defineCommand (method)">defineCommand</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_execute'><span class='object_link'><a href="#execute-class_method" title="Como::Spec.execute (method)">execute</a></span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="defineCheckHelp-class_method">
  
    .<strong>defineCheckHelp</strong>(prog, author, year, defs, config = {})  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Alias for <span class='object_link'><a href="#command-class_method" title="Como::Spec.command (method)">command</a></span>.</p>

<p>NOTE: This method is deprecated and will be removed in future releases.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


660
661
662</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 660</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defineCheckHelp'>defineCheckHelp</span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_command'><span class='object_link'><a href="#command-class_method" title="Como::Spec.command (method)">command</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="defineCommand-class_method">
  
    .<strong>defineCommand</strong>(prog, author, year, defs, config = {})  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Define options specification for command. User should perform
<span class='object_link'><a href="#execute-class_method" title="Como::Spec.execute (method)">execute</a></span> separately.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>prog</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Program (i.e. command) name.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>author</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Author of the program.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>year</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Year (or dates) for program.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>defs</span>
      
      
        <span class='type'>(<tt>Array&lt;Array&gt;</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Option definitions.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>config</span>
      
      
        <span class='type'>(<tt>Hash</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>{}</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Option definition&#39;s behavioral config (changes @@config defaults).</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


639
640
641
642
643
644
645
646
647
648
649
650
651
652
653</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 639</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defineCommand'>defineCommand</span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rparen'>)</span>

    <span class='id identifier rubyid_preHookArgs'>preHookArgs</span> <span class='op'>=</span> <span class='lbrace'>{</span>
        <span class='symbol'>:prog</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span>
        <span class='symbol'>:author</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span>
        <span class='symbol'>:year</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span>
        <span class='symbol'>:defs</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span>
        <span class='symbol'>:config</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_config'>config</span><span class='comma'>,</span>
    <span class='rbrace'>}</span>

    <span class='const'><span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></span><span class='period'>.</span><span class='id identifier rubyid_runHook'><span class='object_link'><a href="ComoCommon.html#runHook-class_method" title="Como::ComoCommon.runHook (method)">runHook</a></span></span><span class='lparen'>(</span> <span class='symbol'>:preHook</span><span class='comma'>,</span> <span class='id identifier rubyid_preHookArgs'>preHookArgs</span> <span class='rparen'>)</span>

    <span class='id identifier rubyid_spec'>spec</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Como::Spec#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span> <span class='rparen'>)</span>
    <span class='id identifier rubyid_spec'>spec</span><span class='period'>.</span><span class='id identifier rubyid_subcmd'>subcmd</span><span class='lparen'>(</span> <span class='id identifier rubyid_prog'>prog</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="defineProgram-class_method">
  
    .<strong>defineProgram</strong>(author, year, config = nil) { ... } &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Define options specification for program. User should perform
<span class='object_link'><a href="#execute-class_method" title="Como::Spec.execute (method)">execute</a></span> separately.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>author</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Program author.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>year</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Year (or dates) for program.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Yields:</p>
<ul class="yield">
  
    <li>
      
      
        <span class='type'></span>
      
      
      
        
        <div class='inline'><dl class="rdoc-list label-list"><dt>
<dd>
<p>Subcmd definitions.</p>
</dd></dl>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 611</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defineProgram'>defineProgram</span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_defs'>defs</span> <span class='rparen'>)</span>
    <span class='id identifier rubyid_preHookArgs'>preHookArgs</span> <span class='op'>=</span> <span class='lbrace'>{</span>
        <span class='symbol'>:author</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span>
        <span class='symbol'>:year</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span>
        <span class='symbol'>:config</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_config'>config</span><span class='comma'>,</span>
        <span class='symbol'>:defs</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_defs'>defs</span><span class='comma'>,</span>
    <span class='rbrace'>}</span>

    <span class='const'><span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></span><span class='period'>.</span><span class='id identifier rubyid_runHook'><span class='object_link'><a href="ComoCommon.html#runHook-class_method" title="Como::ComoCommon.runHook (method)">runHook</a></span></span><span class='lparen'>(</span> <span class='symbol'>:preHook</span><span class='comma'>,</span> <span class='id identifier rubyid_preHookArgs'>preHookArgs</span> <span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_config'>config</span>
        <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configOverlay'><span class='object_link'><a href="Opt.html#configOverlay-class_method" title="Como::Opt.configOverlay (method)">configOverlay</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_config'>config</span> <span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_spec'>spec</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Como::Spec#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span> <span class='rparen'>)</span>
    <span class='id identifier rubyid_spec'>spec</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span><span class='lparen'>(</span> <span class='op'>&amp;</span><span class='id identifier rubyid_defs'>defs</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="execute-class_method">
  
    .<strong>execute</strong>  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Perform command line options checking.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


666
667
668
669</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 666</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_execute'>execute</span>
    <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span><span class='period'>.</span><span class='id identifier rubyid_check'>check</span><span class='lparen'>(</span> <span class='const'><span class='object_link'><a href="ArgsParseState.html" title="Como::ArgsParseState (class)">ArgsParseState</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="ArgsParseState.html#initialize-instance_method" title="Como::ArgsParseState#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='cvar'>@@argv</span> <span class='rparen'>)</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="ComoCommon.html" title="Como::ComoCommon (class)">ComoCommon</a></span></span><span class='period'>.</span><span class='id identifier rubyid_runHook'><span class='object_link'><a href="ComoCommon.html#runHook-class_method" title="Como::ComoCommon.runHook (method)">runHook</a></span></span><span class='lparen'>(</span> <span class='symbol'>:postHook</span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="mapTypeToPrims-class_method">
  
    .<strong>mapTypeToPrims</strong>(type)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Convert option types (type definitions) to option type primitives.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 839</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_mapTypeToPrims'>mapTypeToPrims</span><span class='lparen'>(</span> <span class='id identifier rubyid_type'>type</span> <span class='rparen'>)</span>

    <span class='id identifier rubyid_prims'>prims</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>Symbol</span>
        <span class='id identifier rubyid_prims'>prims</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#MAP_TYPE_PRIMS-constant" title="Como::Spec::MAP_TYPE_PRIMS (constant)">MAP_TYPE_PRIMS</a></span></span><span class='lbracket'>[</span> <span class='id identifier rubyid_type'>type</span> <span class='rbracket'>]</span>
        <span class='kw'>unless</span> <span class='id identifier rubyid_prims'>prims</span>
            <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unknown option type: \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;...</span><span class='tstring_end'>&quot;</span></span>
        <span class='kw'>end</span>

    <span class='kw'>elsif</span> <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>Array</span>
        <span class='id identifier rubyid_prims'>prims</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>

        <span class='comment'># Check that type primivives are valid before taking
</span>        <span class='comment'># them into use.
</span>        <span class='id identifier rubyid_type'>type</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_t'>t</span><span class='op'>|</span>
            <span class='kw'>if</span> <span class='const'><span class='object_link'><a href="#TYPE_PRIMS-constant" title="Como::Spec::TYPE_PRIMS (constant)">TYPE_PRIMS</a></span></span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span><span class='lparen'>(</span> <span class='id identifier rubyid_t'>t</span> <span class='rparen'>)</span>
                <span class='id identifier rubyid_prims'>prims</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span> <span class='id identifier rubyid_t'>t</span>
            <span class='kw'>else</span>
                <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Unknown option type primitive: \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_t'>t</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;...</span><span class='tstring_end'>&quot;</span></span>
            <span class='kw'>end</span>
        <span class='kw'>end</span>
    <span class='kw'>else</span>
        <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Invalid option type definition: \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_type'>type</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot;...</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_prims'>prims</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="program-class_method">
  
    .<strong>program</strong>(author, year, config = nil) { ... } &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Create specification for program with subcmds.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>author</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Program author.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>year</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Year (or dates) for program.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Yields:</p>
<ul class="yield">
  
    <li>
      
      
        <span class='type'></span>
      
      
      
        
        <div class='inline'><dl class="rdoc-list label-list"><dt>
<dd>
<p>Subcmd definitions.</p>
</dd></dl>
</div>
      
    </li>
  
</ul>

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


583
584
585
586</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 583</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_program'>program</span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_defs'>defs</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defineProgram'><span class='object_link'><a href="#defineProgram-class_method" title="Como::Spec.defineProgram (method)">defineProgram</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_author'>author</span><span class='comma'>,</span> <span class='id identifier rubyid_year'>year</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_defs'>defs</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_execute'><span class='object_link'><a href="#execute-class_method" title="Como::Spec.execute (method)">execute</a></span></span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="setArgv-class_method">
  
    .<strong>setArgv</strong>(newArgv)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Set command line options source, i.e. @@argv (default: ARGV).</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


872
873
874</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 872</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setArgv'>setArgv</span><span class='lparen'>(</span> <span class='id identifier rubyid_newArgv'>newArgv</span> <span class='rparen'>)</span>
    <span class='cvar'>@@argv</span> <span class='op'>=</span> <span class='id identifier rubyid_newArgv'>newArgv</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="setUsageFooter-class_method">
  
    .<strong>setUsageFooter</strong>(str)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Set optional footer for “usage”.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


888
889
890</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 888</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setUsageFooter'>setUsageFooter</span><span class='lparen'>(</span> <span class='id identifier rubyid_str'>str</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setUsageFooter'>setUsageFooter</span><span class='lparen'>(</span> <span class='id identifier rubyid_str'>str</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="setUsageHeader-class_method">
  
    .<strong>setUsageHeader</strong>(str)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Set optional header for “usage”.</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


882
883
884</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 882</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setUsageHeader'>setUsageHeader</span><span class='lparen'>(</span> <span class='id identifier rubyid_str'>str</span> <span class='rparen'>)</span>
    <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setUsageHeader'>setUsageHeader</span><span class='lparen'>(</span> <span class='id identifier rubyid_str'>str</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="specify-class_method">
  
    .<strong>specify</strong>(subcmd, table)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Check/fix options specs and create option objects for the whole table.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>subcmd</span>
      
      
        <span class='type'>(<tt><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Subcommand target.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>table</span>
      
      
        <span class='type'>(<tt>Array&lt;Array&gt;</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Option definition table for subcommand.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 732</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_specify'>specify</span><span class='lparen'>(</span> <span class='id identifier rubyid_subcmd'>subcmd</span><span class='comma'>,</span> <span class='id identifier rubyid_table'>table</span> <span class='rparen'>)</span>

    <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
    <span class='id identifier rubyid_subcmds'>subcmds</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>

    <span class='comment'># Type checks for valid user input.
</span>    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>Array</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Option table is not an Array</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>

    <span class='id identifier rubyid_table'>table</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
        <span class='id identifier rubyid_os'>os</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_specifyOptOrSub'><span class='object_link'><a href="#specifyOptOrSub-class_method" title="Como::Spec.specifyOptOrSub (method)">specifyOptOrSub</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_e'>e</span> <span class='rparen'>)</span>
        <span class='kw'>case</span> <span class='id identifier rubyid_os'>os</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span>
        <span class='kw'>when</span> <span class='symbol'>:subcmd</span><span class='semicolon'>;</span> <span class='id identifier rubyid_subcmds'>subcmds</span><span class='lbracket'>[</span> <span class='id identifier rubyid_os'>os</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_os'>os</span>
        <span class='kw'>else</span> <span class='id identifier rubyid_options'>options</span><span class='lbracket'>[</span> <span class='id identifier rubyid_os'>os</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_os'>os</span>
        <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_subcmd'>subcmd</span><span class='period'>.</span><span class='id identifier rubyid_setOptionSubcmd'>setOptionSubcmd</span><span class='lparen'>(</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span><span class='comma'>,</span> <span class='id identifier rubyid_subcmds'>subcmds</span><span class='period'>.</span><span class='id identifier rubyid_values'>values</span> <span class='rparen'>)</span>
    <span class='id identifier rubyid_subcmd'>subcmd</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="specifyOptOrSub-class_method">
  
    .<strong>specifyOptOrSub</strong>(opt_or_sub)  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Check/fix options specs and create option objects for the whole table.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>opt_or_sub</span>
      
      
        <span class='type'>(<tt>Array&lt;Array&gt;</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Option definition table.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 758</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_specifyOptOrSub'>specifyOptOrSub</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span> <span class='rparen'>)</span>

    <span class='comment'># Fix the table entries if needed.
</span>
    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span> <span class='op'>==</span> <span class='const'>Array</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Option table entry is not an Array</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='symbol'>:default</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>2</span>

        <span class='comment'># Add 2 dummy entries for :default type if needed.
</span>        <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='rbracket'>]</span>

    <span class='kw'>elsif</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='symbol'>:subcmd</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>3</span>

        <span class='comment'># Add 1 dummy entry for :subcmd type if needed.
</span>        <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span> <span class='op'>=</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>2</span><span class='rbracket'>]</span> <span class='rbracket'>]</span>

    <span class='kw'>end</span>

    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>4</span><span class='comma'>,</span>
        <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Option table entry length not 4</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='symbol'>:subcmd</span>

        <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_subcmd'><span class='object_link'><a href="Opt.html#subcmd-class_method" title="Como::Opt.subcmd (method)">subcmd</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>3</span><span class='rbracket'>]</span> <span class='rparen'>)</span>

    <span class='kw'>else</span>

        <span class='id identifier rubyid_types'>types</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_mapTypeToPrims'><span class='object_link'><a href="#mapTypeToPrims-class_method" title="Como::Spec.mapTypeToPrims (method)">mapTypeToPrims</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='rparen'>)</span>

        <span class='kw'>if</span> <span class='id identifier rubyid_types'>types</span><span class='period'>.</span><span class='id identifier rubyid_index'>index</span><span class='lparen'>(</span> <span class='symbol'>:default</span> <span class='rparen'>)</span>
            <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_defaultOpt'><span class='object_link'><a href="Opt.html#defaultOpt-class_method" title="Como::Opt.defaultOpt (method)">defaultOpt</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>3</span><span class='rbracket'>]</span> <span class='rparen'>)</span>
        <span class='kw'>else</span>
            <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_full'><span class='object_link'><a href="Opt.html#full-class_method" title="Como::Opt.full (method)">full</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span>
                      <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>2</span><span class='rbracket'>]</span><span class='comma'>,</span>
                      <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_mapTypeToPrims'><span class='object_link'><a href="#mapTypeToPrims-class_method" title="Como::Spec.mapTypeToPrims (method)">mapTypeToPrims</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span> <span class='rparen'>)</span><span class='comma'>,</span>
                      <span class='id identifier rubyid_opt_or_sub'>opt_or_sub</span><span class='lbracket'>[</span><span class='int'>3</span><span class='rbracket'>]</span> <span class='rparen'>)</span>
        <span class='kw'>end</span>

    <span class='kw'>end</span>

<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="usage-class_method">
  
    .<strong>usage</strong>  &#x21d2; <tt>Object</tt> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Display program usage (and optionally exit).</p>


  </div>
</div>
<div class="tags">
  

</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


877
878
879</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 877</span>

<span class='kw'>def</span> <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_usage'>usage</span>
    <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span><span class='period'>.</span><span class='id identifier rubyid_usage'>usage</span>
<span class='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">
  <h3 class="signature first" id="checkRule-instance_method">
  
    #<strong>checkRule</strong>(opt = nil, &amp;rule)  &#x21d2; <tt>Object</tt> 
  

  
    <span class="aliases">Also known as:
    <span class="names"><span id='check-instance_method'>check</span></span>
    </span>
  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Check option combination rules.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>opt</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>nil</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Opt name to which rules are set. If not given, Opt.current is used.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>rule</span>
      
      
        <span class='type'>(<tt>Proc</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Rules to check.</p>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


917
918
919
920
921
922
923
924</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 917</span>

<span class='kw'>def</span> <span class='id identifier rubyid_checkRule'>checkRule</span><span class='lparen'>(</span> <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_opt'>opt</span>
        <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='lbracket'>[</span> <span class='id identifier rubyid_opt'>opt</span> <span class='rbracket'>]</span>
    <span class='kw'>else</span>
        <span class='id identifier rubyid_opt'>opt</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_current'><span class='object_link'><a href="Opt.html#current-class_method" title="Como::Opt.current (method)">current</a></span></span>
    <span class='kw'>end</span>
    <span class='id identifier rubyid_opt'>opt</span><span class='period'>.</span><span class='id identifier rubyid_setRuleCheck'>setRuleCheck</span><span class='lparen'>(</span> <span class='op'>&amp;</span><span class='id identifier rubyid_rule'>rule</span> <span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="subcmd-instance_method">
  
    #<strong>subcmd</strong>(cmd, defs = [], config = {})  &#x21d2; <tt>Object</tt> 
  

  
    <span class="aliases">Also known as:
    <span class="names"><span id='command-instance_method'>command</span></span>
    </span>
  

  
</h3><div class="docstring">
  <div class="discussion">
    
<p>Define subcommand options.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>cmd</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'>
<p>Subcmd name.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>defs</span>
      
      
        <span class='type'>(<tt>Array&lt;Array&gt;</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>[]</tt>)</em>
      
      
        &mdash;
        <div class='inline'>
<p>Option definition table.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>config</span>
      
      
        <span class='type'></span>
      
      
        <em class="default">(defaults to: <tt>{}</tt>)</em>
      
      
        &mdash;
        <div class='inline'><dl class="rdoc-list label-list"><dt>
<dd>
<p>Configuration options.</p>
</dd></dl>
</div>
      
    </li>
  
</ul>


</div><table class="source_code">
  <tr>
    <td>
      <pre class="lines">


690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/como.rb', line 690</span>

<span class='kw'>def</span> <span class='id identifier rubyid_subcmd'>subcmd</span><span class='lparen'>(</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span> <span class='rparen'>)</span>

    <span class='kw'>unless</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_main'><span class='object_link'><a href="Opt.html#main-class_method" title="Como::Opt.main (method)">main</a></span></span>

        <span class='id identifier rubyid_main'>main</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="MainOpt.html" title="Como::MainOpt (class)">MainOpt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="MainOpt.html#initialize-instance_method" title="Como::MainOpt#initialize (method)">new</a></span></span><span class='lparen'>(</span> <span class='ivar'>@author</span><span class='comma'>,</span> <span class='ivar'>@year</span><span class='comma'>,</span>
            <span class='id identifier rubyid_cmd'>cmd</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='symbol'>:subcmd</span><span class='comma'>,</span> <span class='kw'>nil</span> <span class='rparen'>)</span>
        <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setMain'><span class='object_link'><a href="Opt.html#setMain-class_method" title="Como::Opt.setMain (method)">setMain</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_main'>main</span> <span class='rparen'>)</span>
        <span class='id identifier rubyid_subcmd'>subcmd</span> <span class='op'>=</span> <span class='id identifier rubyid_main'>main</span>

    <span class='kw'>else</span>

        <span class='id identifier rubyid_subcmd'>subcmd</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_findOpt'><span class='object_link'><a href="Opt.html#findOpt-class_method" title="Como::Opt.findOpt (method)">findOpt</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_cmd'>cmd</span> <span class='rparen'>)</span>

        <span class='const'><span class='object_link'><a href="Opt.html" title="Como::Opt (class)">Opt</a></span></span><span class='period'>.</span><span class='id identifier rubyid_setSubcmd'><span class='object_link'><a href="Opt.html#setSubcmd-class_method" title="Como::Opt.setSubcmd (method)">setSubcmd</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_subcmd'>subcmd</span> <span class='rparen'>)</span>

        <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='const'>ArgCheck</span><span class='lparen'>(</span> <span class='kw'>false</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Subcommand \&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_cmd'>cmd</span><span class='embexpr_end'>}</span><span class='tstring_content'>\&quot; not defined.</span><span class='tstring_end'>&quot;</span></span> <span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_subcmd'>subcmd</span>

    <span class='kw'>end</span>

    <span class='comment'># Overlay user config on top of default.
</span>    <span class='id identifier rubyid_subcmd'>subcmd</span><span class='period'>.</span><span class='id identifier rubyid_applyConfig'>applyConfig</span><span class='lparen'>(</span> <span class='id identifier rubyid_config'>config</span> <span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_subcmd'>subcmd</span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span><span class='lbracket'>[</span> <span class='symbol'>:autohelp</span> <span class='rbracket'>]</span>
        <span class='comment'># Automatically add the help option and make it also mutex.
</span>        <span class='id identifier rubyid_spec'>spec</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#MAP_TYPE_PRIMS-constant" title="Como::Spec::MAP_TYPE_PRIMS (constant)">MAP_TYPE_PRIMS</a></span></span><span class='lbracket'>[</span> <span class='symbol'>:silent</span> <span class='rbracket'>]</span> <span class='op'>+</span> <span class='lbracket'>[</span> <span class='symbol'>:mutex</span> <span class='rbracket'>]</span>
        <span class='id identifier rubyid_defs'>defs</span><span class='period'>.</span><span class='id identifier rubyid_insert'>insert</span><span class='lparen'>(</span> <span class='int'>0</span><span class='comma'>,</span> <span class='lbracket'>[</span> <span class='id identifier rubyid_spec'>spec</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>help</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>-h</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Display usage info.</span><span class='tstring_end'>&quot;</span></span> <span class='rbracket'>]</span> <span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='const'><span class='object_link'><a href="" title="Como::Spec (class)">Spec</a></span></span><span class='period'>.</span><span class='id identifier rubyid_specify'><span class='object_link'><a href="#specify-class_method" title="Como::Spec.specify (method)">specify</a></span></span><span class='lparen'>(</span> <span class='id identifier rubyid_subcmd'>subcmd</span><span class='comma'>,</span> <span class='id identifier rubyid_defs'>defs</span> <span class='rparen'>)</span>

<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

      <div id="footer">
  Generated on Sun Oct 21 19:10:52 2018 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.9.16 (ruby-2.5.1).
</div>

    </div>
  </body>
</html>