pincerna 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>