code_zauker 0.0.2 → 0.0.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.
- data/BUGS.org +4 -0
- data/CHANGELOG.org +15 -0
- data/LICENSE.txt +674 -0
- data/Rakefile +11 -2
- data/bin/czindexer +46 -39
- data/bin/czsearch +85 -4
- data/code_zauker.gemspec +1 -0
- data/doc/CodeZauker.html +42 -13
- data/doc/CodeZauker/FileScanner.html +373 -183
- data/doc/CodeZauker/Util.html +360 -0
- data/doc/Grep.html +344 -0
- data/doc/_index.html +31 -3
- data/doc/class_list.html +1 -1
- data/doc/frames.html +1 -1
- data/doc/index.html +31 -3
- data/doc/method_list.html +48 -0
- data/doc/top-level-namespace.html +3 -3
- data/lib/code_zauker.rb +182 -41
- data/lib/code_zauker/constants.rb +19 -7
- data/lib/code_zauker/grep.rb +17 -13
- data/lib/code_zauker/version.rb +1 -1
- data/readme.org +19 -8
- data/test/fixture/TEST_LICENSE.txt +0 -970
- data/test/fixture/kurukku.txt +3 -1
- data/test/fixture/testArchive.zip +0 -0
- data/test/test_search.rb +87 -12
- metadata +25 -8
@@ -0,0 +1,360 @@
|
|
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: CodeZauker::Util
|
8
|
+
|
9
|
+
— Code Zauker 0.0.3 Documentation
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '..';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="../_index.html">Index (U)</a> »
|
37
|
+
<span class='title'><span class='object_link'><a href="../CodeZauker.html" title="CodeZauker (module)">CodeZauker</a></span></span>
|
38
|
+
»
|
39
|
+
<span class="title">Util</span>
|
40
|
+
|
41
|
+
|
42
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div id="search">
|
46
|
+
|
47
|
+
<a id="class_list_link" href="#">Class List</a>
|
48
|
+
|
49
|
+
<a id="method_list_link" href="#">Method List</a>
|
50
|
+
|
51
|
+
<a id="file_list_link" href="#">File List</a>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
<div class="clear"></div>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<iframe id="search_frame"></iframe>
|
58
|
+
|
59
|
+
<div id="content"><h1>Class: CodeZauker::Util
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
</h1>
|
64
|
+
|
65
|
+
<dl class="box">
|
66
|
+
|
67
|
+
<dt class="r1">Inherits:</dt>
|
68
|
+
<dd class="r1">
|
69
|
+
<span class="inheritName">Object</span>
|
70
|
+
|
71
|
+
<ul class="fullTree">
|
72
|
+
<li>Object</li>
|
73
|
+
|
74
|
+
<li class="next">CodeZauker::Util</li>
|
75
|
+
|
76
|
+
</ul>
|
77
|
+
<a href="#" class="inheritanceTree">show all</a>
|
78
|
+
|
79
|
+
</dd>
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
<dt class="r2 last">Defined in:</dt>
|
90
|
+
<dd class="r2 last">lib/code_zauker.rb</dd>
|
91
|
+
|
92
|
+
</dl>
|
93
|
+
<div class="clear"></div>
|
94
|
+
|
95
|
+
<h2>Overview</h2><div class="docstring">
|
96
|
+
<div class="discussion">
|
97
|
+
|
98
|
+
<h1>Basic utility class</h1>
|
99
|
+
|
100
|
+
|
101
|
+
</div>
|
102
|
+
</div>
|
103
|
+
<div class="tags">
|
104
|
+
|
105
|
+
|
106
|
+
</div>
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
<h2>
|
113
|
+
Instance Method Summary
|
114
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
115
|
+
</h2>
|
116
|
+
|
117
|
+
<ul class="summary">
|
118
|
+
|
119
|
+
<li class="public ">
|
120
|
+
<span class="summary_signature">
|
121
|
+
|
122
|
+
<a href="#ensureUTF8-instance_method" title="#ensureUTF8 (instance method)">- (Object) <strong>ensureUTF8</strong>(untrusted_string) </a>
|
123
|
+
|
124
|
+
|
125
|
+
|
126
|
+
</span>
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
<span class="summary_desc"><div class='inline'>
|
136
|
+
<h1>Ensure Data are correctly imported</h1>
|
137
|
+
|
138
|
+
<p><a
|
139
|
+
href="http://blog.grayproductions.net/articles/ruby_19s_string">blog.grayproductions.net/articles/ruby_19s_string</a>
|
140
|
+
This code try to "guess" the right encoding switching to ISO-8859-1 if
|
141
|
+
UTF-8 is not valid.</p>
|
142
|
+
</div></span>
|
143
|
+
|
144
|
+
</li>
|
145
|
+
|
146
|
+
|
147
|
+
<li class="public ">
|
148
|
+
<span class="summary_signature">
|
149
|
+
|
150
|
+
<a href="#mixCase-instance_method" title="#mixCase (instance method)">- (Object) <strong>mixCase</strong>(trigram) </a>
|
151
|
+
|
152
|
+
|
153
|
+
|
154
|
+
</span>
|
155
|
+
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
<span class="summary_desc"><div class='inline'>
|
164
|
+
<p>Compute all the possible case-mixed trigrams It works for every string size
|
165
|
+
TODO: Very bad implementation, need improvements.</p>
|
166
|
+
</div></span>
|
167
|
+
|
168
|
+
</li>
|
169
|
+
|
170
|
+
|
171
|
+
</ul>
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
|
176
|
+
<div id="instance_method_details" class="method_details_list">
|
177
|
+
<h2>Instance Method Details</h2>
|
178
|
+
|
179
|
+
|
180
|
+
<div class="method_details first">
|
181
|
+
<p class="signature first" id="ensureUTF8-instance_method">
|
182
|
+
|
183
|
+
- (<tt>Object</tt>) <strong>ensureUTF8</strong>(untrusted_string)
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
</p><div class="docstring">
|
188
|
+
<div class="discussion">
|
189
|
+
|
190
|
+
<h1>Ensure Data are correctly imported</h1>
|
191
|
+
|
192
|
+
<p><a
|
193
|
+
href="http://blog.grayproductions.net/articles/ruby_19s_string">blog.grayproductions.net/articles/ruby_19s_string</a>
|
194
|
+
This code try to "guess" the right encoding switching to ISO-8859-1 if
|
195
|
+
UTF-8 is not valid. Tipical use case: an italian source code wronlgy
|
196
|
+
interpreted as a UTF-8 whereas it is a ISO-8859 windows code.</p>
|
197
|
+
|
198
|
+
|
199
|
+
</div>
|
200
|
+
</div>
|
201
|
+
<div class="tags">
|
202
|
+
|
203
|
+
|
204
|
+
</div><table class="source_code">
|
205
|
+
<tr>
|
206
|
+
<td>
|
207
|
+
<pre class="lines">
|
208
|
+
|
209
|
+
|
210
|
+
56
|
211
|
+
57
|
212
|
+
58
|
213
|
+
59
|
214
|
+
60
|
215
|
+
61
|
216
|
+
62
|
217
|
+
63
|
218
|
+
64
|
219
|
+
65
|
220
|
+
66
|
221
|
+
67
|
222
|
+
68
|
223
|
+
69
|
224
|
+
70
|
225
|
+
71
|
226
|
+
72
|
227
|
+
73</pre>
|
228
|
+
</td>
|
229
|
+
<td>
|
230
|
+
<pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 56</span>
|
231
|
+
|
232
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_ensureUTF8'>ensureUTF8</span><span class='lparen'>(</span><span class='id identifier rubyid_untrusted_string'>untrusted_string</span><span class='rparen'>)</span>
|
233
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_untrusted_string'>untrusted_string</span><span class='period'>.</span><span class='id identifier rubyid_valid_encoding?'>valid_encoding?</span><span class='lparen'>(</span><span class='rparen'>)</span><span class='op'>==</span><span class='kw'>false</span>
|
234
|
+
<span class='comment'>#puts "DEBUG Trouble on #{untrusted_string}"
|
235
|
+
</span> <span class='id identifier rubyid_untrusted_string'>untrusted_string</span><span class='period'>.</span><span class='id identifier rubyid_force_encoding'>force_encoding</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>ISO-8859-1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
236
|
+
<span class='comment'># We try ISO-8859-1 tipical windows
|
237
|
+
</span> <span class='kw'>begin</span>
|
238
|
+
<span class='id identifier rubyid_valid_string'>valid_string</span><span class='op'>=</span><span class='id identifier rubyid_untrusted_string'>untrusted_string</span><span class='period'>.</span><span class='id identifier rubyid_encode'>encode</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>UTF-8</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='lbrace'>{</span> <span class='symbol'>:undef</span> <span class='op'>=></span><span class='symbol'>:replace</span><span class='comma'>,</span> <span class='symbol'>:invalid</span> <span class='op'>=></span> <span class='symbol'>:replace</span><span class='rbrace'>}</span> <span class='rparen'>)</span>
|
239
|
+
<span class='kw'>rescue</span> <span class='const'>Encoding</span><span class='op'>::</span><span class='const'>InvalidByteSequenceError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
240
|
+
<span class='id identifier rubyid_raise'>raise</span> <span class='id identifier rubyid_e'>e</span>
|
241
|
+
<span class='kw'>end</span>
|
242
|
+
<span class='comment'># if valid_string != untrusted_string
|
243
|
+
</span> <span class='comment'># puts "CONVERTED #{valid_string} Works?#{valid_string.valid_encoding?}"
|
244
|
+
</span> <span class='comment'># end
|
245
|
+
</span> <span class='kw'>return</span> <span class='id identifier rubyid_valid_string'>valid_string</span>
|
246
|
+
<span class='kw'>else</span>
|
247
|
+
<span class='kw'>return</span> <span class='id identifier rubyid_untrusted_string'>untrusted_string</span>
|
248
|
+
<span class='kw'>end</span>
|
249
|
+
<span class='kw'>end</span></pre>
|
250
|
+
</td>
|
251
|
+
</tr>
|
252
|
+
</table>
|
253
|
+
</div>
|
254
|
+
|
255
|
+
<div class="method_details ">
|
256
|
+
<p class="signature " id="mixCase-instance_method">
|
257
|
+
|
258
|
+
- (<tt>Object</tt>) <strong>mixCase</strong>(trigram)
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
</p><div class="docstring">
|
263
|
+
<div class="discussion">
|
264
|
+
|
265
|
+
<p>Compute all the possible case-mixed trigrams It works for every string size
|
266
|
+
TODO: Very bad implementation, need improvements</p>
|
267
|
+
|
268
|
+
|
269
|
+
</div>
|
270
|
+
</div>
|
271
|
+
<div class="tags">
|
272
|
+
|
273
|
+
|
274
|
+
</div><table class="source_code">
|
275
|
+
<tr>
|
276
|
+
<td>
|
277
|
+
<pre class="lines">
|
278
|
+
|
279
|
+
|
280
|
+
19
|
281
|
+
20
|
282
|
+
21
|
283
|
+
22
|
284
|
+
23
|
285
|
+
24
|
286
|
+
25
|
287
|
+
26
|
288
|
+
27
|
289
|
+
28
|
290
|
+
29
|
291
|
+
30
|
292
|
+
31
|
293
|
+
32
|
294
|
+
33
|
295
|
+
34
|
296
|
+
35
|
297
|
+
36
|
298
|
+
37
|
299
|
+
38
|
300
|
+
39
|
301
|
+
40
|
302
|
+
41
|
303
|
+
42
|
304
|
+
43
|
305
|
+
44
|
306
|
+
45
|
307
|
+
46
|
308
|
+
47
|
309
|
+
48</pre>
|
310
|
+
</td>
|
311
|
+
<td>
|
312
|
+
<pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 19</span>
|
313
|
+
|
314
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_mixCase'>mixCase</span><span class='lparen'>(</span><span class='id identifier rubyid_trigram'>trigram</span><span class='rparen'>)</span>
|
315
|
+
<span class='id identifier rubyid_caseMixedElements'>caseMixedElements</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span>
|
316
|
+
<span class='id identifier rubyid_lx'>lx</span><span class='op'>=</span><span class='id identifier rubyid_trigram'>trigram</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
|
317
|
+
<span class='id identifier rubyid_combos'>combos</span><span class='op'>=</span><span class='int'>2</span><span class='op'>**</span><span class='id identifier rubyid_lx'>lx</span>
|
318
|
+
<span class='id identifier rubyid_startString'>startString</span><span class='op'>=</span><span class='id identifier rubyid_trigram'>trigram</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span>
|
319
|
+
<span class='comment'>#puts "Combos... 1..#{combos}... #{startString}"
|
320
|
+
</span> <span class='kw'>for</span> <span class='id identifier rubyid_c'>c</span> <span class='kw'>in</span> <span class='int'>0</span><span class='op'>..</span><span class='lparen'>(</span><span class='id identifier rubyid_combos'>combos</span><span class='op'>-</span><span class='int'>1</span><span class='rparen'>)</span> <span class='kw'>do</span>
|
321
|
+
<span class='comment'># Make binary
|
322
|
+
</span> <span class='id identifier rubyid_maskForStuff'>maskForStuff</span><span class='op'>=</span><span class='id identifier rubyid_c'>c</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span>
|
323
|
+
<span class='id identifier rubyid_p'>p</span><span class='op'>=</span><span class='int'>0</span>
|
324
|
+
<span class='comment'>#puts maskForStuff
|
325
|
+
</span> <span class='id identifier rubyid_currentMix'>currentMix</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_end'>"</span></span>
|
326
|
+
<span class='comment'># Pad it
|
327
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_maskForStuff'>maskForStuff</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'><</span> <span class='id identifier rubyid_lx'>lx</span>
|
328
|
+
<span class='id identifier rubyid_maskForStuff'>maskForStuff</span> <span class='op'>=</span> <span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>0</span><span class='tstring_end'>"</span></span><span class='op'>*</span><span class='lparen'>(</span><span class='id identifier rubyid_lx'>lx</span><span class='op'>-</span><span class='id identifier rubyid_maskForStuff'>maskForStuff</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rparen'>)</span><span class='rparen'>)</span> <span class='op'>+</span><span class='id identifier rubyid_maskForStuff'>maskForStuff</span>
|
329
|
+
<span class='kw'>end</span>
|
330
|
+
<span class='id identifier rubyid_maskForStuff'>maskForStuff</span><span class='period'>.</span><span class='id identifier rubyid_each_char'>each_char</span> <span class='lbrace'>{</span> <span class='op'>|</span> <span class='id identifier rubyid_x'>x</span> <span class='op'>|</span>
|
331
|
+
<span class='comment'>#putc x
|
332
|
+
</span> <span class='kw'>if</span> <span class='id identifier rubyid_x'>x</span><span class='op'>==</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>1</span><span class='tstring_end'>"</span></span>
|
333
|
+
<span class='id identifier rubyid_currentMix'>currentMix</span> <span class='op'>+=</span><span class='id identifier rubyid_startString'>startString</span><span class='lbracket'>[</span><span class='id identifier rubyid_p'>p</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_upcase'>upcase</span>
|
334
|
+
<span class='kw'>else</span>
|
335
|
+
<span class='id identifier rubyid_currentMix'>currentMix</span> <span class='op'>+=</span><span class='id identifier rubyid_startString'>startString</span><span class='lbracket'>[</span><span class='id identifier rubyid_p'>p</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span>
|
336
|
+
<span class='kw'>end</span>
|
337
|
+
<span class='comment'>#puts currentMix
|
338
|
+
</span> <span class='id identifier rubyid_p'>p</span><span class='op'>+=</span><span class='int'>1</span>
|
339
|
+
<span class='rbrace'>}</span>
|
340
|
+
<span class='id identifier rubyid_caseMixedElements'>caseMixedElements</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='id identifier rubyid_currentMix'>currentMix</span><span class='rparen'>)</span>
|
341
|
+
<span class='kw'>end</span>
|
342
|
+
<span class='kw'>return</span> <span class='id identifier rubyid_caseMixedElements'>caseMixedElements</span>
|
343
|
+
<span class='kw'>end</span></pre>
|
344
|
+
</td>
|
345
|
+
</tr>
|
346
|
+
</table>
|
347
|
+
</div>
|
348
|
+
|
349
|
+
</div>
|
350
|
+
|
351
|
+
</div>
|
352
|
+
|
353
|
+
<div id="footer">
|
354
|
+
Generated on Fri Feb 3 17:18:43 2012 by
|
355
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
356
|
+
0.7.4 (ruby-1.9.3).
|
357
|
+
</div>
|
358
|
+
|
359
|
+
</body>
|
360
|
+
</html>
|
data/doc/Grep.html
ADDED
@@ -0,0 +1,344 @@
|
|
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: Grep
|
8
|
+
|
9
|
+
— Code Zauker 0.0.3 Documentation
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
16
|
+
|
17
|
+
<script type="text/javascript" charset="utf-8">
|
18
|
+
relpath = '';
|
19
|
+
if (relpath != '') relpath += '/';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
23
|
+
|
24
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
25
|
+
|
26
|
+
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script type="text/javascript" charset="utf-8">
|
30
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
31
|
+
</script>
|
32
|
+
|
33
|
+
<div id="header">
|
34
|
+
<div id="menu">
|
35
|
+
|
36
|
+
<a href="_index.html">Index (G)</a> »
|
37
|
+
|
38
|
+
|
39
|
+
<span class="title">Grep</span>
|
40
|
+
|
41
|
+
|
42
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
43
|
+
</div>
|
44
|
+
|
45
|
+
<div id="search">
|
46
|
+
|
47
|
+
<a id="class_list_link" href="#">Class List</a>
|
48
|
+
|
49
|
+
<a id="method_list_link" href="#">Method List</a>
|
50
|
+
|
51
|
+
<a id="file_list_link" href="#">File List</a>
|
52
|
+
|
53
|
+
</div>
|
54
|
+
<div class="clear"></div>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<iframe id="search_frame"></iframe>
|
58
|
+
|
59
|
+
<div id="content"><h1>Module: Grep
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
</h1>
|
64
|
+
|
65
|
+
<dl class="box">
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
<dt class="r1 last">Defined in:</dt>
|
75
|
+
<dd class="r1 last">lib/code_zauker/grep.rb</dd>
|
76
|
+
|
77
|
+
</dl>
|
78
|
+
<div class="clear"></div>
|
79
|
+
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
|
86
|
+
<h2>
|
87
|
+
Instance Method Summary
|
88
|
+
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
|
89
|
+
</h2>
|
90
|
+
|
91
|
+
<ul class="summary">
|
92
|
+
|
93
|
+
<li class="public ">
|
94
|
+
<span class="summary_signature">
|
95
|
+
|
96
|
+
<a href="#grep-instance_method" title="#grep (instance method)">- (Object) <strong>grep</strong>(file, pattern, pre_context = 0, post_context = 0, print_filename = true) </a>
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
</span>
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
<span class="summary_desc"><div class='inline'>
|
110
|
+
<p>Grep works like a shell grep.</p>
|
111
|
+
</div></span>
|
112
|
+
|
113
|
+
</li>
|
114
|
+
|
115
|
+
|
116
|
+
</ul>
|
117
|
+
|
118
|
+
|
119
|
+
|
120
|
+
|
121
|
+
<div id="instance_method_details" class="method_details_list">
|
122
|
+
<h2>Instance Method Details</h2>
|
123
|
+
|
124
|
+
|
125
|
+
<div class="method_details first">
|
126
|
+
<p class="signature first" id="grep-instance_method">
|
127
|
+
|
128
|
+
- (<tt>Object</tt>) <strong>grep</strong>(file, pattern, pre_context = 0, post_context = 0, print_filename = true)
|
129
|
+
|
130
|
+
|
131
|
+
|
132
|
+
</p><div class="docstring">
|
133
|
+
<div class="discussion">
|
134
|
+
|
135
|
+
<p>Grep works like a shell grep. `file' can be either a string, containing the
|
136
|
+
name of a file to load and handle, or an IO object (such as $stdin) to deal
|
137
|
+
with. `pattern' can be either a string or Regexp object which contains a
|
138
|
+
pattern. Patterns as strings treat no part of the string as `special', such
|
139
|
+
as '.' or '?' in a regex. `pre_context' and `post_context' determine the
|
140
|
+
amount of lines to return that came before or after the content that was
|
141
|
+
matched, respectively. If there are overlaps in the context, no duplicates
|
142
|
+
will be printed.</p>
|
143
|
+
|
144
|
+
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
<div class="tags">
|
148
|
+
|
149
|
+
|
150
|
+
</div><table class="source_code">
|
151
|
+
<tr>
|
152
|
+
<td>
|
153
|
+
<pre class="lines">
|
154
|
+
|
155
|
+
|
156
|
+
58
|
157
|
+
59
|
158
|
+
60
|
159
|
+
61
|
160
|
+
62
|
161
|
+
63
|
162
|
+
64
|
163
|
+
65
|
164
|
+
66
|
165
|
+
67
|
166
|
+
68
|
167
|
+
69
|
168
|
+
70
|
169
|
+
71
|
170
|
+
72
|
171
|
+
73
|
172
|
+
74
|
173
|
+
75
|
174
|
+
76
|
175
|
+
77
|
176
|
+
78
|
177
|
+
79
|
178
|
+
80
|
179
|
+
81
|
180
|
+
82
|
181
|
+
83
|
182
|
+
84
|
183
|
+
85
|
184
|
+
86
|
185
|
+
87
|
186
|
+
88
|
187
|
+
89
|
188
|
+
90
|
189
|
+
91
|
190
|
+
92
|
191
|
+
93
|
192
|
+
94
|
193
|
+
95
|
194
|
+
96
|
195
|
+
97
|
196
|
+
98
|
197
|
+
99
|
198
|
+
100
|
199
|
+
101
|
200
|
+
102
|
201
|
+
103
|
202
|
+
104
|
203
|
+
105
|
204
|
+
106
|
205
|
+
107
|
206
|
+
108
|
207
|
+
109
|
208
|
+
110
|
209
|
+
111
|
210
|
+
112
|
211
|
+
113
|
212
|
+
114
|
213
|
+
115
|
214
|
+
116
|
215
|
+
117
|
216
|
+
118
|
217
|
+
119
|
218
|
+
120
|
219
|
+
121
|
220
|
+
122
|
221
|
+
123
|
222
|
+
124
|
223
|
+
125
|
224
|
+
126
|
225
|
+
127
|
226
|
+
128
|
227
|
+
129
|
228
|
+
130
|
229
|
+
131
|
230
|
+
132
|
231
|
+
133
|
232
|
+
134
|
233
|
+
135
|
234
|
+
136
|
235
|
+
137
|
236
|
+
138
|
237
|
+
139
|
238
|
+
140
|
239
|
+
141</pre>
|
240
|
+
</td>
|
241
|
+
<td>
|
242
|
+
<pre class="code"><span class="info file"># File 'lib/code_zauker/grep.rb', line 58</span>
|
243
|
+
|
244
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_grep'>grep</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_pre_context'>pre_context</span><span class='op'>=</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_post_context'>post_context</span><span class='op'>=</span><span class='int'>0</span><span class='comma'>,</span> <span class='id identifier rubyid_print_filename'>print_filename</span><span class='op'>=</span><span class='kw'>true</span><span class='rparen'>)</span>
|
245
|
+
<span class='id identifier rubyid_currentline'>currentline</span><span class='op'>=</span><span class='int'>0</span>
|
246
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>String</span>
|
247
|
+
<span class='id identifier rubyid_fileName'>fileName</span><span class='op'>=</span><span class='id identifier rubyid_file'>file</span>
|
248
|
+
<span class='id identifier rubyid_file'>file</span> <span class='op'>=</span> <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>r</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
249
|
+
<span class='kw'>else</span>
|
250
|
+
<span class='id identifier rubyid_fileName'>fileName</span><span class='op'>=</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_end'>"</span></span>
|
251
|
+
<span class='kw'>end</span>
|
252
|
+
|
253
|
+
<span class='kw'>if</span> <span class='op'>!</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>IO</span>
|
254
|
+
<span class='id identifier rubyid_throw'>throw</span> <span class='const'>IOError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>File must be the name of an existing file or IO object</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
255
|
+
<span class='kw'>end</span>
|
256
|
+
|
257
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>String</span>
|
258
|
+
<span class='id identifier rubyid_pattern'>pattern</span> <span class='op'>=</span> <span class='tstring'><span class='regexp_beg'>/</span><span class='embexpr_beg'>#{</span><span class='const'>Regexp</span><span class='period'>.</span><span class='id identifier rubyid_escape'>escape</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='rparen'>)</span><span class='rbrace'>}</span><span class='regexp_end'>/</span></span>
|
259
|
+
<span class='kw'>end</span>
|
260
|
+
|
261
|
+
<span class='kw'>if</span> <span class='op'>!</span> <span class='id identifier rubyid_pattern'>pattern</span><span class='period'>.</span><span class='id identifier rubyid_kind_of?'>kind_of?</span> <span class='const'>Regexp</span>
|
262
|
+
<span class='id identifier rubyid_throw'>throw</span> <span class='const'>StandardError</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Pattern must be string or regexp</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
263
|
+
<span class='kw'>end</span>
|
264
|
+
|
265
|
+
<span class='id identifier rubyid_cache'>cache</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
266
|
+
<span class='id identifier rubyid_lines'>lines</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
267
|
+
|
268
|
+
<span class='id identifier rubyid_util'>util</span><span class='op'>=</span><span class='const'>CodeZauker</span><span class='op'>::</span><span class='const'>Util</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='rparen'>)</span>
|
269
|
+
|
270
|
+
<span class='id identifier rubyid_loop'>loop</span> <span class='kw'>do</span>
|
271
|
+
<span class='kw'>begin</span>
|
272
|
+
<span class='id identifier rubyid_line'>line</span> <span class='op'>=</span> <span class='id identifier rubyid_util'>util</span><span class='period'>.</span><span class='id identifier rubyid_ensureUTF8'>ensureUTF8</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_readline'>readline</span><span class='rparen'>)</span>
|
273
|
+
|
274
|
+
<span class='id identifier rubyid_currentline'>currentline</span> <span class='op'>+=</span><span class='int'>1</span>
|
275
|
+
<span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span> <span class='kw'>unless</span> <span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'><</span> <span class='id identifier rubyid_pre_context'>pre_context</span>
|
276
|
+
|
277
|
+
<span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currentline'>currentline</span><span class='rbrace'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_line'>line</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
278
|
+
|
279
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_line'>line</span> <span class='op'>=~</span> <span class='id identifier rubyid_pattern'>pattern</span>
|
280
|
+
<span class='id identifier rubyid_lines'>lines</span> <span class='op'>+=</span> <span class='id identifier rubyid_cache'>cache</span>
|
281
|
+
<span class='id identifier rubyid_cache'>cache</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
282
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_post_context'>post_context</span> <span class='op'>></span> <span class='int'>0</span>
|
283
|
+
<span class='id identifier rubyid_post_context'>post_context</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span>
|
284
|
+
<span class='kw'>begin</span>
|
285
|
+
<span class='id identifier rubyid_utf8line'>utf8line</span><span class='op'>=</span><span class='id identifier rubyid_util'>util</span><span class='period'>.</span><span class='id identifier rubyid_ensureUTF8'>ensureUTF8</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_readline'>readline</span><span class='rparen'>)</span>
|
286
|
+
<span class='id identifier rubyid_lines'>lines</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currentline'>currentline</span><span class='rbrace'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_utf8line'>utf8line</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
287
|
+
<span class='id identifier rubyid_currentline'>currentline</span> <span class='op'>+=</span><span class='int'>1</span>
|
288
|
+
<span class='kw'>rescue</span> <span class='const'>IOError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
289
|
+
<span class='kw'>break</span>
|
290
|
+
<span class='kw'>end</span>
|
291
|
+
<span class='kw'>end</span>
|
292
|
+
<span class='kw'>end</span>
|
293
|
+
<span class='kw'>end</span>
|
294
|
+
<span class='kw'>rescue</span> <span class='const'>IOError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
295
|
+
<span class='kw'>break</span>
|
296
|
+
<span class='kw'>rescue</span> <span class='const'>ArgumentError</span> <span class='op'>=></span><span class='id identifier rubyid_e2'>e2</span>
|
297
|
+
<span class='comment'># Rethrow a probably UTF-8 fatal error
|
298
|
+
</span> <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Pattern Matching failed on \n\t</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileName'>fileName</span><span class='rbrace'>}</span><span class='tstring_content'>\n\tLine:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_line'>line</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span>
|
299
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Encoding of line:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_line'>line</span><span class='period'>.</span><span class='id identifier rubyid_encoding'>encoding</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='rbrace'>}</span><span class='tstring_content'> Valid? </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_line'>line</span><span class='period'>.</span><span class='id identifier rubyid_valid_encoding?'>valid_encoding?</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span>
|
300
|
+
<span class='comment'>#raise e2
|
301
|
+
</span> <span class='kw'>end</span>
|
302
|
+
<span class='kw'>end</span>
|
303
|
+
|
304
|
+
|
305
|
+
<span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_each_line'>each_line</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_untrustedLine'>untrustedLine</span><span class='op'>|</span>
|
306
|
+
<span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span> <span class='kw'>unless</span> <span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'><</span> <span class='id identifier rubyid_pre_context'>pre_context</span>
|
307
|
+
<span class='id identifier rubyid_line'>line</span><span class='op'>=</span><span class='id identifier rubyid_util'>util</span><span class='period'>.</span><span class='id identifier rubyid_ensureUTF8'>ensureUTF8</span><span class='lparen'>(</span><span class='id identifier rubyid_untrustedLine'>untrustedLine</span><span class='rparen'>)</span>
|
308
|
+
<span class='id identifier rubyid_cache'>cache</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='id identifier rubyid_line'>line</span><span class='rparen'>)</span>
|
309
|
+
|
310
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_line'>line</span> <span class='op'>=~</span> <span class='id identifier rubyid_pattern'>pattern</span>
|
311
|
+
<span class='id identifier rubyid_lines'>lines</span> <span class='op'>+=</span> <span class='id identifier rubyid_cache'>cache</span>
|
312
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_post_context'>post_context</span> <span class='op'>></span> <span class='int'>0</span>
|
313
|
+
<span class='id identifier rubyid_post_context'>post_context</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span>
|
314
|
+
<span class='kw'>begin</span>
|
315
|
+
<span class='id identifier rubyid_utf8line'>utf8line</span><span class='op'>=</span><span class='id identifier rubyid_util'>util</span><span class='period'>.</span><span class='id identifier rubyid_ensureUTF8'>ensureUTF8</span><span class='lparen'>(</span><span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_readline'>readline</span><span class='rparen'>)</span>
|
316
|
+
<span class='id identifier rubyid_lines'>lines</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currentline'>currentline</span><span class='rbrace'>}</span><span class='tstring_content'>:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_utf8line'>utf8line</span><span class='rbrace'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
317
|
+
<span class='id identifier rubyid_currentline'>currentline</span> <span class='op'>+=</span><span class='int'>1</span>
|
318
|
+
<span class='kw'>rescue</span> <span class='const'>Exception</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
319
|
+
<span class='kw'>break</span>
|
320
|
+
<span class='kw'>end</span>
|
321
|
+
<span class='kw'>end</span>
|
322
|
+
<span class='kw'>end</span>
|
323
|
+
<span class='kw'>end</span>
|
324
|
+
<span class='kw'>end</span>
|
325
|
+
|
326
|
+
<span class='kw'>return</span> <span class='id identifier rubyid_lines'>lines</span>
|
327
|
+
<span class='kw'>end</span></pre>
|
328
|
+
</td>
|
329
|
+
</tr>
|
330
|
+
</table>
|
331
|
+
</div>
|
332
|
+
|
333
|
+
</div>
|
334
|
+
|
335
|
+
</div>
|
336
|
+
|
337
|
+
<div id="footer">
|
338
|
+
Generated on Fri Feb 3 17:18:44 2012 by
|
339
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
340
|
+
0.7.4 (ruby-1.9.3).
|
341
|
+
</div>
|
342
|
+
|
343
|
+
</body>
|
344
|
+
</html>
|