pincerna 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.rubocop.yml +77 -0
  4. data/.travis-gemfile +17 -0
  5. data/.travis.yml +7 -0
  6. data/.yardopts +1 -0
  7. data/CHANGELOG.md +3 -0
  8. data/Gemfile +23 -0
  9. data/LICENSE.md +21 -0
  10. data/README.md +211 -0
  11. data/Rakefile +45 -0
  12. data/bin/pincernad +56 -0
  13. data/docs/Pincerna.html +130 -0
  14. data/docs/Pincerna/Base.html +3051 -0
  15. data/docs/Pincerna/Bookmark.html +523 -0
  16. data/docs/Pincerna/Cache.html +767 -0
  17. data/docs/Pincerna/ChromeBookmark.html +308 -0
  18. data/docs/Pincerna/CurrencyConversion.html +589 -0
  19. data/docs/Pincerna/FirefoxBookmark.html +328 -0
  20. data/docs/Pincerna/Ip.html +1017 -0
  21. data/docs/Pincerna/Map.html +399 -0
  22. data/docs/Pincerna/SafariBookmark.html +308 -0
  23. data/docs/Pincerna/Server.html +673 -0
  24. data/docs/Pincerna/Translation.html +517 -0
  25. data/docs/Pincerna/UnitConversion.html +1042 -0
  26. data/docs/Pincerna/Version.html +189 -0
  27. data/docs/Pincerna/Vpn.html +561 -0
  28. data/docs/Pincerna/Weather.html +837 -0
  29. data/docs/_index.html +298 -0
  30. data/docs/class_list.html +54 -0
  31. data/docs/css/common.css +1 -0
  32. data/docs/css/full_list.css +57 -0
  33. data/docs/css/style.css +338 -0
  34. data/docs/file.README.html +327 -0
  35. data/docs/file_list.html +56 -0
  36. data/docs/frames.html +28 -0
  37. data/docs/index.html +327 -0
  38. data/docs/js/app.js +214 -0
  39. data/docs/js/full_list.js +178 -0
  40. data/docs/js/jquery.js +4 -0
  41. data/docs/method_list.html +389 -0
  42. data/docs/top-level-namespace.html +112 -0
  43. data/icon.png +0 -0
  44. data/images/chrome.png +0 -0
  45. data/images/currency.png +0 -0
  46. data/images/firefox.png +0 -0
  47. data/images/map.png +0 -0
  48. data/images/network.png +0 -0
  49. data/images/safari.png +0 -0
  50. data/images/translate.png +0 -0
  51. data/images/unit.png +0 -0
  52. data/images/vpn.png +0 -0
  53. data/images/weather.png +0 -0
  54. data/info.plist +961 -0
  55. data/it.cowtech.pincernad.plist +19 -0
  56. data/lib/pincerna.rb +30 -0
  57. data/lib/pincerna/base.rb +258 -0
  58. data/lib/pincerna/bookmark.rb +80 -0
  59. data/lib/pincerna/cache.rb +61 -0
  60. data/lib/pincerna/chrome_bookmark.rb +40 -0
  61. data/lib/pincerna/currency_conversion.rb +134 -0
  62. data/lib/pincerna/firefox_bookmark.rb +92 -0
  63. data/lib/pincerna/ip.rb +135 -0
  64. data/lib/pincerna/map.rb +30 -0
  65. data/lib/pincerna/safari_bookmark.rb +40 -0
  66. data/lib/pincerna/server.rb +85 -0
  67. data/lib/pincerna/translation.rb +67 -0
  68. data/lib/pincerna/unit_conversion.rb +120 -0
  69. data/lib/pincerna/version.rb +24 -0
  70. data/lib/pincerna/vpn.rb +74 -0
  71. data/lib/pincerna/weather.rb +188 -0
  72. data/pincerna.alfredworkflow +0 -0
  73. data/pincerna.gemspec +36 -0
  74. data/pincerna.sh +9 -0
  75. data/spec/cassettes/Pincerna_CurrencyConversion/_perform_filtering/should_return_valid_values.yml +38 -0
  76. data/spec/cassettes/Pincerna_Ip/_get_local_addresses/should_return_a_list_of_addresses.yml +47 -0
  77. data/spec/cassettes/Pincerna_Ip/_get_public_address/should_return_public_IP_address.yml +44 -0
  78. data/spec/cassettes/Pincerna_Translation/_perform_filtering/should_default_from_English_to_the_given_language_when_only_one_is_present.yml +124 -0
  79. data/spec/cassettes/Pincerna_Translation/_perform_filtering/should_query_Google_Translate_for_sentences_returning_no_alternatives.yml +51 -0
  80. data/spec/cassettes/Pincerna_Translation/_perform_filtering/should_query_Google_Translate_for_single_words.yml +71 -0
  81. data/spec/cassettes/Pincerna_Weather/_get_forecast/should_append_name.yml +177 -0
  82. data/spec/cassettes/Pincerna_Weather/_get_forecast/should_get_correct_forecasts.yml +339 -0
  83. data/spec/cassettes/Pincerna_Weather/_lookup_places/should_return_an_existing_WOEID_without_making_any_request.yml +56 -0
  84. data/spec/cassettes/Pincerna_Weather/_lookup_places/should_search_for_places.yml +189 -0
  85. data/spec/cassettes/Pincerna_Weather/_perform_filtering/should_get_forecast.yml +56 -0
  86. data/spec/coverage_helper.rb +44 -0
  87. data/spec/pincerna/base_spec.rb +166 -0
  88. data/spec/pincerna/bookmark_spec.rb +65 -0
  89. data/spec/pincerna/cache_spec.rb +88 -0
  90. data/spec/pincerna/chrome_bookmark_spec.rb +114 -0
  91. data/spec/pincerna/currency_conversion_spec.rb +46 -0
  92. data/spec/pincerna/firefox_bookmark_spec.rb +46 -0
  93. data/spec/pincerna/ip_spec.rb +194 -0
  94. data/spec/pincerna/map_spec.rb +24 -0
  95. data/spec/pincerna/safari_bookmark_spec.rb +237 -0
  96. data/spec/pincerna/server_spec.rb +108 -0
  97. data/spec/pincerna/translation_spec.rb +55 -0
  98. data/spec/pincerna/unit_conversion_spec.rb +98 -0
  99. data/spec/pincerna/vpn_spec.rb +68 -0
  100. data/spec/pincerna/weather_spec.rb +131 -0
  101. data/spec/spec_helper.rb +48 -0
  102. metadata +283 -0
@@ -0,0 +1,130 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Pincerna
8
+
9
+ &mdash; Documentation by YARD 0.8.7
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index (P)</a> &raquo;
35
+
36
+
37
+ <span class="title">Pincerna</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Module: Pincerna
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ <dt class="r1 last">Defined in:</dt>
82
+ <dd class="r1 last">lib/pincerna/ip.rb<span class="defines">,<br />
83
+ lib/pincerna/vpn.rb,<br /> lib/pincerna/map.rb,<br /> lib/pincerna/base.rb,<br /> lib/pincerna/cache.rb,<br /> lib/pincerna/server.rb,<br /> lib/pincerna/version.rb,<br /> lib/pincerna/weather.rb,<br /> lib/pincerna/bookmark.rb,<br /> lib/pincerna/translation.rb,<br /> lib/pincerna/unit_conversion.rb,<br /> lib/pincerna/safari_bookmark.rb,<br /> lib/pincerna/chrome_bookmark.rb,<br /> lib/pincerna/firefox_bookmark.rb,<br /> lib/pincerna/currency_conversion.rb</span>
84
+ </dd>
85
+
86
+ </dl>
87
+ <div class="clear"></div>
88
+
89
+ <h2>Overview</h2><div class="docstring">
90
+ <div class="discussion">
91
+ <p>This file is part of the pincerna gem. Copyright (C) 2013 and above Shogun <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#115;&#104;&#111;&#103;&#117;&#110;&#064;&#099;&#111;&#119;&#116;&#101;&#099;&#104;&#046;&#105;&#116;">&#115;&#104;&#111;&#103;&#117;&#110;&#064;&#099;&#111;&#119;&#116;&#101;&#099;&#104;&#046;&#105;&#116;</a>.
92
+ Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.</p>
93
+
94
+
95
+ </div>
96
+ </div>
97
+ <div class="tags">
98
+
99
+
100
+ </div><h2>Defined Under Namespace</h2>
101
+ <p class="children">
102
+
103
+
104
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Pincerna/Version.html" title="Pincerna::Version (module)">Version</a></span>
105
+
106
+
107
+
108
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Pincerna/Base.html" title="Pincerna::Base (class)">Base</a></span>, <span class='object_link'><a href="Pincerna/Bookmark.html" title="Pincerna::Bookmark (class)">Bookmark</a></span>, <span class='object_link'><a href="Pincerna/Cache.html" title="Pincerna::Cache (class)">Cache</a></span>, <span class='object_link'><a href="Pincerna/ChromeBookmark.html" title="Pincerna::ChromeBookmark (class)">ChromeBookmark</a></span>, <span class='object_link'><a href="Pincerna/CurrencyConversion.html" title="Pincerna::CurrencyConversion (class)">CurrencyConversion</a></span>, <span class='object_link'><a href="Pincerna/FirefoxBookmark.html" title="Pincerna::FirefoxBookmark (class)">FirefoxBookmark</a></span>, <span class='object_link'><a href="Pincerna/Ip.html" title="Pincerna::Ip (class)">Ip</a></span>, <span class='object_link'><a href="Pincerna/Map.html" title="Pincerna::Map (class)">Map</a></span>, <span class='object_link'><a href="Pincerna/SafariBookmark.html" title="Pincerna::SafariBookmark (class)">SafariBookmark</a></span>, <span class='object_link'><a href="Pincerna/Server.html" title="Pincerna::Server (class)">Server</a></span>, <span class='object_link'><a href="Pincerna/Translation.html" title="Pincerna::Translation (class)">Translation</a></span>, <span class='object_link'><a href="Pincerna/UnitConversion.html" title="Pincerna::UnitConversion (class)">UnitConversion</a></span>, <span class='object_link'><a href="Pincerna/Vpn.html" title="Pincerna::Vpn (class)">Vpn</a></span>, <span class='object_link'><a href="Pincerna/Weather.html" title="Pincerna::Weather (class)">Weather</a></span>
109
+
110
+
111
+ </p>
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ </div>
122
+
123
+ <div id="footer">
124
+ Generated on Thu Aug 18 15:50:04 2016 by
125
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
126
+ 0.8.7 (ruby-2.3.0).
127
+ </div>
128
+
129
+ </body>
130
+ </html>
@@ -0,0 +1,3051 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: Pincerna::Base
8
+
9
+ &mdash; Documentation by YARD 0.8.7
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../';
20
+ framesUrl = "../frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../_index.html">Index (B)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Pincerna.html" title="Pincerna (module)">Pincerna</a></span></span>
36
+ &raquo;
37
+ <span class="title">Base</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Class: Pincerna::Base
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">Pincerna::Base</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <dt class="r2 last">Defined in:</dt>
97
+ <dd class="r2 last">lib/pincerna/base.rb</dd>
98
+
99
+ </dl>
100
+ <div class="clear"></div>
101
+
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
104
+ <p>Base class for all filter.</p>
105
+
106
+
107
+ </div>
108
+ </div>
109
+ <div class="tags">
110
+
111
+
112
+ </div><div id="subclasses">
113
+ <h2>Direct Known Subclasses</h2>
114
+ <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>
115
+ </div>
116
+
117
+ <h2>Constant Summary</h2>
118
+
119
+ <dl class="constants">
120
+
121
+ <dt id="MATCHER-constant" class="">MATCHER =
122
+ <div class="docstring">
123
+ <div class="discussion">
124
+ <p>The expression to match.</p>
125
+
126
+
127
+ </div>
128
+ </div>
129
+ <div class="tags">
130
+
131
+
132
+ </div>
133
+ </dt>
134
+ <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>
135
+
136
+ <dt id="RELEVANT_MATCHES-constant" class="">RELEVANT_MATCHES =
137
+ <div class="docstring">
138
+ <div class="discussion">
139
+ <p>Relevant groups in the match.</p>
140
+
141
+
142
+ </div>
143
+ </div>
144
+ <div class="tags">
145
+
146
+
147
+ </div>
148
+ </dt>
149
+ <dd><pre class="code"><span class='lbrace'>{</span>
150
+ <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>
151
+ <span class='rbrace'>}</span></pre></dd>
152
+
153
+ <dt id="TYPES-constant" class="">TYPES =
154
+ <div class="docstring">
155
+ <div class="discussion">
156
+ <p>Recognized types of filtering</p>
157
+
158
+
159
+ </div>
160
+ </div>
161
+ <div class="tags">
162
+
163
+
164
+ </div>
165
+ </dt>
166
+ <dd><pre class="code"><span class='lbrace'>{</span>
167
+ <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>
168
+ <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>
169
+ <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>
170
+ <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>
171
+ <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>
172
+ <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>
173
+ <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>
174
+ <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>
175
+ <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>
176
+ <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>
177
+ <span class='rbrace'>}</span></pre></dd>
178
+
179
+ <dt id="FULL_NAME-constant" class="">FULL_NAME =
180
+ <div class="docstring">
181
+ <div class="discussion">
182
+ <p>The full name of the gem</p>
183
+
184
+
185
+ </div>
186
+ </div>
187
+ <div class="tags">
188
+
189
+
190
+ </div>
191
+ </dt>
192
+ <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>
193
+
194
+ <dt id="ROOT-constant" class="">ROOT =
195
+ <div class="docstring">
196
+ <div class="discussion">
197
+ <p>The root of the pincerna gem</p>
198
+
199
+
200
+ </div>
201
+ </div>
202
+ <div class="tags">
203
+
204
+
205
+ </div>
206
+ </dt>
207
+ <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>
208
+
209
+ <dt id="CACHE_ROOT-constant" class="">CACHE_ROOT =
210
+ <div class="docstring">
211
+ <div class="discussion">
212
+ <p>The root of the cache</p>
213
+
214
+
215
+ </div>
216
+ </div>
217
+ <div class="tags">
218
+
219
+
220
+ </div>
221
+ </dt>
222
+ <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>
223
+
224
+ <dt id="WORKFLOW_ROOT-constant" class="">WORKFLOW_ROOT =
225
+ <div class="docstring">
226
+ <div class="discussion">
227
+ <p>The root of alfred workflows</p>
228
+
229
+
230
+ </div>
231
+ </div>
232
+ <div class="tags">
233
+
234
+
235
+ </div>
236
+ </dt>
237
+ <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>
238
+
239
+ </dl>
240
+
241
+
242
+
243
+
244
+
245
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
246
+ <ul class="summary">
247
+
248
+ <li class="public ">
249
+ <span class="summary_signature">
250
+
251
+ <a href="#format-instance_method" title="#format (instance method)">- (Symbol) <strong>format</strong> </a>
252
+
253
+
254
+
255
+ </span>
256
+
257
+
258
+
259
+
260
+ <span class="note title readonly">readonly</span>
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+ <span class="summary_desc"><div class='inline'><p>The format of output.</p>
271
+ </div></span>
272
+
273
+ </li>
274
+
275
+
276
+ <li class="public ">
277
+ <span class="summary_signature">
278
+
279
+ <a href="#format_content_type-instance_method" title="#format_content_type (instance method)">- (String) <strong>format_content_type</strong> </a>
280
+
281
+
282
+
283
+ </span>
284
+
285
+
286
+
287
+
288
+ <span class="note title readonly">readonly</span>
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+ <span class="summary_desc"><div class='inline'><p>The content type of the format.</p>
299
+ </div></span>
300
+
301
+ </li>
302
+
303
+
304
+ <li class="public ">
305
+ <span class="summary_signature">
306
+
307
+ <a href="#output-instance_method" title="#output (instance method)">- (String) <strong>output</strong> </a>
308
+
309
+
310
+
311
+ </span>
312
+
313
+
314
+
315
+
316
+ <span class="note title readonly">readonly</span>
317
+
318
+
319
+
320
+
321
+
322
+
323
+
324
+
325
+
326
+ <span class="summary_desc"><div class='inline'><p>The output of filtering.</p>
327
+ </div></span>
328
+
329
+ </li>
330
+
331
+
332
+ </ul>
333
+
334
+
335
+
336
+
337
+
338
+ <h2>
339
+ Class Method Summary
340
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
341
+ </h2>
342
+
343
+ <ul class="summary">
344
+
345
+ <li class="public ">
346
+ <span class="summary_signature">
347
+
348
+ <a href="#execute%21-class_method" title="execute! (class method)">+ (String) <strong>execute!</strong>(type, query, format = :xml, debug = nil) </a>
349
+
350
+
351
+
352
+ </span>
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+ <span class="summary_desc"><div class='inline'><p>Executes a filtering query.</p>
363
+ </div></span>
364
+
365
+ </li>
366
+
367
+
368
+ </ul>
369
+
370
+ <h2>
371
+ Instance Method Summary
372
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
373
+ </h2>
374
+
375
+ <ul class="summary">
376
+
377
+ <li class="public ">
378
+ <span class="summary_signature">
379
+
380
+ <a href="#add_feedback_item-instance_method" title="#add_feedback_item (instance method)">- (Object) <strong>add_feedback_item</strong>(item) </a>
381
+
382
+
383
+
384
+ </span>
385
+
386
+
387
+
388
+
389
+
390
+
391
+
392
+
393
+
394
+ <span class="summary_desc"><div class='inline'><p>Adds a feedback items.</p>
395
+ </div></span>
396
+
397
+ </li>
398
+
399
+
400
+ <li class="public ">
401
+ <span class="summary_signature">
402
+
403
+ <a href="#filter-instance_method" title="#filter (instance method)">- (String) <strong>filter</strong> </a>
404
+
405
+
406
+
407
+ </span>
408
+
409
+
410
+
411
+
412
+
413
+
414
+
415
+
416
+
417
+ <span class="summary_desc"><div class='inline'><p>Filters a query.</p>
418
+ </div></span>
419
+
420
+ </li>
421
+
422
+
423
+ <li class="public ">
424
+ <span class="summary_signature">
425
+
426
+ <a href="#format_float-instance_method" title="#format_float (instance method)">- (String) <strong>format_float</strong>(value, precision = 3) </a>
427
+
428
+
429
+
430
+ </span>
431
+
432
+
433
+
434
+
435
+
436
+
437
+
438
+
439
+
440
+ <span class="summary_desc"><div class='inline'><p>Rounds a float to a certain precision and prints it as a string.</p>
441
+ </div></span>
442
+
443
+ </li>
444
+
445
+
446
+ <li class="public ">
447
+ <span class="summary_signature">
448
+
449
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Base) <strong>initialize</strong>(query, requested_format = &quot;xml&quot;, debug = nil) </a>
450
+
451
+
452
+
453
+ </span>
454
+
455
+
456
+ <span class="note title constructor">constructor</span>
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+ <span class="summary_desc"><div class='inline'><p>Creates a new query.</p>
466
+ </div></span>
467
+
468
+ </li>
469
+
470
+
471
+ <li class="public ">
472
+ <span class="summary_signature">
473
+
474
+ <a href="#output_feedback-instance_method" title="#output_feedback (instance method)">- (Object) <strong>output_feedback</strong> </a>
475
+
476
+
477
+
478
+ </span>
479
+
480
+
481
+
482
+
483
+
484
+
485
+
486
+
487
+
488
+ <span class="summary_desc"><div class='inline'><p>Prepares the feedback for output.</p>
489
+ </div></span>
490
+
491
+ </li>
492
+
493
+
494
+ <li class="public ">
495
+ <span class="summary_signature">
496
+
497
+ <a href="#perform_filtering-instance_method" title="#perform_filtering (instance method)">- (Array) <strong>perform_filtering</strong>(*args) </a>
498
+
499
+
500
+
501
+ </span>
502
+
503
+
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+ <span class="summary_desc"><div class='inline'><p>Filters a query.</p>
512
+ </div></span>
513
+
514
+ </li>
515
+
516
+
517
+ <li class="public ">
518
+ <span class="summary_signature">
519
+
520
+ <a href="#process_results-instance_method" title="#process_results (instance method)">- (Array) <strong>process_results</strong>(results) </a>
521
+
522
+
523
+
524
+ </span>
525
+
526
+
527
+
528
+
529
+
530
+
531
+
532
+
533
+
534
+ <span class="summary_desc"><div class='inline'><p>Processes items to obtain feedback items.</p>
535
+ </div></span>
536
+
537
+ </li>
538
+
539
+
540
+ <li class="public ">
541
+ <span class="summary_signature">
542
+
543
+ <a href="#round_float-instance_method" title="#round_float (instance method)">- (Float) <strong>round_float</strong>(value, precision = 3) </a>
544
+
545
+
546
+
547
+ </span>
548
+
549
+
550
+
551
+
552
+
553
+
554
+
555
+
556
+
557
+ <span class="summary_desc"><div class='inline'><p>Rounds a float to a certain precision.</p>
558
+ </div></span>
559
+
560
+ </li>
561
+
562
+
563
+ </ul>
564
+
565
+
566
+ <div id="constructor_details" class="method_details_list">
567
+ <h2>Constructor Details</h2>
568
+
569
+ <div class="method_details first">
570
+ <h3 class="signature first" id="initialize-instance_method">
571
+
572
+ - (<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)
573
+
574
+
575
+
576
+
577
+
578
+ </h3><div class="docstring">
579
+ <div class="discussion">
580
+ <p>Creates a new query.</p>
581
+
582
+
583
+ </div>
584
+ </div>
585
+ <div class="tags">
586
+ <p class="tag_title">Parameters:</p>
587
+ <ul class="param">
588
+
589
+ <li>
590
+
591
+ <span class='name'>query</span>
592
+
593
+
594
+ <span class='type'>(<tt>String</tt>)</span>
595
+
596
+
597
+
598
+ &mdash;
599
+ <div class='inline'><p>The argument of the query.</p>
600
+ </div>
601
+
602
+ </li>
603
+
604
+ <li>
605
+
606
+ <span class='name'>requested_format</span>
607
+
608
+
609
+ <span class='type'>(<tt>String</tt>)</span>
610
+
611
+
612
+ <em class="default">(defaults to: <tt>&quot;xml&quot;</tt>)</em>
613
+
614
+
615
+ &mdash;
616
+ <div class='inline'><p>The format to use. Valid values are <code>xml</code> (default), <code>yaml</code> or <code>yml</code>.</p>
617
+ </div>
618
+
619
+ </li>
620
+
621
+ <li>
622
+
623
+ <span class='name'>debug</span>
624
+
625
+
626
+ <span class='type'>(<tt>String</tt>)</span>
627
+
628
+
629
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
630
+
631
+
632
+ &mdash;
633
+ <div class='inline'><p>The debug mode.</p>
634
+ </div>
635
+
636
+ </li>
637
+
638
+ </ul>
639
+
640
+
641
+ </div><table class="source_code">
642
+ <tr>
643
+ <td>
644
+ <pre class="lines">
645
+
646
+
647
+ 85
648
+ 86
649
+ 87
650
+ 88
651
+ 89
652
+ 90
653
+ 91
654
+ 92
655
+ 93
656
+ 94
657
+ 95
658
+ 96
659
+ 97
660
+ 98
661
+ 99</pre>
662
+ </td>
663
+ <td>
664
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 85</span>
665
+
666
+ <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>
667
+ <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>
668
+ <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>
669
+
670
+ <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>
671
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
672
+ <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>
673
+ <span class='kw'>else</span>
674
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
675
+ <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>
676
+ <span class='kw'>end</span>
677
+
678
+ <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
679
+ <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
680
+ <span class='kw'>end</span></pre>
681
+ </td>
682
+ </tr>
683
+ </table>
684
+ </div>
685
+
686
+ </div>
687
+
688
+ <div id="instance_attr_details" class="attr_details">
689
+ <h2>Instance Attribute Details</h2>
690
+
691
+
692
+ <span id=""></span>
693
+ <div class="method_details first">
694
+ <h3 class="signature first" id="format-instance_method">
695
+
696
+ - (<tt>Symbol</tt>) <strong>format</strong> <span class="extras">(readonly)</span>
697
+
698
+
699
+
700
+
701
+
702
+ </h3><div class="docstring">
703
+ <div class="discussion">
704
+ <p>Returns The format of output. Can be <code>:xml</code> (default) or <code>:yml</code>.</p>
705
+
706
+
707
+ </div>
708
+ </div>
709
+ <div class="tags">
710
+
711
+ <p class="tag_title">Returns:</p>
712
+ <ul class="return">
713
+
714
+ <li>
715
+
716
+
717
+ <span class='type'>(<tt>Symbol</tt>)</span>
718
+
719
+
720
+
721
+ &mdash;
722
+ <div class='inline'><p>The format of output. Can be <code>:xml</code> (default) or <code>:yml</code>.</p>
723
+ </div>
724
+
725
+ </li>
726
+
727
+ </ul>
728
+
729
+ </div><table class="source_code">
730
+ <tr>
731
+ <td>
732
+ <pre class="lines">
733
+
734
+
735
+ 17
736
+ 18
737
+ 19
738
+ 20
739
+ 21
740
+ 22
741
+ 23
742
+ 24
743
+ 25
744
+ 26
745
+ 27
746
+ 28
747
+ 29
748
+ 30
749
+ 31
750
+ 32
751
+ 33
752
+ 34
753
+ 35
754
+ 36
755
+ 37
756
+ 38
757
+ 39
758
+ 40
759
+ 41
760
+ 42
761
+ 43
762
+ 44
763
+ 45
764
+ 46
765
+ 47
766
+ 48
767
+ 49
768
+ 50
769
+ 51
770
+ 52
771
+ 53
772
+ 54
773
+ 55
774
+ 56
775
+ 57
776
+ 58
777
+ 59
778
+ 60
779
+ 61
780
+ 62
781
+ 63
782
+ 64
783
+ 65
784
+ 66
785
+ 67
786
+ 68
787
+ 69
788
+ 70
789
+ 71
790
+ 72
791
+ 73
792
+ 74
793
+ 75
794
+ 76
795
+ 77
796
+ 78
797
+ 79
798
+ 80
799
+ 81
800
+ 82
801
+ 83
802
+ 84
803
+ 85
804
+ 86
805
+ 87
806
+ 88
807
+ 89
808
+ 90
809
+ 91
810
+ 92
811
+ 93
812
+ 94
813
+ 95
814
+ 96
815
+ 97
816
+ 98
817
+ 99
818
+ 100
819
+ 101
820
+ 102
821
+ 103
822
+ 104
823
+ 105
824
+ 106
825
+ 107
826
+ 108
827
+ 109
828
+ 110
829
+ 111
830
+ 112
831
+ 113
832
+ 114
833
+ 115
834
+ 116
835
+ 117
836
+ 118
837
+ 119
838
+ 120
839
+ 121
840
+ 122
841
+ 123
842
+ 124
843
+ 125
844
+ 126
845
+ 127
846
+ 128
847
+ 129
848
+ 130
849
+ 131
850
+ 132
851
+ 133
852
+ 134
853
+ 135
854
+ 136
855
+ 137
856
+ 138
857
+ 139
858
+ 140
859
+ 141
860
+ 142
861
+ 143
862
+ 144
863
+ 145
864
+ 146
865
+ 147
866
+ 148
867
+ 149
868
+ 150
869
+ 151
870
+ 152
871
+ 153
872
+ 154
873
+ 155
874
+ 156
875
+ 157
876
+ 158
877
+ 159
878
+ 160
879
+ 161
880
+ 162
881
+ 163
882
+ 164
883
+ 165
884
+ 166
885
+ 167
886
+ 168
887
+ 169
888
+ 170
889
+ 171
890
+ 172
891
+ 173
892
+ 174
893
+ 175
894
+ 176
895
+ 177
896
+ 178
897
+ 179
898
+ 180
899
+ 181
900
+ 182
901
+ 183
902
+ 184
903
+ 185
904
+ 186
905
+ 187
906
+ 188
907
+ 189
908
+ 190
909
+ 191
910
+ 192
911
+ 193
912
+ 194
913
+ 195
914
+ 196
915
+ 197
916
+ 198
917
+ 199
918
+ 200
919
+ 201
920
+ 202
921
+ 203
922
+ 204
923
+ 205
924
+ 206
925
+ 207
926
+ 208
927
+ 209
928
+ 210
929
+ 211
930
+ 212
931
+ 213
932
+ 214
933
+ 215
934
+ 216
935
+ 217
936
+ 218
937
+ 219
938
+ 220
939
+ 221
940
+ 222
941
+ 223
942
+ 224
943
+ 225
944
+ 226
945
+ 227
946
+ 228
947
+ 229
948
+ 230
949
+ 231
950
+ 232
951
+ 233
952
+ 234
953
+ 235
954
+ 236
955
+ 237
956
+ 238
957
+ 239
958
+ 240
959
+ 241
960
+ 242
961
+ 243
962
+ 244
963
+ 245
964
+ 246
965
+ 247
966
+ 248
967
+ 249
968
+ 250
969
+ 251
970
+ 252
971
+ 253
972
+ 254
973
+ 255
974
+ 256
975
+ 257</pre>
976
+ </td>
977
+ <td>
978
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>
979
+
980
+ <span class='kw'>class</span> <span class='const'>Base</span>
981
+ <span class='comment'># The expression to match.
982
+ </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>
983
+
984
+ <span class='comment'># Relevant groups in the match.
985
+ </span> <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
986
+ <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>
987
+ <span class='rbrace'>}</span>
988
+
989
+ <span class='comment'># Recognized types of filtering
990
+ </span> <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
991
+ <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>
992
+ <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>
993
+ <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>
994
+ <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>
995
+ <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>
996
+ <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>
997
+ <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>
998
+ <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>
999
+ <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>
1000
+ <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>
1001
+ <span class='rbrace'>}</span>
1002
+
1003
+ <span class='comment'># The full name of the gem
1004
+ </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>
1005
+
1006
+ <span class='comment'># The root of the pincerna gem
1007
+ </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>
1008
+
1009
+ <span class='comment'># The root of the cache
1010
+ </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>
1011
+
1012
+ <span class='comment'># The root of alfred workflows
1013
+ </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>
1014
+
1015
+ <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>
1016
+
1017
+ <span class='comment'># Executes a filtering query.
1018
+ </span> <span class='comment'>#
1019
+ </span> <span class='comment'># @param type [Symbol] The type of the query.
1020
+ </span> <span class='comment'># @param query [String] The argument of the query.
1021
+ </span> <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
1022
+ </span> <span class='comment'># @param debug [String] The debug mode.
1023
+ </span> <span class='comment'># @return [String] The result of the query.
1024
+ </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>
1025
+ <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
1026
+
1027
+ <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>
1028
+ <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>
1029
+ <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>
1030
+ <span class='kw'>end</span>
1031
+
1032
+ <span class='kw'>nil</span>
1033
+ <span class='kw'>end</span>
1034
+
1035
+ <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
1036
+ <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>
1037
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
1038
+ <span class='kw'>end</span>
1039
+
1040
+ <span class='id identifier rubyid_instance'>instance</span>
1041
+ <span class='kw'>end</span>
1042
+
1043
+ <span class='comment'># Creates a new query.
1044
+ </span> <span class='comment'>#
1045
+ </span> <span class='comment'># @param query [String] The argument of the query.
1046
+ </span> <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
1047
+ </span> <span class='comment'># @param debug [String] The debug mode.
1048
+ </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>
1049
+ <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>
1050
+ <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>
1051
+
1052
+ <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>
1053
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
1054
+ <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>
1055
+ <span class='kw'>else</span>
1056
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
1057
+ <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>
1058
+ <span class='kw'>end</span>
1059
+
1060
+ <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
1061
+ <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1062
+ <span class='kw'>end</span>
1063
+
1064
+ <span class='comment'># Filters a query.
1065
+ </span> <span class='comment'>#
1066
+ </span> <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
1067
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
1068
+ <span class='comment'># Match the query
1069
+ </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>
1070
+
1071
+ <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
1072
+ <span class='comment'># Execute the filtering
1073
+ </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>
1074
+
1075
+ <span class='comment'># Show results if appropriate
1076
+ </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>
1077
+ <span class='kw'>end</span>
1078
+
1079
+ <span class='id identifier rubyid_output_feedback'>output_feedback</span>
1080
+ <span class='kw'>end</span>
1081
+
1082
+ <span class='comment'># Filters a query.
1083
+ </span> <span class='comment'>#
1084
+ </span> <span class='comment'># @param args [Array] The arguments of the query.
1085
+ </span> <span class='comment'># @return [Array] A list of items to process.
1086
+ </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>
1087
+ <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>
1088
+ <span class='kw'>end</span>
1089
+
1090
+ <span class='comment'># Processes items to obtain feedback items.
1091
+ </span> <span class='comment'>#
1092
+ </span> <span class='comment'># @param results [Array] The items to process.
1093
+ </span> <span class='comment'># @return [Array] The feedback items.
1094
+ </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>
1095
+ <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>
1096
+ <span class='kw'>end</span>
1097
+
1098
+ <span class='comment'># Adds a feedback items.
1099
+ </span> <span class='comment'>#
1100
+ </span> <span class='comment'># @param item [Array] The items to add.
1101
+ </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>
1102
+ <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
1103
+ <span class='kw'>end</span>
1104
+
1105
+ <span class='comment'># Prepares the feedback for output.
1106
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
1107
+ <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>
1108
+ <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>
1109
+ <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>
1110
+ <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>
1111
+ <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>
1112
+
1113
+ <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>
1114
+ <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>
1115
+ <span class='kw'>end</span>
1116
+ <span class='kw'>end</span>
1117
+ <span class='kw'>end</span>
1118
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
1119
+ <span class='kw'>else</span>
1120
+ <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>
1121
+ <span class='kw'>end</span>
1122
+ <span class='kw'>end</span>
1123
+
1124
+ <span class='comment'># Rounds a float to a certain precision.
1125
+ </span> <span class='comment'>#
1126
+ </span> <span class='comment'># @param value [Float] The value to convert.
1127
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
1128
+ </span> <span class='comment'># @return [Float] The rounded value.
1129
+ </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>
1130
+ <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>
1131
+ <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>
1132
+ <span class='kw'>end</span>
1133
+
1134
+ <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
1135
+ </span> <span class='comment'>#
1136
+ </span> <span class='comment'># @param value [Float] The value to print.
1137
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
1138
+ </span> <span class='comment'># @return [String] The formatted value.
1139
+ </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>
1140
+ <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>
1141
+ <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>
1142
+ <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>
1143
+ <span class='kw'>end</span>
1144
+
1145
+ <span class='id identifier rubyid_protected'>protected</span>
1146
+ <span class='comment'># Instantiates the new class.
1147
+ </span> <span class='comment'>#
1148
+ </span> <span class='comment'># @param file [String] The file name.
1149
+ </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>
1150
+ <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>
1151
+ <span class='kw'>end</span>
1152
+
1153
+ <span class='comment'># Executes filtering on matched data.
1154
+ </span> <span class='comment'>#
1155
+ </span> <span class='comment'># @param matches [MatchData] The matched data.
1156
+ </span> <span class='comment'># @return [Array] The results of filtering.
1157
+ </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>
1158
+ <span class='comment'># Get relevant matches and arguments.
1159
+ </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>
1160
+ <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>
1161
+
1162
+ <span class='comment'># Now perform the operation
1163
+ </span> <span class='kw'>begin</span>
1164
+ <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>
1165
+ <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1166
+ <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>
1167
+ <span class='lbracket'>[</span><span class='rbracket'>]</span>
1168
+ <span class='kw'>end</span>
1169
+ <span class='kw'>end</span>
1170
+
1171
+ <span class='comment'># Converts an array of key-value pairs to an hash.
1172
+ </span> <span class='comment'>#
1173
+ </span> <span class='comment'># @param array [Array] The array to convert.
1174
+ </span> <span class='comment'># @return [Hash] The converted hash.
1175
+ </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>
1176
+ <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>
1177
+ <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>
1178
+ <span class='id identifier rubyid_rv'>rv</span>
1179
+ <span class='rbrace'>}</span>
1180
+ <span class='kw'>end</span>
1181
+
1182
+ <span class='comment'># Gets attributes and children for output.
1183
+ </span> <span class='comment'>#
1184
+ </span> <span class='comment'># @param item [Hash] The output item.
1185
+ </span> <span class='comment'># @return [Array] An array with children and attributes.
1186
+ </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>
1187
+ <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>
1188
+ <span class='kw'>end</span>
1189
+
1190
+ <span class='comment'># Fetches remote JSON resource.
1191
+ </span> <span class='comment'>#
1192
+ </span> <span class='comment'># @param url [String] The URL to get.
1193
+ </span> <span class='comment'># @param params [Hash] The parameters to pass to the server.
1194
+ </span> <span class='comment'># @param json [Boolean] If the response is a JSON object.
1195
+ </span> <span class='comment'># @return [Hash] The server&#39;s response.
1196
+ </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>
1197
+ <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>
1198
+ <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>
1199
+ <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>
1200
+ <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>
1201
+ <span class='kw'>end</span>
1202
+
1203
+ <span class='comment'># Executes a command and returns its output.
1204
+ </span> <span class='comment'>#
1205
+ </span> <span class='comment'># @param args [Array] The command to execute, with its arguments.
1206
+ </span> <span class='comment'># @return [String] The output of the command
1207
+ </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>
1208
+ <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>
1209
+ <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>
1210
+ <span class='id identifier rubyid_rv'>rv</span>
1211
+ <span class='kw'>end</span>
1212
+
1213
+ <span class='comment'># Returns the current debug mode.
1214
+ </span> <span class='comment'>#
1215
+ </span> <span class='comment'># @return [Boolean|NilClass] The current debug mode.
1216
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
1217
+ <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>
1218
+ <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>
1219
+ <span class='kw'>end</span>
1220
+ <span class='kw'>end</span></pre>
1221
+ </td>
1222
+ </tr>
1223
+ </table>
1224
+ </div>
1225
+
1226
+
1227
+ <span id=""></span>
1228
+ <div class="method_details ">
1229
+ <h3 class="signature " id="format_content_type-instance_method">
1230
+
1231
+ - (<tt>String</tt>) <strong>format_content_type</strong> <span class="extras">(readonly)</span>
1232
+
1233
+
1234
+
1235
+
1236
+
1237
+ </h3><div class="docstring">
1238
+ <div class="discussion">
1239
+ <p>Returns The content type of the format. Can be <code>text/xml</code> (default) or <code>text/x-yaml</code>.</p>
1240
+
1241
+
1242
+ </div>
1243
+ </div>
1244
+ <div class="tags">
1245
+
1246
+ <p class="tag_title">Returns:</p>
1247
+ <ul class="return">
1248
+
1249
+ <li>
1250
+
1251
+
1252
+ <span class='type'>(<tt>String</tt>)</span>
1253
+
1254
+
1255
+
1256
+ &mdash;
1257
+ <div class='inline'><p>The content type of the format. Can be <code>text/xml</code> (default) or <code>text/x-yaml</code>.</p>
1258
+ </div>
1259
+
1260
+ </li>
1261
+
1262
+ </ul>
1263
+
1264
+ </div><table class="source_code">
1265
+ <tr>
1266
+ <td>
1267
+ <pre class="lines">
1268
+
1269
+
1270
+ 17
1271
+ 18
1272
+ 19
1273
+ 20
1274
+ 21
1275
+ 22
1276
+ 23
1277
+ 24
1278
+ 25
1279
+ 26
1280
+ 27
1281
+ 28
1282
+ 29
1283
+ 30
1284
+ 31
1285
+ 32
1286
+ 33
1287
+ 34
1288
+ 35
1289
+ 36
1290
+ 37
1291
+ 38
1292
+ 39
1293
+ 40
1294
+ 41
1295
+ 42
1296
+ 43
1297
+ 44
1298
+ 45
1299
+ 46
1300
+ 47
1301
+ 48
1302
+ 49
1303
+ 50
1304
+ 51
1305
+ 52
1306
+ 53
1307
+ 54
1308
+ 55
1309
+ 56
1310
+ 57
1311
+ 58
1312
+ 59
1313
+ 60
1314
+ 61
1315
+ 62
1316
+ 63
1317
+ 64
1318
+ 65
1319
+ 66
1320
+ 67
1321
+ 68
1322
+ 69
1323
+ 70
1324
+ 71
1325
+ 72
1326
+ 73
1327
+ 74
1328
+ 75
1329
+ 76
1330
+ 77
1331
+ 78
1332
+ 79
1333
+ 80
1334
+ 81
1335
+ 82
1336
+ 83
1337
+ 84
1338
+ 85
1339
+ 86
1340
+ 87
1341
+ 88
1342
+ 89
1343
+ 90
1344
+ 91
1345
+ 92
1346
+ 93
1347
+ 94
1348
+ 95
1349
+ 96
1350
+ 97
1351
+ 98
1352
+ 99
1353
+ 100
1354
+ 101
1355
+ 102
1356
+ 103
1357
+ 104
1358
+ 105
1359
+ 106
1360
+ 107
1361
+ 108
1362
+ 109
1363
+ 110
1364
+ 111
1365
+ 112
1366
+ 113
1367
+ 114
1368
+ 115
1369
+ 116
1370
+ 117
1371
+ 118
1372
+ 119
1373
+ 120
1374
+ 121
1375
+ 122
1376
+ 123
1377
+ 124
1378
+ 125
1379
+ 126
1380
+ 127
1381
+ 128
1382
+ 129
1383
+ 130
1384
+ 131
1385
+ 132
1386
+ 133
1387
+ 134
1388
+ 135
1389
+ 136
1390
+ 137
1391
+ 138
1392
+ 139
1393
+ 140
1394
+ 141
1395
+ 142
1396
+ 143
1397
+ 144
1398
+ 145
1399
+ 146
1400
+ 147
1401
+ 148
1402
+ 149
1403
+ 150
1404
+ 151
1405
+ 152
1406
+ 153
1407
+ 154
1408
+ 155
1409
+ 156
1410
+ 157
1411
+ 158
1412
+ 159
1413
+ 160
1414
+ 161
1415
+ 162
1416
+ 163
1417
+ 164
1418
+ 165
1419
+ 166
1420
+ 167
1421
+ 168
1422
+ 169
1423
+ 170
1424
+ 171
1425
+ 172
1426
+ 173
1427
+ 174
1428
+ 175
1429
+ 176
1430
+ 177
1431
+ 178
1432
+ 179
1433
+ 180
1434
+ 181
1435
+ 182
1436
+ 183
1437
+ 184
1438
+ 185
1439
+ 186
1440
+ 187
1441
+ 188
1442
+ 189
1443
+ 190
1444
+ 191
1445
+ 192
1446
+ 193
1447
+ 194
1448
+ 195
1449
+ 196
1450
+ 197
1451
+ 198
1452
+ 199
1453
+ 200
1454
+ 201
1455
+ 202
1456
+ 203
1457
+ 204
1458
+ 205
1459
+ 206
1460
+ 207
1461
+ 208
1462
+ 209
1463
+ 210
1464
+ 211
1465
+ 212
1466
+ 213
1467
+ 214
1468
+ 215
1469
+ 216
1470
+ 217
1471
+ 218
1472
+ 219
1473
+ 220
1474
+ 221
1475
+ 222
1476
+ 223
1477
+ 224
1478
+ 225
1479
+ 226
1480
+ 227
1481
+ 228
1482
+ 229
1483
+ 230
1484
+ 231
1485
+ 232
1486
+ 233
1487
+ 234
1488
+ 235
1489
+ 236
1490
+ 237
1491
+ 238
1492
+ 239
1493
+ 240
1494
+ 241
1495
+ 242
1496
+ 243
1497
+ 244
1498
+ 245
1499
+ 246
1500
+ 247
1501
+ 248
1502
+ 249
1503
+ 250
1504
+ 251
1505
+ 252
1506
+ 253
1507
+ 254
1508
+ 255
1509
+ 256
1510
+ 257</pre>
1511
+ </td>
1512
+ <td>
1513
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>
1514
+
1515
+ <span class='kw'>class</span> <span class='const'>Base</span>
1516
+ <span class='comment'># The expression to match.
1517
+ </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>
1518
+
1519
+ <span class='comment'># Relevant groups in the match.
1520
+ </span> <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
1521
+ <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>
1522
+ <span class='rbrace'>}</span>
1523
+
1524
+ <span class='comment'># Recognized types of filtering
1525
+ </span> <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
1526
+ <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>
1527
+ <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>
1528
+ <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>
1529
+ <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>
1530
+ <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>
1531
+ <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>
1532
+ <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>
1533
+ <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>
1534
+ <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>
1535
+ <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>
1536
+ <span class='rbrace'>}</span>
1537
+
1538
+ <span class='comment'># The full name of the gem
1539
+ </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>
1540
+
1541
+ <span class='comment'># The root of the pincerna gem
1542
+ </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>
1543
+
1544
+ <span class='comment'># The root of the cache
1545
+ </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>
1546
+
1547
+ <span class='comment'># The root of alfred workflows
1548
+ </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>
1549
+
1550
+ <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>
1551
+
1552
+ <span class='comment'># Executes a filtering query.
1553
+ </span> <span class='comment'>#
1554
+ </span> <span class='comment'># @param type [Symbol] The type of the query.
1555
+ </span> <span class='comment'># @param query [String] The argument of the query.
1556
+ </span> <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
1557
+ </span> <span class='comment'># @param debug [String] The debug mode.
1558
+ </span> <span class='comment'># @return [String] The result of the query.
1559
+ </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>
1560
+ <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
1561
+
1562
+ <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>
1563
+ <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>
1564
+ <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>
1565
+ <span class='kw'>end</span>
1566
+
1567
+ <span class='kw'>nil</span>
1568
+ <span class='kw'>end</span>
1569
+
1570
+ <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
1571
+ <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>
1572
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
1573
+ <span class='kw'>end</span>
1574
+
1575
+ <span class='id identifier rubyid_instance'>instance</span>
1576
+ <span class='kw'>end</span>
1577
+
1578
+ <span class='comment'># Creates a new query.
1579
+ </span> <span class='comment'>#
1580
+ </span> <span class='comment'># @param query [String] The argument of the query.
1581
+ </span> <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
1582
+ </span> <span class='comment'># @param debug [String] The debug mode.
1583
+ </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>
1584
+ <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>
1585
+ <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>
1586
+
1587
+ <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>
1588
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
1589
+ <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>
1590
+ <span class='kw'>else</span>
1591
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
1592
+ <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>
1593
+ <span class='kw'>end</span>
1594
+
1595
+ <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
1596
+ <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1597
+ <span class='kw'>end</span>
1598
+
1599
+ <span class='comment'># Filters a query.
1600
+ </span> <span class='comment'>#
1601
+ </span> <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
1602
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
1603
+ <span class='comment'># Match the query
1604
+ </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>
1605
+
1606
+ <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
1607
+ <span class='comment'># Execute the filtering
1608
+ </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>
1609
+
1610
+ <span class='comment'># Show results if appropriate
1611
+ </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>
1612
+ <span class='kw'>end</span>
1613
+
1614
+ <span class='id identifier rubyid_output_feedback'>output_feedback</span>
1615
+ <span class='kw'>end</span>
1616
+
1617
+ <span class='comment'># Filters a query.
1618
+ </span> <span class='comment'>#
1619
+ </span> <span class='comment'># @param args [Array] The arguments of the query.
1620
+ </span> <span class='comment'># @return [Array] A list of items to process.
1621
+ </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>
1622
+ <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>
1623
+ <span class='kw'>end</span>
1624
+
1625
+ <span class='comment'># Processes items to obtain feedback items.
1626
+ </span> <span class='comment'>#
1627
+ </span> <span class='comment'># @param results [Array] The items to process.
1628
+ </span> <span class='comment'># @return [Array] The feedback items.
1629
+ </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>
1630
+ <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>
1631
+ <span class='kw'>end</span>
1632
+
1633
+ <span class='comment'># Adds a feedback items.
1634
+ </span> <span class='comment'>#
1635
+ </span> <span class='comment'># @param item [Array] The items to add.
1636
+ </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>
1637
+ <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
1638
+ <span class='kw'>end</span>
1639
+
1640
+ <span class='comment'># Prepares the feedback for output.
1641
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
1642
+ <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>
1643
+ <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>
1644
+ <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>
1645
+ <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>
1646
+ <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>
1647
+
1648
+ <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>
1649
+ <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>
1650
+ <span class='kw'>end</span>
1651
+ <span class='kw'>end</span>
1652
+ <span class='kw'>end</span>
1653
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
1654
+ <span class='kw'>else</span>
1655
+ <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>
1656
+ <span class='kw'>end</span>
1657
+ <span class='kw'>end</span>
1658
+
1659
+ <span class='comment'># Rounds a float to a certain precision.
1660
+ </span> <span class='comment'>#
1661
+ </span> <span class='comment'># @param value [Float] The value to convert.
1662
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
1663
+ </span> <span class='comment'># @return [Float] The rounded value.
1664
+ </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>
1665
+ <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>
1666
+ <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>
1667
+ <span class='kw'>end</span>
1668
+
1669
+ <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
1670
+ </span> <span class='comment'>#
1671
+ </span> <span class='comment'># @param value [Float] The value to print.
1672
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
1673
+ </span> <span class='comment'># @return [String] The formatted value.
1674
+ </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>
1675
+ <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>
1676
+ <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>
1677
+ <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>
1678
+ <span class='kw'>end</span>
1679
+
1680
+ <span class='id identifier rubyid_protected'>protected</span>
1681
+ <span class='comment'># Instantiates the new class.
1682
+ </span> <span class='comment'>#
1683
+ </span> <span class='comment'># @param file [String] The file name.
1684
+ </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>
1685
+ <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>
1686
+ <span class='kw'>end</span>
1687
+
1688
+ <span class='comment'># Executes filtering on matched data.
1689
+ </span> <span class='comment'>#
1690
+ </span> <span class='comment'># @param matches [MatchData] The matched data.
1691
+ </span> <span class='comment'># @return [Array] The results of filtering.
1692
+ </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>
1693
+ <span class='comment'># Get relevant matches and arguments.
1694
+ </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>
1695
+ <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>
1696
+
1697
+ <span class='comment'># Now perform the operation
1698
+ </span> <span class='kw'>begin</span>
1699
+ <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>
1700
+ <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
1701
+ <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>
1702
+ <span class='lbracket'>[</span><span class='rbracket'>]</span>
1703
+ <span class='kw'>end</span>
1704
+ <span class='kw'>end</span>
1705
+
1706
+ <span class='comment'># Converts an array of key-value pairs to an hash.
1707
+ </span> <span class='comment'>#
1708
+ </span> <span class='comment'># @param array [Array] The array to convert.
1709
+ </span> <span class='comment'># @return [Hash] The converted hash.
1710
+ </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>
1711
+ <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>
1712
+ <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>
1713
+ <span class='id identifier rubyid_rv'>rv</span>
1714
+ <span class='rbrace'>}</span>
1715
+ <span class='kw'>end</span>
1716
+
1717
+ <span class='comment'># Gets attributes and children for output.
1718
+ </span> <span class='comment'>#
1719
+ </span> <span class='comment'># @param item [Hash] The output item.
1720
+ </span> <span class='comment'># @return [Array] An array with children and attributes.
1721
+ </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>
1722
+ <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>
1723
+ <span class='kw'>end</span>
1724
+
1725
+ <span class='comment'># Fetches remote JSON resource.
1726
+ </span> <span class='comment'>#
1727
+ </span> <span class='comment'># @param url [String] The URL to get.
1728
+ </span> <span class='comment'># @param params [Hash] The parameters to pass to the server.
1729
+ </span> <span class='comment'># @param json [Boolean] If the response is a JSON object.
1730
+ </span> <span class='comment'># @return [Hash] The server&#39;s response.
1731
+ </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>
1732
+ <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>
1733
+ <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>
1734
+ <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>
1735
+ <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>
1736
+ <span class='kw'>end</span>
1737
+
1738
+ <span class='comment'># Executes a command and returns its output.
1739
+ </span> <span class='comment'>#
1740
+ </span> <span class='comment'># @param args [Array] The command to execute, with its arguments.
1741
+ </span> <span class='comment'># @return [String] The output of the command
1742
+ </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>
1743
+ <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>
1744
+ <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>
1745
+ <span class='id identifier rubyid_rv'>rv</span>
1746
+ <span class='kw'>end</span>
1747
+
1748
+ <span class='comment'># Returns the current debug mode.
1749
+ </span> <span class='comment'>#
1750
+ </span> <span class='comment'># @return [Boolean|NilClass] The current debug mode.
1751
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
1752
+ <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>
1753
+ <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>
1754
+ <span class='kw'>end</span>
1755
+ <span class='kw'>end</span></pre>
1756
+ </td>
1757
+ </tr>
1758
+ </table>
1759
+ </div>
1760
+
1761
+
1762
+ <span id=""></span>
1763
+ <div class="method_details ">
1764
+ <h3 class="signature " id="output-instance_method">
1765
+
1766
+ - (<tt>String</tt>) <strong>output</strong> <span class="extras">(readonly)</span>
1767
+
1768
+
1769
+
1770
+
1771
+
1772
+ </h3><div class="docstring">
1773
+ <div class="discussion">
1774
+ <p>Returns The output of filtering.</p>
1775
+
1776
+
1777
+ </div>
1778
+ </div>
1779
+ <div class="tags">
1780
+
1781
+ <p class="tag_title">Returns:</p>
1782
+ <ul class="return">
1783
+
1784
+ <li>
1785
+
1786
+
1787
+ <span class='type'>(<tt>String</tt>)</span>
1788
+
1789
+
1790
+
1791
+ &mdash;
1792
+ <div class='inline'><p>The output of filtering.</p>
1793
+ </div>
1794
+
1795
+ </li>
1796
+
1797
+ </ul>
1798
+
1799
+ </div><table class="source_code">
1800
+ <tr>
1801
+ <td>
1802
+ <pre class="lines">
1803
+
1804
+
1805
+ 17
1806
+ 18
1807
+ 19
1808
+ 20
1809
+ 21
1810
+ 22
1811
+ 23
1812
+ 24
1813
+ 25
1814
+ 26
1815
+ 27
1816
+ 28
1817
+ 29
1818
+ 30
1819
+ 31
1820
+ 32
1821
+ 33
1822
+ 34
1823
+ 35
1824
+ 36
1825
+ 37
1826
+ 38
1827
+ 39
1828
+ 40
1829
+ 41
1830
+ 42
1831
+ 43
1832
+ 44
1833
+ 45
1834
+ 46
1835
+ 47
1836
+ 48
1837
+ 49
1838
+ 50
1839
+ 51
1840
+ 52
1841
+ 53
1842
+ 54
1843
+ 55
1844
+ 56
1845
+ 57
1846
+ 58
1847
+ 59
1848
+ 60
1849
+ 61
1850
+ 62
1851
+ 63
1852
+ 64
1853
+ 65
1854
+ 66
1855
+ 67
1856
+ 68
1857
+ 69
1858
+ 70
1859
+ 71
1860
+ 72
1861
+ 73
1862
+ 74
1863
+ 75
1864
+ 76
1865
+ 77
1866
+ 78
1867
+ 79
1868
+ 80
1869
+ 81
1870
+ 82
1871
+ 83
1872
+ 84
1873
+ 85
1874
+ 86
1875
+ 87
1876
+ 88
1877
+ 89
1878
+ 90
1879
+ 91
1880
+ 92
1881
+ 93
1882
+ 94
1883
+ 95
1884
+ 96
1885
+ 97
1886
+ 98
1887
+ 99
1888
+ 100
1889
+ 101
1890
+ 102
1891
+ 103
1892
+ 104
1893
+ 105
1894
+ 106
1895
+ 107
1896
+ 108
1897
+ 109
1898
+ 110
1899
+ 111
1900
+ 112
1901
+ 113
1902
+ 114
1903
+ 115
1904
+ 116
1905
+ 117
1906
+ 118
1907
+ 119
1908
+ 120
1909
+ 121
1910
+ 122
1911
+ 123
1912
+ 124
1913
+ 125
1914
+ 126
1915
+ 127
1916
+ 128
1917
+ 129
1918
+ 130
1919
+ 131
1920
+ 132
1921
+ 133
1922
+ 134
1923
+ 135
1924
+ 136
1925
+ 137
1926
+ 138
1927
+ 139
1928
+ 140
1929
+ 141
1930
+ 142
1931
+ 143
1932
+ 144
1933
+ 145
1934
+ 146
1935
+ 147
1936
+ 148
1937
+ 149
1938
+ 150
1939
+ 151
1940
+ 152
1941
+ 153
1942
+ 154
1943
+ 155
1944
+ 156
1945
+ 157
1946
+ 158
1947
+ 159
1948
+ 160
1949
+ 161
1950
+ 162
1951
+ 163
1952
+ 164
1953
+ 165
1954
+ 166
1955
+ 167
1956
+ 168
1957
+ 169
1958
+ 170
1959
+ 171
1960
+ 172
1961
+ 173
1962
+ 174
1963
+ 175
1964
+ 176
1965
+ 177
1966
+ 178
1967
+ 179
1968
+ 180
1969
+ 181
1970
+ 182
1971
+ 183
1972
+ 184
1973
+ 185
1974
+ 186
1975
+ 187
1976
+ 188
1977
+ 189
1978
+ 190
1979
+ 191
1980
+ 192
1981
+ 193
1982
+ 194
1983
+ 195
1984
+ 196
1985
+ 197
1986
+ 198
1987
+ 199
1988
+ 200
1989
+ 201
1990
+ 202
1991
+ 203
1992
+ 204
1993
+ 205
1994
+ 206
1995
+ 207
1996
+ 208
1997
+ 209
1998
+ 210
1999
+ 211
2000
+ 212
2001
+ 213
2002
+ 214
2003
+ 215
2004
+ 216
2005
+ 217
2006
+ 218
2007
+ 219
2008
+ 220
2009
+ 221
2010
+ 222
2011
+ 223
2012
+ 224
2013
+ 225
2014
+ 226
2015
+ 227
2016
+ 228
2017
+ 229
2018
+ 230
2019
+ 231
2020
+ 232
2021
+ 233
2022
+ 234
2023
+ 235
2024
+ 236
2025
+ 237
2026
+ 238
2027
+ 239
2028
+ 240
2029
+ 241
2030
+ 242
2031
+ 243
2032
+ 244
2033
+ 245
2034
+ 246
2035
+ 247
2036
+ 248
2037
+ 249
2038
+ 250
2039
+ 251
2040
+ 252
2041
+ 253
2042
+ 254
2043
+ 255
2044
+ 256
2045
+ 257</pre>
2046
+ </td>
2047
+ <td>
2048
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 17</span>
2049
+
2050
+ <span class='kw'>class</span> <span class='const'>Base</span>
2051
+ <span class='comment'># The expression to match.
2052
+ </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>
2053
+
2054
+ <span class='comment'># Relevant groups in the match.
2055
+ </span> <span class='const'>RELEVANT_MATCHES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
2056
+ <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>
2057
+ <span class='rbrace'>}</span>
2058
+
2059
+ <span class='comment'># Recognized types of filtering
2060
+ </span> <span class='const'>TYPES</span> <span class='op'>=</span> <span class='lbrace'>{</span>
2061
+ <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>
2062
+ <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>
2063
+ <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>
2064
+ <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>
2065
+ <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>
2066
+ <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>
2067
+ <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>
2068
+ <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>
2069
+ <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>
2070
+ <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>
2071
+ <span class='rbrace'>}</span>
2072
+
2073
+ <span class='comment'># The full name of the gem
2074
+ </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>
2075
+
2076
+ <span class='comment'># The root of the pincerna gem
2077
+ </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>
2078
+
2079
+ <span class='comment'># The root of the cache
2080
+ </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>
2081
+
2082
+ <span class='comment'># The root of alfred workflows
2083
+ </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>
2084
+
2085
+ <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>
2086
+
2087
+ <span class='comment'># Executes a filtering query.
2088
+ </span> <span class='comment'>#
2089
+ </span> <span class='comment'># @param type [Symbol] The type of the query.
2090
+ </span> <span class='comment'># @param query [String] The argument of the query.
2091
+ </span> <span class='comment'># @param format [String] The format to use. Valid values are `:xml` (default) and `:yml`.
2092
+ </span> <span class='comment'># @param debug [String] The debug mode.
2093
+ </span> <span class='comment'># @return [String] The result of the query.
2094
+ </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>
2095
+ <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
2096
+
2097
+ <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>
2098
+ <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>
2099
+ <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>
2100
+ <span class='kw'>end</span>
2101
+
2102
+ <span class='kw'>nil</span>
2103
+ <span class='kw'>end</span>
2104
+
2105
+ <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
2106
+ <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>
2107
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
2108
+ <span class='kw'>end</span>
2109
+
2110
+ <span class='id identifier rubyid_instance'>instance</span>
2111
+ <span class='kw'>end</span>
2112
+
2113
+ <span class='comment'># Creates a new query.
2114
+ </span> <span class='comment'>#
2115
+ </span> <span class='comment'># @param query [String] The argument of the query.
2116
+ </span> <span class='comment'># @param requested_format [String] The format to use. Valid values are `xml` (default), `yaml` or `yml`.
2117
+ </span> <span class='comment'># @param debug [String] The debug mode.
2118
+ </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>
2119
+ <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>
2120
+ <span class='ivar'>@cache_dir</span> <span class='op'>=</span> <span class='const'>CACHE_ROOT</span>
2121
+
2122
+ <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>
2123
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:yml</span>
2124
+ <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>
2125
+ <span class='kw'>else</span>
2126
+ <span class='ivar'>@format</span> <span class='op'>=</span> <span class='symbol'>:xml</span>
2127
+ <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>
2128
+ <span class='kw'>end</span>
2129
+
2130
+ <span class='ivar'>@debug</span> <span class='op'>=</span> <span class='id identifier rubyid_debug'>debug</span>
2131
+ <span class='ivar'>@feedback_items</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
2132
+ <span class='kw'>end</span>
2133
+
2134
+ <span class='comment'># Filters a query.
2135
+ </span> <span class='comment'>#
2136
+ </span> <span class='comment'># @return [String] The feedback items of the query, formatted as XML.
2137
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
2138
+ <span class='comment'># Match the query
2139
+ </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>
2140
+
2141
+ <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
2142
+ <span class='comment'># Execute the filtering
2143
+ </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>
2144
+
2145
+ <span class='comment'># Show results if appropriate
2146
+ </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>
2147
+ <span class='kw'>end</span>
2148
+
2149
+ <span class='id identifier rubyid_output_feedback'>output_feedback</span>
2150
+ <span class='kw'>end</span>
2151
+
2152
+ <span class='comment'># Filters a query.
2153
+ </span> <span class='comment'>#
2154
+ </span> <span class='comment'># @param args [Array] The arguments of the query.
2155
+ </span> <span class='comment'># @return [Array] A list of items to process.
2156
+ </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>
2157
+ <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>
2158
+ <span class='kw'>end</span>
2159
+
2160
+ <span class='comment'># Processes items to obtain feedback items.
2161
+ </span> <span class='comment'>#
2162
+ </span> <span class='comment'># @param results [Array] The items to process.
2163
+ </span> <span class='comment'># @return [Array] The feedback items.
2164
+ </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>
2165
+ <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>
2166
+ <span class='kw'>end</span>
2167
+
2168
+ <span class='comment'># Adds a feedback items.
2169
+ </span> <span class='comment'>#
2170
+ </span> <span class='comment'># @param item [Array] The items to add.
2171
+ </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>
2172
+ <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
2173
+ <span class='kw'>end</span>
2174
+
2175
+ <span class='comment'># Prepares the feedback for output.
2176
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
2177
+ <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>
2178
+ <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>
2179
+ <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>
2180
+ <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>
2181
+ <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>
2182
+
2183
+ <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>
2184
+ <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>
2185
+ <span class='kw'>end</span>
2186
+ <span class='kw'>end</span>
2187
+ <span class='kw'>end</span>
2188
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
2189
+ <span class='kw'>else</span>
2190
+ <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>
2191
+ <span class='kw'>end</span>
2192
+ <span class='kw'>end</span>
2193
+
2194
+ <span class='comment'># Rounds a float to a certain precision.
2195
+ </span> <span class='comment'>#
2196
+ </span> <span class='comment'># @param value [Float] The value to convert.
2197
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
2198
+ </span> <span class='comment'># @return [Float] The rounded value.
2199
+ </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>
2200
+ <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>
2201
+ <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>
2202
+ <span class='kw'>end</span>
2203
+
2204
+ <span class='comment'># Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.
2205
+ </span> <span class='comment'>#
2206
+ </span> <span class='comment'># @param value [Float] The value to print.
2207
+ </span> <span class='comment'># @param precision [Fixnum] The precision to use.
2208
+ </span> <span class='comment'># @return [String] The formatted value.
2209
+ </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>
2210
+ <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>
2211
+ <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>
2212
+ <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>
2213
+ <span class='kw'>end</span>
2214
+
2215
+ <span class='id identifier rubyid_protected'>protected</span>
2216
+ <span class='comment'># Instantiates the new class.
2217
+ </span> <span class='comment'>#
2218
+ </span> <span class='comment'># @param file [String] The file name.
2219
+ </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>
2220
+ <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>
2221
+ <span class='kw'>end</span>
2222
+
2223
+ <span class='comment'># Executes filtering on matched data.
2224
+ </span> <span class='comment'>#
2225
+ </span> <span class='comment'># @param matches [MatchData] The matched data.
2226
+ </span> <span class='comment'># @return [Array] The results of filtering.
2227
+ </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>
2228
+ <span class='comment'># Get relevant matches and arguments.
2229
+ </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>
2230
+ <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>
2231
+
2232
+ <span class='comment'># Now perform the operation
2233
+ </span> <span class='kw'>begin</span>
2234
+ <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>
2235
+ <span class='kw'>rescue</span> <span class='op'>=&gt;</span> <span class='id identifier rubyid_e'>e</span>
2236
+ <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>
2237
+ <span class='lbracket'>[</span><span class='rbracket'>]</span>
2238
+ <span class='kw'>end</span>
2239
+ <span class='kw'>end</span>
2240
+
2241
+ <span class='comment'># Converts an array of key-value pairs to an hash.
2242
+ </span> <span class='comment'>#
2243
+ </span> <span class='comment'># @param array [Array] The array to convert.
2244
+ </span> <span class='comment'># @return [Hash] The converted hash.
2245
+ </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>
2246
+ <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>
2247
+ <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>
2248
+ <span class='id identifier rubyid_rv'>rv</span>
2249
+ <span class='rbrace'>}</span>
2250
+ <span class='kw'>end</span>
2251
+
2252
+ <span class='comment'># Gets attributes and children for output.
2253
+ </span> <span class='comment'>#
2254
+ </span> <span class='comment'># @param item [Hash] The output item.
2255
+ </span> <span class='comment'># @return [Array] An array with children and attributes.
2256
+ </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>
2257
+ <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>
2258
+ <span class='kw'>end</span>
2259
+
2260
+ <span class='comment'># Fetches remote JSON resource.
2261
+ </span> <span class='comment'>#
2262
+ </span> <span class='comment'># @param url [String] The URL to get.
2263
+ </span> <span class='comment'># @param params [Hash] The parameters to pass to the server.
2264
+ </span> <span class='comment'># @param json [Boolean] If the response is a JSON object.
2265
+ </span> <span class='comment'># @return [Hash] The server&#39;s response.
2266
+ </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>
2267
+ <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>
2268
+ <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>
2269
+ <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>
2270
+ <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>
2271
+ <span class='kw'>end</span>
2272
+
2273
+ <span class='comment'># Executes a command and returns its output.
2274
+ </span> <span class='comment'>#
2275
+ </span> <span class='comment'># @param args [Array] The command to execute, with its arguments.
2276
+ </span> <span class='comment'># @return [String] The output of the command
2277
+ </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>
2278
+ <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>
2279
+ <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>
2280
+ <span class='id identifier rubyid_rv'>rv</span>
2281
+ <span class='kw'>end</span>
2282
+
2283
+ <span class='comment'># Returns the current debug mode.
2284
+ </span> <span class='comment'>#
2285
+ </span> <span class='comment'># @return [Boolean|NilClass] The current debug mode.
2286
+ </span> <span class='kw'>def</span> <span class='id identifier rubyid_debug_mode'>debug_mode</span>
2287
+ <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>
2288
+ <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>
2289
+ <span class='kw'>end</span>
2290
+ <span class='kw'>end</span></pre>
2291
+ </td>
2292
+ </tr>
2293
+ </table>
2294
+ </div>
2295
+
2296
+ </div>
2297
+
2298
+
2299
+ <div id="class_method_details" class="method_details_list">
2300
+ <h2>Class Method Details</h2>
2301
+
2302
+
2303
+ <div class="method_details first">
2304
+ <h3 class="signature first" id="execute!-class_method">
2305
+
2306
+ + (<tt>String</tt>) <strong>execute!</strong>(type, query, format = :xml, debug = nil)
2307
+
2308
+
2309
+
2310
+
2311
+
2312
+ </h3><div class="docstring">
2313
+ <div class="discussion">
2314
+ <p>Executes a filtering query.</p>
2315
+
2316
+
2317
+ </div>
2318
+ </div>
2319
+ <div class="tags">
2320
+ <p class="tag_title">Parameters:</p>
2321
+ <ul class="param">
2322
+
2323
+ <li>
2324
+
2325
+ <span class='name'>type</span>
2326
+
2327
+
2328
+ <span class='type'>(<tt>Symbol</tt>)</span>
2329
+
2330
+
2331
+
2332
+ &mdash;
2333
+ <div class='inline'><p>The type of the query.</p>
2334
+ </div>
2335
+
2336
+ </li>
2337
+
2338
+ <li>
2339
+
2340
+ <span class='name'>query</span>
2341
+
2342
+
2343
+ <span class='type'>(<tt>String</tt>)</span>
2344
+
2345
+
2346
+
2347
+ &mdash;
2348
+ <div class='inline'><p>The argument of the query.</p>
2349
+ </div>
2350
+
2351
+ </li>
2352
+
2353
+ <li>
2354
+
2355
+ <span class='name'>format</span>
2356
+
2357
+
2358
+ <span class='type'>(<tt>String</tt>)</span>
2359
+
2360
+
2361
+ <em class="default">(defaults to: <tt>:xml</tt>)</em>
2362
+
2363
+
2364
+ &mdash;
2365
+ <div class='inline'><p>The format to use. Valid values are <code>:xml</code> (default) and <code>:yml</code>.</p>
2366
+ </div>
2367
+
2368
+ </li>
2369
+
2370
+ <li>
2371
+
2372
+ <span class='name'>debug</span>
2373
+
2374
+
2375
+ <span class='type'>(<tt>String</tt>)</span>
2376
+
2377
+
2378
+ <em class="default">(defaults to: <tt>nil</tt>)</em>
2379
+
2380
+
2381
+ &mdash;
2382
+ <div class='inline'><p>The debug mode.</p>
2383
+ </div>
2384
+
2385
+ </li>
2386
+
2387
+ </ul>
2388
+
2389
+ <p class="tag_title">Returns:</p>
2390
+ <ul class="return">
2391
+
2392
+ <li>
2393
+
2394
+
2395
+ <span class='type'>(<tt>String</tt>)</span>
2396
+
2397
+
2398
+
2399
+ &mdash;
2400
+ <div class='inline'><p>The result of the query.</p>
2401
+ </div>
2402
+
2403
+ </li>
2404
+
2405
+ </ul>
2406
+
2407
+ </div><table class="source_code">
2408
+ <tr>
2409
+ <td>
2410
+ <pre class="lines">
2411
+
2412
+
2413
+ 61
2414
+ 62
2415
+ 63
2416
+ 64
2417
+ 65
2418
+ 66
2419
+ 67
2420
+ 68
2421
+ 69
2422
+ 70
2423
+ 71
2424
+ 72
2425
+ 73
2426
+ 74
2427
+ 75
2428
+ 76
2429
+ 77
2430
+ 78</pre>
2431
+ </td>
2432
+ <td>
2433
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 61</span>
2434
+
2435
+ <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>
2436
+ <span class='id identifier rubyid_instance'>instance</span> <span class='op'>=</span> <span class='kw'>nil</span>
2437
+
2438
+ <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>
2439
+ <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>
2440
+ <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>
2441
+ <span class='kw'>end</span>
2442
+
2443
+ <span class='kw'>nil</span>
2444
+ <span class='kw'>end</span>
2445
+
2446
+ <span class='kw'>if</span> <span class='id identifier rubyid_type'>type</span>
2447
+ <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>
2448
+ <span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_filter'>filter</span>
2449
+ <span class='kw'>end</span>
2450
+
2451
+ <span class='id identifier rubyid_instance'>instance</span>
2452
+ <span class='kw'>end</span></pre>
2453
+ </td>
2454
+ </tr>
2455
+ </table>
2456
+ </div>
2457
+
2458
+ </div>
2459
+
2460
+ <div id="instance_method_details" class="method_details_list">
2461
+ <h2>Instance Method Details</h2>
2462
+
2463
+
2464
+ <div class="method_details first">
2465
+ <h3 class="signature first" id="add_feedback_item-instance_method">
2466
+
2467
+ - (<tt>Object</tt>) <strong>add_feedback_item</strong>(item)
2468
+
2469
+
2470
+
2471
+
2472
+
2473
+ </h3><div class="docstring">
2474
+ <div class="discussion">
2475
+ <p>Adds a feedback items.</p>
2476
+
2477
+
2478
+ </div>
2479
+ </div>
2480
+ <div class="tags">
2481
+ <p class="tag_title">Parameters:</p>
2482
+ <ul class="param">
2483
+
2484
+ <li>
2485
+
2486
+ <span class='name'>item</span>
2487
+
2488
+
2489
+ <span class='type'>(<tt>Array</tt>)</span>
2490
+
2491
+
2492
+
2493
+ &mdash;
2494
+ <div class='inline'><p>The items to add.</p>
2495
+ </div>
2496
+
2497
+ </li>
2498
+
2499
+ </ul>
2500
+
2501
+
2502
+ </div><table class="source_code">
2503
+ <tr>
2504
+ <td>
2505
+ <pre class="lines">
2506
+
2507
+
2508
+ 138
2509
+ 139
2510
+ 140</pre>
2511
+ </td>
2512
+ <td>
2513
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 138</span>
2514
+
2515
+ <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>
2516
+ <span class='ivar'>@feedback_items</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_item'>item</span>
2517
+ <span class='kw'>end</span></pre>
2518
+ </td>
2519
+ </tr>
2520
+ </table>
2521
+ </div>
2522
+
2523
+ <div class="method_details ">
2524
+ <h3 class="signature " id="filter-instance_method">
2525
+
2526
+ - (<tt>String</tt>) <strong>filter</strong>
2527
+
2528
+
2529
+
2530
+
2531
+
2532
+ </h3><div class="docstring">
2533
+ <div class="discussion">
2534
+ <p>Filters a query.</p>
2535
+
2536
+
2537
+ </div>
2538
+ </div>
2539
+ <div class="tags">
2540
+
2541
+ <p class="tag_title">Returns:</p>
2542
+ <ul class="return">
2543
+
2544
+ <li>
2545
+
2546
+
2547
+ <span class='type'>(<tt>String</tt>)</span>
2548
+
2549
+
2550
+
2551
+ &mdash;
2552
+ <div class='inline'><p>The feedback items of the query, formatted as XML.</p>
2553
+ </div>
2554
+
2555
+ </li>
2556
+
2557
+ </ul>
2558
+
2559
+ </div><table class="source_code">
2560
+ <tr>
2561
+ <td>
2562
+ <pre class="lines">
2563
+
2564
+
2565
+ 104
2566
+ 105
2567
+ 106
2568
+ 107
2569
+ 108
2570
+ 109
2571
+ 110
2572
+ 111
2573
+ 112
2574
+ 113
2575
+ 114
2576
+ 115
2577
+ 116
2578
+ 117</pre>
2579
+ </td>
2580
+ <td>
2581
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 104</span>
2582
+
2583
+ <span class='kw'>def</span> <span class='id identifier rubyid_filter'>filter</span>
2584
+ <span class='comment'># Match the query
2585
+ </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>
2586
+
2587
+ <span class='kw'>if</span> <span class='id identifier rubyid_matches'>matches</span> <span class='kw'>then</span>
2588
+ <span class='comment'># Execute the filtering
2589
+ </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>
2590
+
2591
+ <span class='comment'># Show results if appropriate
2592
+ </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>
2593
+ <span class='kw'>end</span>
2594
+
2595
+ <span class='id identifier rubyid_output_feedback'>output_feedback</span>
2596
+ <span class='kw'>end</span></pre>
2597
+ </td>
2598
+ </tr>
2599
+ </table>
2600
+ </div>
2601
+
2602
+ <div class="method_details ">
2603
+ <h3 class="signature " id="format_float-instance_method">
2604
+
2605
+ - (<tt>String</tt>) <strong>format_float</strong>(value, precision = 3)
2606
+
2607
+
2608
+
2609
+
2610
+
2611
+ </h3><div class="docstring">
2612
+ <div class="discussion">
2613
+ <p>Rounds a float to a certain precision and prints it as a string. Unneeded leading zero are remove.</p>
2614
+
2615
+
2616
+ </div>
2617
+ </div>
2618
+ <div class="tags">
2619
+ <p class="tag_title">Parameters:</p>
2620
+ <ul class="param">
2621
+
2622
+ <li>
2623
+
2624
+ <span class='name'>value</span>
2625
+
2626
+
2627
+ <span class='type'>(<tt>Float</tt>)</span>
2628
+
2629
+
2630
+
2631
+ &mdash;
2632
+ <div class='inline'><p>The value to print.</p>
2633
+ </div>
2634
+
2635
+ </li>
2636
+
2637
+ <li>
2638
+
2639
+ <span class='name'>precision</span>
2640
+
2641
+
2642
+ <span class='type'>(<tt>Fixnum</tt>)</span>
2643
+
2644
+
2645
+ <em class="default">(defaults to: <tt>3</tt>)</em>
2646
+
2647
+
2648
+ &mdash;
2649
+ <div class='inline'><p>The precision to use.</p>
2650
+ </div>
2651
+
2652
+ </li>
2653
+
2654
+ </ul>
2655
+
2656
+ <p class="tag_title">Returns:</p>
2657
+ <ul class="return">
2658
+
2659
+ <li>
2660
+
2661
+
2662
+ <span class='type'>(<tt>String</tt>)</span>
2663
+
2664
+
2665
+
2666
+ &mdash;
2667
+ <div class='inline'><p>The formatted value.</p>
2668
+ </div>
2669
+
2670
+ </li>
2671
+
2672
+ </ul>
2673
+
2674
+ </div><table class="source_code">
2675
+ <tr>
2676
+ <td>
2677
+ <pre class="lines">
2678
+
2679
+
2680
+ 176
2681
+ 177
2682
+ 178
2683
+ 179
2684
+ 180</pre>
2685
+ </td>
2686
+ <td>
2687
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 176</span>
2688
+
2689
+ <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>
2690
+ <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>
2691
+ <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>
2692
+ <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>
2693
+ <span class='kw'>end</span></pre>
2694
+ </td>
2695
+ </tr>
2696
+ </table>
2697
+ </div>
2698
+
2699
+ <div class="method_details ">
2700
+ <h3 class="signature " id="output_feedback-instance_method">
2701
+
2702
+ - (<tt>Object</tt>) <strong>output_feedback</strong>
2703
+
2704
+
2705
+
2706
+
2707
+
2708
+ </h3><div class="docstring">
2709
+ <div class="discussion">
2710
+ <p>Prepares the feedback for output.</p>
2711
+
2712
+
2713
+ </div>
2714
+ </div>
2715
+ <div class="tags">
2716
+
2717
+
2718
+ </div><table class="source_code">
2719
+ <tr>
2720
+ <td>
2721
+ <pre class="lines">
2722
+
2723
+
2724
+ 143
2725
+ 144
2726
+ 145
2727
+ 146
2728
+ 147
2729
+ 148
2730
+ 149
2731
+ 150
2732
+ 151
2733
+ 152
2734
+ 153
2735
+ 154
2736
+ 155
2737
+ 156
2738
+ 157
2739
+ 158
2740
+ 159</pre>
2741
+ </td>
2742
+ <td>
2743
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 143</span>
2744
+
2745
+ <span class='kw'>def</span> <span class='id identifier rubyid_output_feedback'>output_feedback</span>
2746
+ <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>
2747
+ <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>
2748
+ <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>
2749
+ <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>
2750
+ <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>
2751
+
2752
+ <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>
2753
+ <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>
2754
+ <span class='kw'>end</span>
2755
+ <span class='kw'>end</span>
2756
+ <span class='kw'>end</span>
2757
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_to_xml'>to_xml</span>
2758
+ <span class='kw'>else</span>
2759
+ <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>
2760
+ <span class='kw'>end</span>
2761
+ <span class='kw'>end</span></pre>
2762
+ </td>
2763
+ </tr>
2764
+ </table>
2765
+ </div>
2766
+
2767
+ <div class="method_details ">
2768
+ <h3 class="signature " id="perform_filtering-instance_method">
2769
+
2770
+ - (<tt>Array</tt>) <strong>perform_filtering</strong>(*args)
2771
+
2772
+
2773
+
2774
+
2775
+
2776
+ </h3><div class="docstring">
2777
+ <div class="discussion">
2778
+ <p>Filters a query.</p>
2779
+
2780
+
2781
+ </div>
2782
+ </div>
2783
+ <div class="tags">
2784
+ <p class="tag_title">Parameters:</p>
2785
+ <ul class="param">
2786
+
2787
+ <li>
2788
+
2789
+ <span class='name'>args</span>
2790
+
2791
+
2792
+ <span class='type'>(<tt>Array</tt>)</span>
2793
+
2794
+
2795
+
2796
+ &mdash;
2797
+ <div class='inline'><p>The arguments of the query.</p>
2798
+ </div>
2799
+
2800
+ </li>
2801
+
2802
+ </ul>
2803
+
2804
+ <p class="tag_title">Returns:</p>
2805
+ <ul class="return">
2806
+
2807
+ <li>
2808
+
2809
+
2810
+ <span class='type'>(<tt>Array</tt>)</span>
2811
+
2812
+
2813
+
2814
+ &mdash;
2815
+ <div class='inline'><p>A list of items to process.</p>
2816
+ </div>
2817
+
2818
+ </li>
2819
+
2820
+ </ul>
2821
+ <p class="tag_title">Raises:</p>
2822
+ <ul class="raise">
2823
+
2824
+ <li>
2825
+
2826
+
2827
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
2828
+
2829
+
2830
+
2831
+ </li>
2832
+
2833
+ </ul>
2834
+
2835
+ </div><table class="source_code">
2836
+ <tr>
2837
+ <td>
2838
+ <pre class="lines">
2839
+
2840
+
2841
+ 123
2842
+ 124
2843
+ 125</pre>
2844
+ </td>
2845
+ <td>
2846
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 123</span>
2847
+
2848
+ <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>
2849
+ <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>
2850
+ <span class='kw'>end</span></pre>
2851
+ </td>
2852
+ </tr>
2853
+ </table>
2854
+ </div>
2855
+
2856
+ <div class="method_details ">
2857
+ <h3 class="signature " id="process_results-instance_method">
2858
+
2859
+ - (<tt>Array</tt>) <strong>process_results</strong>(results)
2860
+
2861
+
2862
+
2863
+
2864
+
2865
+ </h3><div class="docstring">
2866
+ <div class="discussion">
2867
+ <p>Processes items to obtain feedback items.</p>
2868
+
2869
+
2870
+ </div>
2871
+ </div>
2872
+ <div class="tags">
2873
+ <p class="tag_title">Parameters:</p>
2874
+ <ul class="param">
2875
+
2876
+ <li>
2877
+
2878
+ <span class='name'>results</span>
2879
+
2880
+
2881
+ <span class='type'>(<tt>Array</tt>)</span>
2882
+
2883
+
2884
+
2885
+ &mdash;
2886
+ <div class='inline'><p>The items to process.</p>
2887
+ </div>
2888
+
2889
+ </li>
2890
+
2891
+ </ul>
2892
+
2893
+ <p class="tag_title">Returns:</p>
2894
+ <ul class="return">
2895
+
2896
+ <li>
2897
+
2898
+
2899
+ <span class='type'>(<tt>Array</tt>)</span>
2900
+
2901
+
2902
+
2903
+ &mdash;
2904
+ <div class='inline'><p>The feedback items.</p>
2905
+ </div>
2906
+
2907
+ </li>
2908
+
2909
+ </ul>
2910
+ <p class="tag_title">Raises:</p>
2911
+ <ul class="raise">
2912
+
2913
+ <li>
2914
+
2915
+
2916
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
2917
+
2918
+
2919
+
2920
+ </li>
2921
+
2922
+ </ul>
2923
+
2924
+ </div><table class="source_code">
2925
+ <tr>
2926
+ <td>
2927
+ <pre class="lines">
2928
+
2929
+
2930
+ 131
2931
+ 132
2932
+ 133</pre>
2933
+ </td>
2934
+ <td>
2935
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 131</span>
2936
+
2937
+ <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>
2938
+ <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>
2939
+ <span class='kw'>end</span></pre>
2940
+ </td>
2941
+ </tr>
2942
+ </table>
2943
+ </div>
2944
+
2945
+ <div class="method_details ">
2946
+ <h3 class="signature " id="round_float-instance_method">
2947
+
2948
+ - (<tt>Float</tt>) <strong>round_float</strong>(value, precision = 3)
2949
+
2950
+
2951
+
2952
+
2953
+
2954
+ </h3><div class="docstring">
2955
+ <div class="discussion">
2956
+ <p>Rounds a float to a certain precision.</p>
2957
+
2958
+
2959
+ </div>
2960
+ </div>
2961
+ <div class="tags">
2962
+ <p class="tag_title">Parameters:</p>
2963
+ <ul class="param">
2964
+
2965
+ <li>
2966
+
2967
+ <span class='name'>value</span>
2968
+
2969
+
2970
+ <span class='type'>(<tt>Float</tt>)</span>
2971
+
2972
+
2973
+
2974
+ &mdash;
2975
+ <div class='inline'><p>The value to convert.</p>
2976
+ </div>
2977
+
2978
+ </li>
2979
+
2980
+ <li>
2981
+
2982
+ <span class='name'>precision</span>
2983
+
2984
+
2985
+ <span class='type'>(<tt>Fixnum</tt>)</span>
2986
+
2987
+
2988
+ <em class="default">(defaults to: <tt>3</tt>)</em>
2989
+
2990
+
2991
+ &mdash;
2992
+ <div class='inline'><p>The precision to use.</p>
2993
+ </div>
2994
+
2995
+ </li>
2996
+
2997
+ </ul>
2998
+
2999
+ <p class="tag_title">Returns:</p>
3000
+ <ul class="return">
3001
+
3002
+ <li>
3003
+
3004
+
3005
+ <span class='type'>(<tt>Float</tt>)</span>
3006
+
3007
+
3008
+
3009
+ &mdash;
3010
+ <div class='inline'><p>The rounded value.</p>
3011
+ </div>
3012
+
3013
+ </li>
3014
+
3015
+ </ul>
3016
+
3017
+ </div><table class="source_code">
3018
+ <tr>
3019
+ <td>
3020
+ <pre class="lines">
3021
+
3022
+
3023
+ 166
3024
+ 167
3025
+ 168
3026
+ 169</pre>
3027
+ </td>
3028
+ <td>
3029
+ <pre class="code"><span class="info file"># File 'lib/pincerna/base.rb', line 166</span>
3030
+
3031
+ <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>
3032
+ <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>
3033
+ <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>
3034
+ <span class='kw'>end</span></pre>
3035
+ </td>
3036
+ </tr>
3037
+ </table>
3038
+ </div>
3039
+
3040
+ </div>
3041
+
3042
+ </div>
3043
+
3044
+ <div id="footer">
3045
+ Generated on Thu Aug 18 15:50:04 2016 by
3046
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
3047
+ 0.8.7 (ruby-2.3.0).
3048
+ </div>
3049
+
3050
+ </body>
3051
+ </html>