ShogunPanda/pincerna

View on GitHub
docs/Pincerna/Base.html

Summary

Maintainability
Test Coverage
<!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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
  Class: Pincerna::Base
  
    &mdash; Documentation by YARD 0.8.7
  
</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">
  hasFrames = window.top.frames.main ? true : false;
  relpath = '../';
  framesUrl = "../frames.html#!" + escape(window.location.href);
</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 id="header">
      <div id="menu">
  
    <a href="../_index.html">Index (B)</a> &raquo;
    <span class='title'><span class='object_link'><a href="../Pincerna.html" title="Pincerna (module)">Pincerna</a></span></span>
     &raquo; 
    <span class="title">Base</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 class="full_list_link" id="class_list_link"
        href="../class_list.html">
      Class List
    </a>
  
    <a class="full_list_link" id="method_list_link"
        href="../method_list.html">
      Method List
    </a>
  
    <a class="full_list_link" id="file_list_link"
        href="../file_list.html">
      File List
    </a>
  
</div>
      <div class="clear"></div>
    </div>

    <iframe id="search_frame"></iframe>

    <div id="content"><h1>Class: Pincerna::Base
  
  
  
</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">Pincerna::Base</li>
          
        </ul>
        <a href="#" class="inheritanceTree">show all</a>
      
      </dd>
    
  
  
    
  
    
  
  
  
    <dt class="r2 last">Defined in:</dt>
    <dd class="r2 last">lib/pincerna/base.rb</dd>
  
</dl>
<div class="clear"></div>

<h2>Overview</h2><div class="docstring">
  <div class="discussion">
    <p>Base class for all filter.</p>


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

</div><div id="subclasses">
  <h2>Direct Known Subclasses</h2>
  <p class="children"><span class='object_link'><a href="Bookmark.html" title="Pincerna::Bookmark (class)">Bookmark</a></span>, <span class='object_link'><a href="CurrencyConversion.html" title="Pincerna::CurrencyConversion (class)">CurrencyConversion</a></span>, <span class='object_link'><a href="Ip.html" title="Pincerna::Ip (class)">Ip</a></span>, <span class='object_link'><a href="Map.html" title="Pincerna::Map (class)">Map</a></span>, <span class='object_link'><a href="Translation.html" title="Pincerna::Translation (class)">Translation</a></span>, <span class='object_link'><a href="UnitConversion.html" title="Pincerna::UnitConversion (class)">UnitConversion</a></span>, <span class='object_link'><a href="Vpn.html" title="Pincerna::Vpn (class)">Vpn</a></span>, <span class='object_link'><a href="Weather.html" title="Pincerna::Weather (class)">Weather</a></span></p>
</div>

  <h2>Constant Summary</h2>
  
    <dl class="constants">
      
        <dt id="MATCHER-constant" class="">MATCHER =
          <div class="docstring">
  <div class="discussion">
    <p>The expression to match.</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(?&lt;all&gt;.*)$</span><span class='regexp_end'>/i</span></span></pre></dd>
      
        <dt id="RELEVANT_MATCHES-constant" class="">RELEVANT_MATCHES =
          <div class="docstring">
  <div class="discussion">
    <p>Relevant groups in the match.</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='lbrace'>{</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>all</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
<span class='rbrace'>}</span></pre></dd>
      
        <dt id="TYPES-constant" class="">TYPES =
          <div class="docstring">
  <div class="discussion">
    <p>Recognized types of filtering</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='lbrace'>{</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unit_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(convert|unit|c)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>currency_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(currency|cc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>translation</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(translate|t)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>map</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(map|m)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>weather</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(forecast|weather)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ip</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^ip$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>vpn</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^vpn$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>chrome_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(chrome-bookmark|bc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>safari_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(safari-bookmark|bs)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>firefox_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(firefox-bookmark|bf)$</span><span class='regexp_end'>/</span></span>
<span class='rbrace'>}</span></pre></dd>
      
        <dt id="FULL_NAME-constant" class="">FULL_NAME =
          <div class="docstring">
  <div class="discussion">
    <p>The full name of the gem</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>it.cowtech.pincerna</span><span class='tstring_end'>&quot;</span></span></pre></dd>
      
        <dt id="ROOT-constant" class="">ROOT =
          <div class="docstring">
  <div class="discussion">
    <p>The root of the pincerna gem</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></pre></dd>
      
        <dt id="CACHE_ROOT-constant" class="">CACHE_ROOT =
          <div class="docstring">
  <div class="discussion">
    <p>The root of the cache</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></pre></dd>
      
        <dt id="WORKFLOW_ROOT-constant" class="">WORKFLOW_ROOT =
          <div class="docstring">
  <div class="discussion">
    <p>The root of alfred workflows</p>


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

</div>
        </dt>
        <dd><pre class="code"><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span></pre></dd>
      
    </dl>
  




  <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
  <ul class="summary">
    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#format-instance_method" title="#format (instance method)">- (Symbol) <strong>format</strong> </a>
    

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

  
    <span class="summary_desc"><div class='inline'><p>The format of output.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#format_content_type-instance_method" title="#format_content_type (instance method)">- (String) <strong>format_content_type</strong> </a>
    

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

  
    <span class="summary_desc"><div class='inline'><p>The content type of the format.</p>
</div></span>
  
</li>

    
      <li class="public ">
  <span class="summary_signature">
    
      <a href="#output-instance_method" title="#output (instance method)">- (String) <strong>output</strong> </a>
    

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

  
    <span class="summary_desc"><div class='inline'><p>The output of filtering.</p>
</div></span>
  
</li>

    
  </ul>




  
    <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="#execute%21-class_method" title="execute! (class method)">+ (String) <strong>execute!</strong>(type, query, format = :xml, debug = nil) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Executes a filtering query.</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="#add_feedback_item-instance_method" title="#add_feedback_item (instance method)">- (Object) <strong>add_feedback_item</strong>(item) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Adds a feedback items.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#filter-instance_method" title="#filter (instance method)">- (String) <strong>filter</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Filters a query.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#format_float-instance_method" title="#format_float (instance method)">- (String) <strong>format_float</strong>(value, precision = 3) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Rounds a float to a certain precision and prints it as a string.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#initialize-instance_method" title="#initialize (instance method)">- (Base) <strong>initialize</strong>(query, requested_format = &quot;xml&quot;, debug = nil) </a>
    

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

  
    <span class="summary_desc"><div class='inline'><p>Creates a new query.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#output_feedback-instance_method" title="#output_feedback (instance method)">- (Object) <strong>output_feedback</strong> </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Prepares the feedback for output.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#perform_filtering-instance_method" title="#perform_filtering (instance method)">- (Array) <strong>perform_filtering</strong>(*args) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Filters a query.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#process_results-instance_method" title="#process_results (instance method)">- (Array) <strong>process_results</strong>(results) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Processes items to obtain feedback items.</p>
</div></span>
  
</li>

      
        <li class="public ">
  <span class="summary_signature">
    
      <a href="#round_float-instance_method" title="#round_float (instance method)">- (Float) <strong>round_float</strong>(value, precision = 3) </a>
    

    
  </span>
  
  
  
  
  
  
  

  
    <span class="summary_desc"><div class='inline'><p>Rounds a float to a certain precision.</p>
</div></span>
  
</li>

      
    </ul>
  

<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">
  
    - (<tt><span class='object_link'><a href="" title="Pincerna::Base (class)">Base</a></span></tt>) <strong>initialize</strong>(query, requested_format = &quot;xml&quot;, debug = nil) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Creates a new query.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>query</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The argument of the query.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>requested_format</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>&quot;xml&quot;</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The format to use. Valid values are <code>xml</code> (default), <code>yaml</code> or <code>yml</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>debug</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>nil</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The debug mode.</p>
</div>
      
    </li>
  
</ul>


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


85
86
87
88
89
90
91
92
93
94
95
96
97
98
99</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 85</span>

<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>xml</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
  <span class='ivar'>@query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\ </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'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>

  <span class='kw'>if</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^y(a?)ml$</span><span class='regexp_end'>/i</span></span> <span class='kw'>then</span>
    <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
    <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/x-yaml</span><span class='tstring_end'>&quot;</span></span>
  <span class='kw'>else</span>
    <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
    <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/xml</span><span class='tstring_end'>&quot;</span></span>
  <span class='kw'>end</span>

  <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
  <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
<span class='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>
      <div class="method_details first">
  <h3 class="signature first" id="format-instance_method">
  
    - (<tt>Symbol</tt>) <strong>format</strong>  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The format of output. Can be <code>:xml</code> (default) or <code>:yml</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Symbol</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The format of output. Can be <code>:xml</code> (default) or <code>:yml</code>.</p>
</div>
      
    </li>
  
</ul>

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


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>

<span class='kw'>class</span> <span class='const'>Base</span>
  <span class='comment'># The expression to match.
</span>  <span class='const'>MATCHER</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(?&lt;all&gt;.*)$</span><span class='regexp_end'>/i</span></span>

  <span class='comment'># Relevant groups in the match.
</span>  <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>all</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
  <span class='rbrace'>}</span>

  <span class='comment'># Recognized types of filtering
</span>  <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unit_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(convert|unit|c)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>currency_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(currency|cc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>translation</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(translate|t)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>map</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(map|m)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>weather</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(forecast|weather)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ip</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^ip$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>vpn</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^vpn$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>chrome_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(chrome-bookmark|bc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>safari_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(safari-bookmark|bs)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>firefox_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(firefox-bookmark|bf)$</span><span class='regexp_end'>/</span></span>
  <span class='rbrace'>}</span>

  <span class='comment'># The full name of the gem
</span>  <span class='const'>FULL_NAME</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>it.cowtech.pincerna</span><span class='tstring_end'>&quot;</span></span>

  <span class='comment'># The root of the pincerna gem
</span>  <span class='const'>ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of the cache
</span>  <span class='const'>CACHE_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of alfred workflows
</span>  <span class='const'>WORKFLOW_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:output</span><span class='comma'>,</span> <span class='symbol'>:format</span><span class='comma'>,</span> <span class='symbol'>:format_content_type</span>

  <span class='comment'># Executes a filtering query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param type [Symbol] The type of the query.
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='comment'># @return [String] The result of the query.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_execute!'>execute!</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='symbol'>:xml</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='rparen'>)</span> <span class='kw'>do</span>
      <span class='const'>TYPES</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_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_matcher'>matcher</span><span class='op'>|</span>
        <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=~</span> <span class='id identifier rubyid_matcher'>matcher</span>
      <span class='kw'>end</span>

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

    <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
      <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance'>instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>xml</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='ivar'>@query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\ </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'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^y(a?)ml$</span><span class='regexp_end'>/i</span></span> <span class='kw'>then</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/x-yaml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>else</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/xml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>end</span>

    <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
    <span class='comment'># Match the query
</span>    <span class='id identifier rubyid_matches'>matches</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>MATCHER</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='ivar'>@query</span><span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
      <span class='comment'># Execute the filtering
</span>      <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>

      <span class='comment'># Show results if appropriate
</span>      <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_r'>r</span><span class='op'>|</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_r'>r</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_output_feedback'>output_feedback</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param args [Array] The arguments of the query.
</span>  <span class='comment'># @return [Array] A list of items to process.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Processes items to obtain feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param results [Array] The items to process.
</span>  <span class='comment'># @return [Array] The feedback items.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Adds a feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param item [Array] The items to add.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
  <span class='kw'>end</span>

  <span class='comment'># Prepares the feedback for output.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>==</span> <span class='symbol'>:xml</span> <span class='kw'>then</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='const'>Nokogiri</span><span class='op'>::</span><span class='const'>XML</span><span class='op'>::</span><span class='const'>Builder</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_xml'>xml</span><span class='op'>|</span>
        <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_items'>items</span> <span class='kw'>do</span>
          <span class='ivar'>@feedback_items</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_item'>item</span><span class='op'>|</span>
            <span class='id identifier rubyid_childs'>childs</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>

            <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_item'>item</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
              <span class='id identifier rubyid_childs'>childs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
            <span class='kw'>end</span>
          <span class='kw'>end</span>
        <span class='kw'>end</span>
      <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
    <span class='kw'>else</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='ivar'>@feedback_items</span><span class='period'>.</span><span class='id identifier rubyid_to_yaml'>to_yaml</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to convert.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [Float] The rounded value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_factor'>factor</span> <span class='op'>=</span> <span class='int'>10</span><span class='op'>**</span><span class='id identifier rubyid_precision'>precision</span>
    <span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span> <span class='op'>*</span> <span class='id identifier rubyid_factor'>factor</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>/</span> <span class='id identifier rubyid_factor'>factor</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to print.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [String] The formatted value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_format_float'>format_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_precision'>precision</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='id identifier rubyid_value'>value</span>
    <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\.?0+$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_protected'>protected</span>
    <span class='comment'># Instantiates the new class.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param file [String] The file name.
</span>    <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
      <span class='const'>Pincerna</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'>capitalize</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_(.)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='backref'>$1</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span><span class='rbrace'>}</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes filtering on matched data.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param matches [MatchData] The matched data.
</span>    <span class='comment'># @return [Array] The results of filtering.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>
      <span class='comment'># Get relevant matches and arguments.
</span>      <span class='id identifier rubyid_relevant'>relevant</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>RELEVANT_MATCHES</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='id identifier rubyid_relevant'>relevant</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_matches'>matches</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span>

      <span class='comment'># Now perform the operation
</span>      <span class='kw'>begin</span>
        <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
        <span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span> <span class='op'>==</span> <span class='symbol'>:error</span>
        <span class='lbracket'>[</span><span class='rbracket'>]</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='comment'># Converts an array of key-value pairs to an hash.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param array [Array] The array to convert.
</span>    <span class='comment'># @return [Hash] The converted hash.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='op'>|</span>
        <span class='id identifier rubyid_rv'>rv</span><span class='lbracket'>[</span><span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
        <span class='id identifier rubyid_rv'>rv</span>
      <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Gets attributes and children for output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param item [Hash] The output item.
</span>    <span class='comment'># @return [Array] An array with children and attributes.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_item'>item</span><span class='period'>.</span><span class='id identifier rubyid_partition'>partition</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='symbol'>:title</span><span class='comma'>,</span> <span class='symbol'>:subtitle</span><span class='comma'>,</span> <span class='symbol'>:icon</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_k'>k</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='op'>|</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Fetches remote JSON resource.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param url [String] The URL to get.
</span>    <span class='comment'># @param params [Hash] The parameters to pass to the server.
</span>    <span class='comment'># @param json [Boolean] If the response is a JSON object.
</span>    <span class='comment'># @return [Hash] The server&#39;s response.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_fetch_remote_resource'>fetch_remote_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='label'>query:</span> <span class='id identifier rubyid_params'>params</span><span class='rbrace'>}</span>
      <span class='id identifier rubyid_args'>args</span><span class='lbracket'>[</span><span class='symbol'>:head</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>accept</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>application/json</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='id identifier rubyid_json'>json</span>
      <span class='id identifier rubyid_response'>response</span> <span class='op'>=</span> <span class='const'>EM</span><span class='op'>::</span><span class='const'>HttpRequest</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>connect_timeout:</span> <span class='int'>5</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_response'>response</span>
      <span class='id identifier rubyid_json'>json</span> <span class='op'>?</span> <span class='const'>Oj</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_response'>response</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_response'>response</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes a command and returns its output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param args [Array] The command to execute, with its arguments.
</span>    <span class='comment'># @return [String] The output of the command
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_command'>execute_command</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
      <span class='const'>IO</span><span class='period'>.</span><span class='id identifier rubyid_popen'>popen</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid_rv'>rv</span>
    <span class='kw'>end</span>

    <span class='comment'># Returns the current debug mode.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Boolean|NilClass] The current debug mode.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
      <span class='id identifier rubyid_mode'>mode</span> <span class='op'>=</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PINCERNA_DEBUG</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='ivar'>@debug</span>
      <span class='op'>!</span><span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span> <span class='op'>:</span> <span class='kw'>nil</span>
    <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id=""></span>
      <div class="method_details ">
  <h3 class="signature " id="format_content_type-instance_method">
  
    - (<tt>String</tt>) <strong>format_content_type</strong>  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The content type of the format. Can be <code>text/xml</code> (default) or <code>text/x-yaml</code>.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The content type of the format. Can be <code>text/xml</code> (default) or <code>text/x-yaml</code>.</p>
</div>
      
    </li>
  
</ul>

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


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>

<span class='kw'>class</span> <span class='const'>Base</span>
  <span class='comment'># The expression to match.
</span>  <span class='const'>MATCHER</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(?&lt;all&gt;.*)$</span><span class='regexp_end'>/i</span></span>

  <span class='comment'># Relevant groups in the match.
</span>  <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>all</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
  <span class='rbrace'>}</span>

  <span class='comment'># Recognized types of filtering
</span>  <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unit_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(convert|unit|c)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>currency_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(currency|cc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>translation</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(translate|t)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>map</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(map|m)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>weather</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(forecast|weather)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ip</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^ip$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>vpn</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^vpn$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>chrome_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(chrome-bookmark|bc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>safari_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(safari-bookmark|bs)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>firefox_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(firefox-bookmark|bf)$</span><span class='regexp_end'>/</span></span>
  <span class='rbrace'>}</span>

  <span class='comment'># The full name of the gem
</span>  <span class='const'>FULL_NAME</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>it.cowtech.pincerna</span><span class='tstring_end'>&quot;</span></span>

  <span class='comment'># The root of the pincerna gem
</span>  <span class='const'>ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of the cache
</span>  <span class='const'>CACHE_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of alfred workflows
</span>  <span class='const'>WORKFLOW_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:output</span><span class='comma'>,</span> <span class='symbol'>:format</span><span class='comma'>,</span> <span class='symbol'>:format_content_type</span>

  <span class='comment'># Executes a filtering query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param type [Symbol] The type of the query.
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='comment'># @return [String] The result of the query.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_execute!'>execute!</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='symbol'>:xml</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='rparen'>)</span> <span class='kw'>do</span>
      <span class='const'>TYPES</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_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_matcher'>matcher</span><span class='op'>|</span>
        <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=~</span> <span class='id identifier rubyid_matcher'>matcher</span>
      <span class='kw'>end</span>

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

    <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
      <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance'>instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>xml</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='ivar'>@query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\ </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'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^y(a?)ml$</span><span class='regexp_end'>/i</span></span> <span class='kw'>then</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/x-yaml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>else</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/xml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>end</span>

    <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
    <span class='comment'># Match the query
</span>    <span class='id identifier rubyid_matches'>matches</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>MATCHER</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='ivar'>@query</span><span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
      <span class='comment'># Execute the filtering
</span>      <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>

      <span class='comment'># Show results if appropriate
</span>      <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_r'>r</span><span class='op'>|</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_r'>r</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_output_feedback'>output_feedback</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param args [Array] The arguments of the query.
</span>  <span class='comment'># @return [Array] A list of items to process.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Processes items to obtain feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param results [Array] The items to process.
</span>  <span class='comment'># @return [Array] The feedback items.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Adds a feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param item [Array] The items to add.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
  <span class='kw'>end</span>

  <span class='comment'># Prepares the feedback for output.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>==</span> <span class='symbol'>:xml</span> <span class='kw'>then</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='const'>Nokogiri</span><span class='op'>::</span><span class='const'>XML</span><span class='op'>::</span><span class='const'>Builder</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_xml'>xml</span><span class='op'>|</span>
        <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_items'>items</span> <span class='kw'>do</span>
          <span class='ivar'>@feedback_items</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_item'>item</span><span class='op'>|</span>
            <span class='id identifier rubyid_childs'>childs</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>

            <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_item'>item</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
              <span class='id identifier rubyid_childs'>childs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
            <span class='kw'>end</span>
          <span class='kw'>end</span>
        <span class='kw'>end</span>
      <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
    <span class='kw'>else</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='ivar'>@feedback_items</span><span class='period'>.</span><span class='id identifier rubyid_to_yaml'>to_yaml</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to convert.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [Float] The rounded value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_factor'>factor</span> <span class='op'>=</span> <span class='int'>10</span><span class='op'>**</span><span class='id identifier rubyid_precision'>precision</span>
    <span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span> <span class='op'>*</span> <span class='id identifier rubyid_factor'>factor</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>/</span> <span class='id identifier rubyid_factor'>factor</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to print.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [String] The formatted value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_format_float'>format_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_precision'>precision</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='id identifier rubyid_value'>value</span>
    <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\.?0+$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_protected'>protected</span>
    <span class='comment'># Instantiates the new class.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param file [String] The file name.
</span>    <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
      <span class='const'>Pincerna</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'>capitalize</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_(.)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='backref'>$1</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span><span class='rbrace'>}</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes filtering on matched data.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param matches [MatchData] The matched data.
</span>    <span class='comment'># @return [Array] The results of filtering.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>
      <span class='comment'># Get relevant matches and arguments.
</span>      <span class='id identifier rubyid_relevant'>relevant</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>RELEVANT_MATCHES</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='id identifier rubyid_relevant'>relevant</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_matches'>matches</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span>

      <span class='comment'># Now perform the operation
</span>      <span class='kw'>begin</span>
        <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
        <span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span> <span class='op'>==</span> <span class='symbol'>:error</span>
        <span class='lbracket'>[</span><span class='rbracket'>]</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='comment'># Converts an array of key-value pairs to an hash.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param array [Array] The array to convert.
</span>    <span class='comment'># @return [Hash] The converted hash.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='op'>|</span>
        <span class='id identifier rubyid_rv'>rv</span><span class='lbracket'>[</span><span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
        <span class='id identifier rubyid_rv'>rv</span>
      <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Gets attributes and children for output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param item [Hash] The output item.
</span>    <span class='comment'># @return [Array] An array with children and attributes.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_item'>item</span><span class='period'>.</span><span class='id identifier rubyid_partition'>partition</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='symbol'>:title</span><span class='comma'>,</span> <span class='symbol'>:subtitle</span><span class='comma'>,</span> <span class='symbol'>:icon</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_k'>k</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='op'>|</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Fetches remote JSON resource.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param url [String] The URL to get.
</span>    <span class='comment'># @param params [Hash] The parameters to pass to the server.
</span>    <span class='comment'># @param json [Boolean] If the response is a JSON object.
</span>    <span class='comment'># @return [Hash] The server&#39;s response.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_fetch_remote_resource'>fetch_remote_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='label'>query:</span> <span class='id identifier rubyid_params'>params</span><span class='rbrace'>}</span>
      <span class='id identifier rubyid_args'>args</span><span class='lbracket'>[</span><span class='symbol'>:head</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>accept</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>application/json</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='id identifier rubyid_json'>json</span>
      <span class='id identifier rubyid_response'>response</span> <span class='op'>=</span> <span class='const'>EM</span><span class='op'>::</span><span class='const'>HttpRequest</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>connect_timeout:</span> <span class='int'>5</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_response'>response</span>
      <span class='id identifier rubyid_json'>json</span> <span class='op'>?</span> <span class='const'>Oj</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_response'>response</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_response'>response</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes a command and returns its output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param args [Array] The command to execute, with its arguments.
</span>    <span class='comment'># @return [String] The output of the command
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_command'>execute_command</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
      <span class='const'>IO</span><span class='period'>.</span><span class='id identifier rubyid_popen'>popen</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid_rv'>rv</span>
    <span class='kw'>end</span>

    <span class='comment'># Returns the current debug mode.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Boolean|NilClass] The current debug mode.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
      <span class='id identifier rubyid_mode'>mode</span> <span class='op'>=</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PINCERNA_DEBUG</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='ivar'>@debug</span>
      <span class='op'>!</span><span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span> <span class='op'>:</span> <span class='kw'>nil</span>
    <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      
      <span id=""></span>
      <div class="method_details ">
  <h3 class="signature " id="output-instance_method">
  
    - (<tt>String</tt>) <strong>output</strong>  <span class="extras">(readonly)</span>
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Returns The output of filtering.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The output of filtering.</p>
</div>
      
    </li>
  
</ul>

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


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>

<span class='kw'>class</span> <span class='const'>Base</span>
  <span class='comment'># The expression to match.
</span>  <span class='const'>MATCHER</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(?&lt;all&gt;.*)$</span><span class='regexp_end'>/i</span></span>

  <span class='comment'># Relevant groups in the match.
</span>  <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>all</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tlambda'>-&gt;</span><span class='lparen'>(</span><span class='id identifier rubyid__'>_</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='tlambeg'>{</span> <span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
  <span class='rbrace'>}</span>

  <span class='comment'># Recognized types of filtering
</span>  <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>unit_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(convert|unit|c)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>currency_conversion</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(currency|cc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>translation</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(translate|t)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>map</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(map|m)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>weather</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(forecast|weather)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>ip</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^ip$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>vpn</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^vpn$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>chrome_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(chrome-bookmark|bc)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>safari_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(safari-bookmark|bs)$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span>
    <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>firefox_bookmark</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^(firefox-bookmark|bf)$</span><span class='regexp_end'>/</span></span>
  <span class='rbrace'>}</span>

  <span class='comment'># The full name of the gem
</span>  <span class='const'>FULL_NAME</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>it.cowtech.pincerna</span><span class='tstring_end'>&quot;</span></span>

  <span class='comment'># The root of the pincerna gem
</span>  <span class='const'>ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_dirname'>dirname</span><span class='lparen'>(</span><span class='kw'>__FILE__</span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>/../../</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of the cache
</span>  <span class='const'>CACHE_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Caches/com.runningwithcrayons.Alfred-2/Workflow Data/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='comment'># The root of alfred workflows
</span>  <span class='const'>WORKFLOW_ROOT</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_expand_path'>expand_path</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>~/Library/Application Support/Alfred 2/Alfred.alfredpreferences/workflows/</span><span class='embexpr_beg'>#{</span><span class='const'>FULL_NAME</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>

  <span class='id identifier rubyid_attr_reader'>attr_reader</span> <span class='symbol'>:output</span><span class='comma'>,</span> <span class='symbol'>:format</span><span class='comma'>,</span> <span class='symbol'>:format_content_type</span>

  <span class='comment'># Executes a filtering query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param type [Symbol] The type of the query.
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='comment'># @return [String] The result of the query.
</span>  <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_execute!'>execute!</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='symbol'>:xml</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>

    <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='rparen'>)</span> <span class='kw'>do</span>
      <span class='const'>TYPES</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_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_matcher'>matcher</span><span class='op'>|</span>
        <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=~</span> <span class='id identifier rubyid_matcher'>matcher</span>
      <span class='kw'>end</span>

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

    <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
      <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_instance'>instance</span>
  <span class='kw'>end</span>

  <span class='comment'># Creates a new query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param query [String] The argument of the query.
</span>  <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
</span>  <span class='comment'># @param debug [String] The debug mode.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>xml</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
    <span class='ivar'>@query</span> <span class='op'>=</span> <span class='id identifier rubyid_query'>query</span><span class='period'>.</span><span class='id identifier rubyid_strip'>strip</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\\ </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'> </span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
    <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_requested_format'>requested_format</span> <span class='op'>=~</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>^y(a?)ml$</span><span class='regexp_end'>/i</span></span> <span class='kw'>then</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/x-yaml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>else</span>
      <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
      <span class='ivar'>@format_content_type</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>text/xml</span><span class='tstring_end'>&quot;</span></span>
    <span class='kw'>end</span>

    <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
    <span class='comment'># Match the query
</span>    <span class='id identifier rubyid_matches'>matches</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>MATCHER</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='ivar'>@query</span><span class='rparen'>)</span>

    <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
      <span class='comment'># Execute the filtering
</span>      <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>

      <span class='comment'># Show results if appropriate
</span>      <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_r'>r</span><span class='op'>|</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_r'>r</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
    <span class='kw'>end</span>

    <span class='id identifier rubyid_output_feedback'>output_feedback</span>
  <span class='kw'>end</span>

  <span class='comment'># Filters a query.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param args [Array] The arguments of the query.
</span>  <span class='comment'># @return [Array] A list of items to process.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Processes items to obtain feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param results [Array] The items to process.
</span>  <span class='comment'># @return [Array] The feedback items.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='comment'># Adds a feedback items.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param item [Array] The items to add.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
    <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
  <span class='kw'>end</span>

  <span class='comment'># Prepares the feedback for output.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
    <span class='kw'>if</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>==</span> <span class='symbol'>:xml</span> <span class='kw'>then</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='const'>Nokogiri</span><span class='op'>::</span><span class='const'>XML</span><span class='op'>::</span><span class='const'>Builder</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_xml'>xml</span><span class='op'>|</span>
        <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_items'>items</span> <span class='kw'>do</span>
          <span class='ivar'>@feedback_items</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_item'>item</span><span class='op'>|</span>
            <span class='id identifier rubyid_childs'>childs</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>

            <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_item'>item</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
              <span class='id identifier rubyid_childs'>childs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
            <span class='kw'>end</span>
          <span class='kw'>end</span>
        <span class='kw'>end</span>
      <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
    <span class='kw'>else</span>
      <span class='ivar'>@output</span> <span class='op'>=</span> <span class='ivar'>@feedback_items</span><span class='period'>.</span><span class='id identifier rubyid_to_yaml'>to_yaml</span>
    <span class='kw'>end</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to convert.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [Float] The rounded value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_factor'>factor</span> <span class='op'>=</span> <span class='int'>10</span><span class='op'>**</span><span class='id identifier rubyid_precision'>precision</span>
    <span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span> <span class='op'>*</span> <span class='id identifier rubyid_factor'>factor</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>/</span> <span class='id identifier rubyid_factor'>factor</span>
  <span class='kw'>end</span>

  <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
</span>  <span class='comment'>#
</span>  <span class='comment'># @param value [Float] The value to print.
</span>  <span class='comment'># @param precision [Fixnum] The precision to use.
</span>  <span class='comment'># @return [String] The formatted value.
</span>  <span class='kw'>def</span> <span class='id identifier rubyid_format_float'>format_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_precision'>precision</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='id identifier rubyid_value'>value</span>
    <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\.?0+$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_protected'>protected</span>
    <span class='comment'># Instantiates the new class.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param file [String] The file name.
</span>    <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span>
      <span class='const'>Pincerna</span><span class='period'>.</span><span class='id identifier rubyid_const_get'>const_get</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_capitalize'>capitalize</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>_(.)</span><span class='regexp_end'>/</span></span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='backref'>$1</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span><span class='rbrace'>}</span><span class='rparen'>)</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes filtering on matched data.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param matches [MatchData] The matched data.
</span>    <span class='comment'># @return [Array] The results of filtering.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>
      <span class='comment'># Get relevant matches and arguments.
</span>      <span class='id identifier rubyid_relevant'>relevant</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>RELEVANT_MATCHES</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='id identifier rubyid_relevant'>relevant</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_key'>key</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_call'>call</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_matches'>matches</span><span class='lbracket'>[</span><span class='id identifier rubyid_key'>key</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span>

      <span class='comment'># Now perform the operation
</span>      <span class='kw'>begin</span>
        <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
        <span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span> <span class='kw'>if</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span> <span class='op'>==</span> <span class='symbol'>:error</span>
        <span class='lbracket'>[</span><span class='rbracket'>]</span>
      <span class='kw'>end</span>
    <span class='kw'>end</span>

    <span class='comment'># Converts an array of key-value pairs to an hash.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param array [Array] The array to convert.
</span>    <span class='comment'># @return [Hash] The converted hash.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_reduce'>reduce</span><span class='lparen'>(</span><span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_rv'>rv</span><span class='comma'>,</span> <span class='id identifier rubyid_entry'>entry</span><span class='op'>|</span>
        <span class='id identifier rubyid_rv'>rv</span><span class='lbracket'>[</span><span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_entry'>entry</span><span class='lbracket'>[</span><span class='int'>1</span><span class='rbracket'>]</span>
        <span class='id identifier rubyid_rv'>rv</span>
      <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Gets attributes and children for output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param item [Hash] The output item.
</span>    <span class='comment'># @return [Array] An array with children and attributes.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_item'>item</span><span class='period'>.</span><span class='id identifier rubyid_partition'>partition</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_k'>k</span><span class='comma'>,</span> <span class='id identifier rubyid__'>_</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='symbol'>:title</span><span class='comma'>,</span> <span class='symbol'>:subtitle</span><span class='comma'>,</span> <span class='symbol'>:icon</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_k'>k</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_a'>a</span><span class='op'>|</span> <span class='id identifier rubyid_array_to_hash'>array_to_hash</span><span class='lparen'>(</span><span class='id identifier rubyid_a'>a</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
    <span class='kw'>end</span>

    <span class='comment'># Fetches remote JSON resource.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param url [String] The URL to get.
</span>    <span class='comment'># @param params [Hash] The parameters to pass to the server.
</span>    <span class='comment'># @param json [Boolean] If the response is a JSON object.
</span>    <span class='comment'># @return [Hash] The server&#39;s response.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_fetch_remote_resource'>fetch_remote_resource</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='id identifier rubyid_params'>params</span><span class='comma'>,</span> <span class='id identifier rubyid_json'>json</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_args'>args</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='label'>query:</span> <span class='id identifier rubyid_params'>params</span><span class='rbrace'>}</span>
      <span class='id identifier rubyid_args'>args</span><span class='lbracket'>[</span><span class='symbol'>:head</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>accept</span><span class='tstring_end'>&quot;</span></span> <span class='op'>=&gt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>application/json</span><span class='tstring_end'>&quot;</span></span><span class='rbrace'>}</span> <span class='kw'>if</span> <span class='id identifier rubyid_json'>json</span>
      <span class='id identifier rubyid_response'>response</span> <span class='op'>=</span> <span class='const'>EM</span><span class='op'>::</span><span class='const'>HttpRequest</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_url'>url</span><span class='comma'>,</span> <span class='lbrace'>{</span><span class='label'>connect_timeout:</span> <span class='int'>5</span><span class='rbrace'>}</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_response'>response</span>
      <span class='id identifier rubyid_json'>json</span> <span class='op'>?</span> <span class='const'>Oj</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_response'>response</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_response'>response</span>
    <span class='kw'>end</span>

    <span class='comment'># Executes a command and returns its output.
</span>    <span class='comment'>#
</span>    <span class='comment'># @param args [Array] The command to execute, with its arguments.
</span>    <span class='comment'># @return [String] The output of the command
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_execute_command'>execute_command</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
      <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span>
      <span class='const'>IO</span><span class='period'>.</span><span class='id identifier rubyid_popen'>popen</span><span class='lparen'>(</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span> <span class='id identifier rubyid_rv'>rv</span> <span class='op'>=</span> <span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_read'>read</span> <span class='rbrace'>}</span>
      <span class='id identifier rubyid_rv'>rv</span>
    <span class='kw'>end</span>

    <span class='comment'># Returns the current debug mode.
</span>    <span class='comment'>#
</span>    <span class='comment'># @return [Boolean|NilClass] The current debug mode.
</span>    <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
      <span class='id identifier rubyid_mode'>mode</span> <span class='op'>=</span> <span class='const'>ENV</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>PINCERNA_DEBUG</span><span class='tstring_end'>&quot;</span></span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='ivar'>@debug</span>
      <span class='op'>!</span><span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>?</span> <span class='id identifier rubyid_mode'>mode</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span> <span class='op'>:</span> <span class='kw'>nil</span>
    <span class='kw'>end</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="execute!-class_method">
  
    + (<tt>String</tt>) <strong>execute!</strong>(type, query, format = :xml, debug = nil) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Executes a filtering query.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>type</span>
      
      
        <span class='type'>(<tt>Symbol</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The type of the query.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>query</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The argument of the query.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>format</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>:xml</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The format to use. Valid values are <code>:xml</code> (default) and <code>:yml</code>.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>debug</span>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>nil</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The debug mode.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The result of the query.</p>
</div>
      
    </li>
  
</ul>

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


61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 61</span>

<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_execute!'>execute!</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>=</span> <span class='symbol'>:xml</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>

  <span class='id identifier rubyid_type'>type</span> <span class='op'>=</span> <span class='id identifier rubyid_catch'>catch</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='rparen'>)</span> <span class='kw'>do</span>
    <span class='const'>TYPES</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_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_matcher'>matcher</span><span class='op'>|</span>
      <span class='id identifier rubyid_throw'>throw</span><span class='lparen'>(</span><span class='symbol'>:type</span><span class='comma'>,</span> <span class='id identifier rubyid_file'>file</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span> <span class='op'>=~</span> <span class='id identifier rubyid_matcher'>matcher</span>
    <span class='kw'>end</span>

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

  <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
    <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='id identifier rubyid_find_class'>find_class</span><span class='lparen'>(</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_query'>query</span><span class='comma'>,</span> <span class='id identifier rubyid_format'>format</span><span class='comma'>,</span> <span class='id identifier rubyid_debug'>debug</span><span class='rparen'>)</span>
    <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_instance'>instance</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="add_feedback_item-instance_method">
  
    - (<tt>Object</tt>) <strong>add_feedback_item</strong>(item) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Adds a feedback items.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>item</span>
      
      
        <span class='type'>(<tt>Array</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The items to add.</p>
</div>
      
    </li>
  
</ul>


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


138
139
140</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 138</span>

<span class='kw'>def</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>
  <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="filter-instance_method">
  
    - (<tt>String</tt>) <strong>filter</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Filters a query.</p>


  </div>
</div>
<div class="tags">
  
<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The feedback items of the query, formatted as XML.</p>
</div>
      
    </li>
  
</ul>

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


104
105
106
107
108
109
110
111
112
113
114
115
116
117</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 104</span>

<span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
  <span class='comment'># Match the query
</span>  <span class='id identifier rubyid_matches'>matches</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='op'>::</span><span class='const'>MATCHER</span><span class='period'>.</span><span class='id identifier rubyid_match'>match</span><span class='lparen'>(</span><span class='ivar'>@query</span><span class='rparen'>)</span>

  <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
    <span class='comment'># Execute the filtering
</span>    <span class='id identifier rubyid_results'>results</span> <span class='op'>=</span> <span class='id identifier rubyid_execute_filtering'>execute_filtering</span><span class='lparen'>(</span><span class='id identifier rubyid_matches'>matches</span><span class='rparen'>)</span>

    <span class='comment'># Show results if appropriate
</span>    <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_r'>r</span><span class='op'>|</span> <span class='id identifier rubyid_add_feedback_item'>add_feedback_item</span><span class='lparen'>(</span><span class='id identifier rubyid_r'>r</span><span class='rparen'>)</span> <span class='rbrace'>}</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_results'>results</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
  <span class='kw'>end</span>

  <span class='id identifier rubyid_output_feedback'>output_feedback</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="format_float-instance_method">
  
    - (<tt>String</tt>) <strong>format_float</strong>(value, precision = 3) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>value</span>
      
      
        <span class='type'>(<tt>Float</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The value to print.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>precision</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>3</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The precision to use.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>String</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The formatted value.</p>
</div>
      
    </li>
  
</ul>

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


176
177
178
179
180</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 176</span>

<span class='kw'>def</span> <span class='id identifier rubyid_format_float'>format_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>%0.</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_precision'>precision</span><span class='embexpr_end'>}</span><span class='tstring_content'>f</span><span class='tstring_end'>&quot;</span></span> <span class='op'>%</span> <span class='id identifier rubyid_value'>value</span>
  <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_gsub'>gsub</span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>\.?0+$</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="output_feedback-instance_method">
  
    - (<tt>Object</tt>) <strong>output_feedback</strong> 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Prepares the feedback for output.</p>


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

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


143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 143</span>

<span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
  <span class='kw'>if</span> <span class='id identifier rubyid_format'>format</span> <span class='op'>==</span> <span class='symbol'>:xml</span> <span class='kw'>then</span>
    <span class='ivar'>@output</span> <span class='op'>=</span> <span class='const'>Nokogiri</span><span class='op'>::</span><span class='const'>XML</span><span class='op'>::</span><span class='const'>Builder</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_xml'>xml</span><span class='op'>|</span>
      <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_items'>items</span> <span class='kw'>do</span>
        <span class='ivar'>@feedback_items</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_item'>item</span><span class='op'>|</span>
          <span class='id identifier rubyid_childs'>childs</span><span class='comma'>,</span> <span class='id identifier rubyid_attributes'>attributes</span> <span class='op'>=</span> <span class='id identifier rubyid_split_output_item'>split_output_item</span><span class='lparen'>(</span><span class='id identifier rubyid_item'>item</span><span class='rparen'>)</span>

          <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_item'>item</span><span class='lparen'>(</span><span class='id identifier rubyid_attributes'>attributes</span><span class='rparen'>)</span> <span class='kw'>do</span>
            <span class='id identifier rubyid_childs'>childs</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_xml'>xml</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
          <span class='kw'>end</span>
        <span class='kw'>end</span>
      <span class='kw'>end</span>
    <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
  <span class='kw'>else</span>
    <span class='ivar'>@output</span> <span class='op'>=</span> <span class='ivar'>@feedback_items</span><span class='period'>.</span><span class='id identifier rubyid_to_yaml'>to_yaml</span>
  <span class='kw'>end</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="perform_filtering-instance_method">
  
    - (<tt>Array</tt>) <strong>perform_filtering</strong>(*args) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Filters a query.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>args</span>
      
      
        <span class='type'>(<tt>Array</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The arguments of the query.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Array</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>A list of items to process.</p>
</div>
      
    </li>
  
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
  
    <li>
      
      
        <span class='type'>(<tt>ArgumentError</tt>)</span>
      
      
      
    </li>
  
</ul>

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


123
124
125</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 123</span>

<span class='kw'>def</span> <span class='id identifier rubyid_perform_filtering'>perform_filtering</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="process_results-instance_method">
  
    - (<tt>Array</tt>) <strong>process_results</strong>(results) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Processes items to obtain feedback items.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>results</span>
      
      
        <span class='type'>(<tt>Array</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The items to process.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Array</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The feedback items.</p>
</div>
      
    </li>
  
</ul>
<p class="tag_title">Raises:</p>
<ul class="raise">
  
    <li>
      
      
        <span class='type'>(<tt>ArgumentError</tt>)</span>
      
      
      
    </li>
  
</ul>

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


131
132
133</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 131</span>

<span class='kw'>def</span> <span class='id identifier rubyid_process_results'>process_results</span><span class='lparen'>(</span><span class='id identifier rubyid_results'>results</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Must be overriden by subclasses.</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
      <div class="method_details ">
  <h3 class="signature " id="round_float-instance_method">
  
    - (<tt>Float</tt>) <strong>round_float</strong>(value, precision = 3) 
  

  

  
</h3><div class="docstring">
  <div class="discussion">
    <p>Rounds a float to a certain precision.</p>


  </div>
</div>
<div class="tags">
  <p class="tag_title">Parameters:</p>
<ul class="param">
  
    <li>
      
        <span class='name'>value</span>
      
      
        <span class='type'>(<tt>Float</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The value to convert.</p>
</div>
      
    </li>
  
    <li>
      
        <span class='name'>precision</span>
      
      
        <span class='type'>(<tt>Fixnum</tt>)</span>
      
      
        <em class="default">(defaults to: <tt>3</tt>)</em>
      
      
        &mdash;
        <div class='inline'><p>The precision to use.</p>
</div>
      
    </li>
  
</ul>

<p class="tag_title">Returns:</p>
<ul class="return">
  
    <li>
      
      
        <span class='type'>(<tt>Float</tt>)</span>
      
      
      
        &mdash;
        <div class='inline'><p>The rounded value.</p>
</div>
      
    </li>
  
</ul>

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


166
167
168
169</pre>
    </td>
    <td>
      <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 166</span>

<span class='kw'>def</span> <span class='id identifier rubyid_round_float'>round_float</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_precision'>precision</span> <span class='op'>=</span> <span class='int'>3</span><span class='rparen'>)</span>
  <span class='id identifier rubyid_factor'>factor</span> <span class='op'>=</span> <span class='int'>10</span><span class='op'>**</span><span class='id identifier rubyid_precision'>precision</span>
  <span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span> <span class='op'>*</span> <span class='id identifier rubyid_factor'>factor</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='period'>.</span><span class='id identifier rubyid_to_f'>to_f</span> <span class='op'>/</span> <span class='id identifier rubyid_factor'>factor</span>
<span class='kw'>end</span></pre>
    </td>
  </tr>
</table>
</div>
    
  </div>

</div>

    <div id="footer">
  Generated on Thu Aug 18 15:50:04 2016 by
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
  0.8.7 (ruby-2.3.0).
</div>

  </body>
</html>