code_zauker 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 ; mode: ruby; -*-
2
+ # rvm use default will save your days
2
3
  require "bundler/gem_tasks"
3
4
 
4
5
  # See http://jasonseifer.com/2010/04/06/rake-tutorial
@@ -19,8 +20,16 @@ YARD::Rake::YardocTask.new do |t|
19
20
  #t.options = ['--any', '--extra', '--opts'] # optional
20
21
  end
21
22
 
22
- desc "Code Zauker default task for generating doucmentation, running tests and packing gem"
23
- task :default => [ :test, :yard, :build] do
23
+ desc "Code Zauker default task for generating documentation, running tests and packing gem"
24
+ task :default => [ :test, :yard] do
25
+ puts "Generating git Changelog..."
26
+ system('git log --pretty="|%ad|%s|" --date=short >CHANGELOG.org')
27
+ system('git status')
28
+ puts "Use cz_publish to release your work, Meganiod!"
29
+ puts " Koros"
24
30
  end
25
31
 
26
32
 
33
+ desc "Code Zauker Publisher"
34
+ task :cz_publish => [ :test, :yard, :build, :release] do
35
+ end
data/bin/czindexer CHANGED
@@ -5,7 +5,7 @@
5
5
  require 'optparse'
6
6
  options={}
7
7
  optparse= OptionParser.new do |opts|
8
- opts.banner="Usage: $0 [options] [file1] [file2]..."
8
+ opts.banner="Usage: czindexer [options] [file1] [file2]..."
9
9
  options[:verbose] = false
10
10
 
11
11
  opts.on( '-v', '--verbose', 'Output more information' ) do
@@ -18,8 +18,8 @@ optparse= OptionParser.new do |opts|
18
18
  end
19
19
 
20
20
  opts.on( '-h', '--help', 'Display this screen' ) do
21
- puts opts
22
- exit
21
+ puts opts
22
+ exit
23
23
  end
24
24
 
25
25
  #TODO ADD REMOVE ALL option
@@ -30,59 +30,66 @@ optparse.parse!
30
30
  require 'code_zauker'
31
31
 
32
32
 
33
- def processElement(l,fs,options)
33
+ def processElement(l,fs,options)
34
34
  #Remove trailing / from l before proceeding
35
- if l[-1]=="/"
36
- l=l.chop
37
- end
38
- if Dir.exists?(l)
39
- puts "Processing Dir #{l}" if options[:verbose]
40
- Dir["#{l}/*"].each do |elem|
41
- processElement(elem,fs,options)
42
- end
43
- # puts "Processing via find+xargs" if options[:verbose]
44
- # if options[:reindex]==false
45
- # system("find #{l} -type f -print0 | xargs -0 -P 7 -n 5 #{$0}")
46
- # else
47
- # system("find #{l} -type f -print0 | xargs -0 -P 7 -n 5 #{$0} -f ")
48
- # end
49
- else
50
- # avoid processing bad guys...
51
- toExclude=false
52
- CodeZauker::DEFAULT_EXCLUDED_EXTENSION.each do | ext |
53
- if l.end_with?(ext)
54
- toExclude=true
55
- break
56
- end
35
+ if l[-1]=="/"
36
+ l=l.chop
37
+ end
38
+ if Dir.exists?(l)
39
+ #puts "Processing Dir #{l}" if options[:verbose]
40
+ Dir["#{l}/*"].each do |elem|
41
+ processElement(elem,fs,options)
42
+ end
43
+ # puts "Processing via find+xargs" if options[:verbose]
44
+ # if options[:reindex]==false
45
+ # system("find #{l} -type f -print0 | xargs -0 -P 7 -n 5 #{$0}")
46
+ # else
47
+ # system("find #{l} -type f -print0 | xargs -0 -P 7 -n 5 #{$0} -f ")
48
+ # end
49
+ else
50
+ # avoid processing bad guys...
51
+ toExclude=false
52
+ CodeZauker::DEFAULT_EXCLUDED_EXTENSION.each do | ext |
53
+ if l.downcase().end_with?(ext)
54
+ toExclude=true
55
+ break
57
56
  end
58
- if !toExclude && !l.include?("/.hg/") && !l.include?("/CVS/") && !l.include?("/.svn/") && !l.include?("/.git/")
59
- #puts "Meganoids indexing #{l}"
60
- puts "Processing File #{l}" if options[:verbose]
61
- if options[:reindex] == true
62
- fs.reindex([l])
63
- else
64
- fs.load(l,noReload=true)
65
- end
66
- $PROCESSED_FILES+=1
57
+ end
58
+ if !toExclude && !l.include?("/.hg/") && !l.include?("/CVS/") && !l.include?("/.svn/") && !l.include?("/.git/")
59
+ #puts "Processing File #{l}" if options[:verbose]
60
+ startTime=Time.now
61
+ if options[:reindex] == true
62
+ fs.reindex([l])
67
63
  else
68
- puts "SKIPPED binary file: #{l}" if options[:verbose]
64
+ fs.load(l,noReload=true)
69
65
  end
70
- if options[:verbose]
71
- puts "czindexer: processed #{$PROCESSED_FILES} by this instance"
66
+ timeTaken=Time.now-startTime
67
+ $PROCESSED_FILES+=1
68
+ $CUMULATED_TIME +=timeTaken
69
+ $FILES_PER_SEC= $PROCESSED_FILES/$CUMULATED_TIME
70
+ if options[:verbose] and (( $PROCESSED_FILES % 75 ) == 0 )
71
+ puts "#{$PROCESSED_FILES} files processed so far... Files per sec:#{$FILES_PER_SEC} Last:#{timeTaken}"
72
72
  end
73
- end
73
+ else
74
+ #puts "SKIPPED binary file: #{l}" if options[:verbose]
75
+ end
76
+
77
+ end
74
78
  end
75
79
 
76
80
 
77
81
 
78
82
  begin
83
+ $CUMULATED_TIME=0
79
84
  # Allocated here to recycle connection
80
85
  fs=CodeZauker::FileScanner.new()
81
86
  $PROCESSED_FILES=0
87
+ puts "Code Zauker v#{CodeZauker::VERSION}" if options[:verbose]
82
88
  puts "Reindexing..." if options[:verbose]==true and options[:reindex]==true
83
89
  ARGV.each do | l |
84
90
  processElement(l,fs,options)
85
91
  end
86
92
  ensure
87
93
  fs.disconnect
94
+ puts "End:#{$PROCESSED_FILES} files Files per sec:#{$FILES_PER_SEC}"
88
95
  end
data/bin/czsearch CHANGED
@@ -6,14 +6,95 @@ require 'code_zauker'
6
6
  require 'code_zauker/grep'
7
7
  include Grep
8
8
 
9
+ require 'optparse'
10
+ options={}
11
+ optparse= OptionParser.new do |opts|
12
+ opts.banner="Usage: czsearch [options] [term1] [term2]..."
13
+ options[:ignorecase]=false
14
+ options[:precontext]=0
15
+ options[:postcontext]=0
16
+ options[:extensions_to_ignore]=[]
17
+ options[:file_to_exclude]=[]
18
+
19
+ opts.on('-i', '--ignore-case','ignore case distinctions') do
20
+ options[:ignorecase]=true
21
+ end
22
+
23
+ opts.on('-B', '--before-context NUM', Integer, 'print NUM lines of leading context') do | c |
24
+ options[:precontext]=c
25
+ end
26
+
27
+ opts.on('-A','--after-context NUM',Integer,'print NUM lines of trailing context') do | c |
28
+ options[:postcontext]=c
29
+ end
30
+ opts.on('-C','--context NUM',Integer,'print NUM lines of output context') do | c |
31
+ if c>0
32
+ options[:postcontext]=c
33
+ options[:precontext]=options[:postcontext]
34
+ end
35
+ end
36
+
37
+
38
+
39
+ opts.on('-X','--exclude FILE_PATTERN',String,
40
+ 'Exclude files that match FILE_PATTERN (as ruby regexp). Case insensitive') do |p|
41
+ options[:file_to_exclude].push(/#{Regexp.escape(p)}/i);
42
+ end
43
+
44
+
45
+
46
+
47
+ opts.on( '-h', '--help', 'Display this screen' ) do
48
+ puts opts
49
+ puts "Options are grep-like"
50
+ puts "EXAMPLES:"
51
+ puts "czsearch ciao Koros"
52
+ puts " Will search Koros OR ciao"
53
+ puts "czsearch -i gnu"
54
+ puts " Will match also GNU and Gnu"
55
+ puts "czsearch -X .orig -X .bak -X .java html:select"
56
+ puts " Will skip java and backup file"
57
+ exit
58
+ end
59
+ end
60
+ optparse.parse!
61
+
9
62
  ARGV.each do | s |
10
63
  #puts "Code Zauker Searching for #{s}"
11
64
  fs=CodeZauker::FileScanner.new()
12
- files=fs.search(s)
65
+ if options[:ignorecase]==false
66
+ files=fs.search(s)
67
+ pattern=/#{Regexp.escape(s)}/
68
+ else
69
+ files=fs.isearch(s)
70
+ pattern=/#{Regexp.escape(s)}/i
71
+ end
13
72
  files.each do |f|
14
- lines=grep(f,s);
15
- lines.each do |l |
16
- puts "#{f}:#{l}"
73
+ to_exclude=false
74
+ if options[:file_to_exclude].length >0
75
+ # Will match?
76
+ to_exclude=false
77
+ options[:file_to_exclude].each do |pattern|
78
+ #puts "\n\t#{f} =~ #{pattern}"
79
+ if (f =~ pattern )
80
+ to_exclude=true
81
+ #puts "Excluded #{f}"
82
+ break
83
+ end
84
+ end
85
+ end
86
+ if !to_exclude
87
+ begin
88
+ lines=grep(f,pattern, pre_context=options[:precontext], post_context=options[:postcontext]);
89
+ lines.each do |l |
90
+ puts "#{f}:#{l}"
91
+ end
92
+ rescue ArgumentError => ioe
93
+ puts "FATAL ArgumentError on #{f}"
94
+ raise ioe
95
+ end
96
+ else
97
+
17
98
  end
18
99
  end
19
100
  end
data/code_zauker.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
24
24
 
25
25
  s.add_runtime_dependency "hiredis", "~> 0.3"
26
26
  s.add_runtime_dependency "redis", "~> 2.2"
27
+ s.add_runtime_dependency "rubyzip", "~> 0.9"
27
28
 
28
29
  ## Install and require the hiredis gem before redis-rb for maximum performances.
29
30
  #s.add_runtime_dependency "redis", "~> 2.2", :require => ["redis/connection/hiredis", "redis"]
data/doc/CodeZauker.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Module: CodeZauker
8
8
 
9
- &mdash; Code Zauker 0.0.2 Documentation
9
+ &mdash; Code Zauker 0.0.3 Documentation
10
10
 
11
11
  </title>
12
12
 
@@ -98,7 +98,7 @@ href="http://swtch.com/~rsc/regexp/regexp4.html">swtch.com/~rsc/regexp/regexp4.h
98
98
 
99
99
 
100
100
 
101
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="CodeZauker/FileScanner.html" title="CodeZauker::FileScanner (class)">FileScanner</a></span>
101
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="CodeZauker/FileScanner.html" title="CodeZauker::FileScanner (class)">FileScanner</a></span>, <span class='object_link'><a href="CodeZauker/Util.html" title="CodeZauker::Util (class)">Util</a></span>
102
102
 
103
103
 
104
104
  </p>
@@ -120,28 +120,57 @@ href="http://swtch.com/~rsc/regexp/regexp4.html">swtch.com/~rsc/regexp/regexp4.h
120
120
  <dt id="VERSION-constant" class="">VERSION =
121
121
 
122
122
  </dt>
123
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0.2</span><span class='tstring_end'>&quot;</span></span></pre></dd>
123
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.0.3</span><span class='tstring_end'>&quot;</span></span></pre></dd>
124
+
125
+ <dt id="MAX_PUSH_TRIGRAM_RETRIES-constant" class="">MAX_PUSH_TRIGRAM_RETRIES =
126
+
127
+ </dt>
128
+ <dd><pre class="code"><span class='int'>3</span></pre></dd>
129
+
130
+ <dt id="TRIGRAM_DEFAULT_PUSH_SIZE-constant" class="">TRIGRAM_DEFAULT_PUSH_SIZE =
131
+ <div class="docstring">
132
+ <div class="discussion">
133
+
134
+ <p>Stats It is difficult to decide what is the best trigram push size. a
135
+ larger one ensure a best in memory processing but can lead to longer
136
+ transactions 6000 Ehuristic value used for historical reasons</p>
137
+
138
+
139
+ </div>
140
+ </div>
141
+ <div class="tags">
142
+
143
+
144
+ </div>
145
+ </dt>
146
+ <dd><pre class="code"><span class='int'>6000</span></pre></dd>
124
147
 
125
148
  <dt id="DEFAULT_EXCLUDED_EXTENSION-constant" class="">DEFAULT_EXCLUDED_EXTENSION =
126
149
 
127
150
  </dt>
128
151
  <dd><pre class="code"><span class='lbracket'>[</span>
129
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.pdf</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
152
+ <span class='comment'># Documents
153
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.pdf</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
130
154
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.xps</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
131
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.zip</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
132
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.ppt</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'>.xls</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'>.rtf</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'>.vsd</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
133
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.dll</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'>.exe</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'>.out</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'>.elf</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'>.lib</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'>.so</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
134
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.jar</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'>.class</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
155
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.zip</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'>.7z</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
156
+ <span class='comment'># MS Office zip-like files...
157
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.pptx</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'>.docx</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'>.xlsx</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
158
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.ppt</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'>.xls</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'>.rtf</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'>.vsd</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'>.odf</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
159
+ <span class='comment'># Binary bad stuff
160
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.dll</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'>.exe</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'>.out</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'>.elf</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'>.lib</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'>.so</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
161
+ <span class='comment'># Redis db
162
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.rdb</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
163
+ <span class='comment'># Ruby and java stuff-like
164
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.gem</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
165
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.jar</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'>.class</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'>.ear</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'>.war</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
135
166
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.tar</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
136
167
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.gz</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
137
168
  <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.dropbox</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
138
- <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.svn-base</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'>.pdb</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'>.cache</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
139
- <span class='comment'># MS Office zip-like files...
140
- </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.pptx</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'>.docx</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'>.xlsx</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
169
+ <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.svn-base</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'>.pdb</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'>.cache</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
141
170
  <span class='comment'># Music exclusion
142
171
  </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.mp3</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'>.mp4</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'>.wav</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
143
172
  <span class='comment'># Image exclusion
144
- </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.png</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'>.gif</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
173
+ </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.png</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'>.gif</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'>.jpg</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'>.bmp</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
145
174
  <span class='comment'># Temp stuff
146
175
  </span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>.tmp</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='comma'>,</span>
147
176
  <span class='comment'># Oracle exports...
@@ -160,7 +189,7 @@ href="http://swtch.com/~rsc/regexp/regexp4.html">swtch.com/~rsc/regexp/regexp4.h
160
189
  </div>
161
190
 
162
191
  <div id="footer">
163
- Generated on Fri Jan 27 14:54:06 2012 by
192
+ Generated on Fri Feb 3 17:18:43 2012 by
164
193
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
165
194
  0.7.4 (ruby-1.9.3).
166
195
  </div>
@@ -6,7 +6,7 @@
6
6
  <title>
7
7
  Class: CodeZauker::FileScanner
8
8
 
9
- &mdash; Code Zauker 0.0.2 Documentation
9
+ &mdash; Code Zauker 0.0.3 Documentation
10
10
 
11
11
  </title>
12
12
 
@@ -160,6 +160,31 @@ find file scontaining the trigram...</p>
160
160
  <p>A new instance of FileScanner.</p>
161
161
  </div></span>
162
162
 
163
+ </li>
164
+
165
+
166
+ <li class="public ">
167
+ <span class="summary_signature">
168
+
169
+ <a href="#isearch-instance_method" title="#isearch (instance method)">- (Object) <strong>isearch</strong>(term) </a>
170
+
171
+
172
+
173
+ </span>
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+ <span class="summary_desc"><div class='inline'>
183
+ <h1>Do a case-insenitive search </h1>
184
+
185
+ <p>using the special set of trigrams "trigram:ci:*" all downcase.</p>
186
+ </div></span>
187
+
163
188
  </li>
164
189
 
165
190
 
@@ -179,6 +204,48 @@ find file scontaining the trigram...</p>
179
204
 
180
205
 
181
206
 
207
+ <span class="summary_desc"><div class='inline'></div></span>
208
+
209
+ </li>
210
+
211
+
212
+ <li class="public ">
213
+ <span class="summary_signature">
214
+
215
+ <a href="#map_ids_to_files-instance_method" title="#map_ids_to_files (instance method)">- (Object) <strong>map_ids_to_files</strong>(fileIds) </a>
216
+
217
+
218
+
219
+ </span>
220
+
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+ <span class="summary_desc"><div class='inline'></div></span>
229
+
230
+ </li>
231
+
232
+
233
+ <li class="public ">
234
+ <span class="summary_signature">
235
+
236
+ <a href="#reindex-instance_method" title="#reindex (instance method)">- (Object) <strong>reindex</strong>(fileList) </a>
237
+
238
+
239
+
240
+ </span>
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
182
249
  <span class="summary_desc"><div class='inline'></div></span>
183
250
 
184
251
  </li>
@@ -286,16 +353,16 @@ padded into trigrams.</p>
286
353
  <pre class="lines">
287
354
 
288
355
 
289
- 16
290
- 17
291
- 18
292
- 19
293
- 20
294
- 21
295
- 22</pre>
356
+ 80
357
+ 81
358
+ 82
359
+ 83
360
+ 84
361
+ 85
362
+ 86</pre>
296
363
  </td>
297
364
  <td>
298
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 16</span>
365
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 80</span>
299
366
 
300
367
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_redisConnection'>redisConnection</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
301
368
  <span class='kw'>if</span> <span class='id identifier rubyid_redisConnection'>redisConnection</span><span class='op'>==</span><span class='kw'>nil</span>
@@ -329,19 +396,72 @@ padded into trigrams.</p>
329
396
  <pre class="lines">
330
397
 
331
398
 
332
- 23
333
- 24
334
- 25</pre>
399
+ 89
400
+ 90
401
+ 91</pre>
335
402
  </td>
336
403
  <td>
337
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 23</span>
404
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 89</span>
338
405
 
339
- <span class='kw'>def</span> <span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='rparen'>)</span>
406
+ <span class='kw'>def</span> <span class='id identifier rubyid_disconnect'>disconnect</span><span class='lparen'>(</span><span class='rparen'>)</span>
340
407
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_quit'>quit</span>
341
408
  <span class='kw'>end</span></pre>
342
409
  </td>
343
410
  </tr>
344
411
  </table>
412
+ </div>
413
+
414
+ <div class="method_details ">
415
+ <p class="signature " id="isearch-instance_method">
416
+
417
+ - (<tt>Object</tt>) <strong>isearch</strong>(term)
418
+
419
+
420
+
421
+ </p><div class="docstring">
422
+ <div class="discussion">
423
+
424
+ <h1>Do a case-insenitive search </h1>
425
+
426
+ <p>using the special set of trigrams "trigram:ci:*" all downcase</p>
427
+
428
+
429
+ </div>
430
+ </div>
431
+ <div class="tags">
432
+
433
+
434
+ </div><table class="source_code">
435
+ <tr>
436
+ <td>
437
+ <pre class="lines">
438
+
439
+
440
+ 246
441
+ 247
442
+ 248
443
+ 249
444
+ 250
445
+ 251
446
+ 252
447
+ 253
448
+ 254</pre>
449
+ </td>
450
+ <td>
451
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 246</span>
452
+
453
+ <span class='kw'>def</span> <span class='id identifier rubyid_isearch'>isearch</span><span class='lparen'>(</span><span class='id identifier rubyid_term'>term</span><span class='rparen'>)</span>
454
+ <span class='id identifier rubyid_termLowercase'>termLowercase</span><span class='op'>=</span><span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='lparen'>(</span><span class='rparen'>)</span>
455
+ <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='op'>=</span><span class='id identifier rubyid_split_in_trigrams'>split_in_trigrams</span><span class='lparen'>(</span><span class='id identifier rubyid_termLowercase'>termLowercase</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram:ci</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
456
+ <span class='kw'>if</span> <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>==</span><span class='int'>0</span>
457
+ <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
458
+ <span class='kw'>end</span>
459
+ <span class='id identifier rubyid_fileIds'>fileIds</span><span class='op'>=</span> <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_sinter'>sinter</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='rparen'>)</span>
460
+ <span class='kw'>return</span> <span class='id identifier rubyid_map_ids_to_files'>map_ids_to_files</span><span class='lparen'>(</span><span class='id identifier rubyid_fileIds'>fileIds</span><span class='rparen'>)</span>
461
+ <span class='kw'>end</span></pre>
462
+ </td>
463
+ </tr>
464
+ </table>
345
465
  </div>
346
466
 
347
467
  <div class="method_details ">
@@ -357,72 +477,74 @@ padded into trigrams.</p>
357
477
  <pre class="lines">
358
478
 
359
479
 
360
- 52
361
- 53
362
- 54
363
- 55
364
- 56
365
- 57
366
- 58
367
- 59
368
- 60
369
- 61
370
- 62
371
- 63
372
- 64
373
- 65
374
- 66
375
- 67
376
- 68
377
- 69
378
- 70
379
- 71
380
- 72
381
- 73
382
- 74
383
- 75
384
- 76
385
- 77
386
- 78
387
- 79
388
- 80
389
- 81
390
- 82
391
- 83
392
- 84
393
- 85
394
- 86
395
- 87
396
- 88
397
- 89
398
- 90
399
- 91
400
- 92
401
- 93
402
- 94
403
- 95
404
- 96
405
- 97
406
- 98
407
- 99
408
- 100
409
- 101
410
- 102
411
- 103
412
- 104
413
- 105
414
- 106
415
- 107
416
- 108
417
- 109
418
- 110
419
- 111
420
- 112
421
- 113
422
- 114</pre>
480
+ 148
481
+ 149
482
+ 150
483
+ 151
484
+ 152
485
+ 153
486
+ 154
487
+ 155
488
+ 156
489
+ 157
490
+ 158
491
+ 159
492
+ 160
493
+ 161
494
+ 162
495
+ 163
496
+ 164
497
+ 165
498
+ 166
499
+ 167
500
+ 168
501
+ 169
502
+ 170
503
+ 171
504
+ 172
505
+ 173
506
+ 174
507
+ 175
508
+ 176
509
+ 177
510
+ 178
511
+ 179
512
+ 180
513
+ 181
514
+ 182
515
+ 183
516
+ 184
517
+ 185
518
+ 186
519
+ 187
520
+ 188
521
+ 189
522
+ 190
523
+ 191
524
+ 192
525
+ 193
526
+ 194
527
+ 195
528
+ 196
529
+ 197
530
+ 198
531
+ 199
532
+ 200
533
+ 201
534
+ 202
535
+ 203
536
+ 204
537
+ 205
538
+ 206
539
+ 207
540
+ 208
541
+ 209
542
+ 210
543
+ 211
544
+ 212</pre>
423
545
  </td>
424
546
  <td>
425
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 52</span>
547
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 148</span>
426
548
 
427
549
  <span class='kw'>def</span> <span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span> <span class='id identifier rubyid_noReload'>noReload</span><span class='op'>=</span><span class='kw'>false</span><span class='rparen'>)</span>
428
550
  <span class='comment'># Define my redis id...
@@ -436,8 +558,8 @@ padded into trigrams.</p>
436
558
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_set'>set</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id2filename:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span><span class='id identifier rubyid_filename'>filename</span>
437
559
  <span class='kw'>else</span>
438
560
  <span class='kw'>if</span> <span class='id identifier rubyid_noReload'>noReload</span>
439
- <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Already found </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_content'> as id:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_content'> and NOT RELOADED</span><span class='tstring_end'>&quot;</span></span>
440
- <span class='kw'>return</span> <span class='kw'>nil</span>
561
+ <span class='comment'>#puts &quot;Already found #{filename} as id:#{fid} and NOT RELOADED&quot;
562
+ </span> <span class='kw'>return</span> <span class='kw'>nil</span>
441
563
  <span class='kw'>end</span>
442
564
  <span class='kw'>end</span>
443
565
  <span class='comment'># fid is the set key!...
@@ -448,10 +570,12 @@ padded into trigrams.</p>
448
570
  </span> <span class='comment'># before sending it to redis. This avoid
449
571
  </span> <span class='comment'># a lot of spourios work
450
572
  </span> <span class='id identifier rubyid_s'>s</span><span class='op'>=</span><span class='const'>Set</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
451
- <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>r</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_f'>f</span><span class='op'>|</span>
573
+ <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_filename'>filename</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>r</span><span class='tstring_end'>&quot;</span></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>
452
574
  <span class='id identifier rubyid_lines'>lines</span><span class='op'>=</span><span class='id identifier rubyid_f'>f</span><span class='period'>.</span><span class='id identifier rubyid_readlines'>readlines</span><span class='lparen'>(</span><span class='rparen'>)</span>
453
- <span class='id identifier rubyid_adaptiveSize'>adaptiveSize</span><span class='op'>=</span> <span class='int'>6000</span>
454
- <span class='id identifier rubyid_lines'>lines</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_l'>l</span><span class='op'>|</span>
575
+ <span class='id identifier rubyid_adaptiveSize'>adaptiveSize</span><span class='op'>=</span> <span class='const'>TRIGRAM_DEFAULT_PUSH_SIZE</span>
576
+ <span class='id identifier rubyid_util'>util</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>
577
+ <span class='id identifier rubyid_lines'>lines</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_lineNotUTF8'>lineNotUTF8</span><span class='op'>|</span>
578
+ <span class='id identifier rubyid_l'>l</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_lineNotUTF8'>lineNotUTF8</span><span class='rparen'>)</span>
455
579
  <span class='comment'># Split each line into 3-char chunks, and store in a redis set
456
580
  </span> <span class='id identifier rubyid_i'>i</span><span class='op'>=</span><span class='int'>0</span>
457
581
  <span class='kw'>for</span> <span class='id identifier rubyid_istart'>istart</span> <span class='kw'>in</span> <span class='int'>0</span><span class='op'>...</span><span class='lparen'>(</span><span class='id identifier rubyid_l'>l</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>-</span><span class='const'>GRAM_SIZE</span><span class='rparen'>)</span>
@@ -470,7 +594,7 @@ padded into trigrams.</p>
470
594
  <span class='comment'>#puts &quot;#{istart} Trigram fscan:#{trigram}/ FileId: #{fid}&quot;
471
595
  </span> <span class='kw'>end</span>
472
596
  <span class='kw'>end</span>
473
- <span class='kw'>end</span>
597
+ <span class='rbrace'>}</span>
474
598
 
475
599
  <span class='kw'>if</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&gt;</span> <span class='int'>0</span>
476
600
  <span class='id identifier rubyid_pushTrigramsSet'>pushTrigramsSet</span><span class='lparen'>(</span><span class='id identifier rubyid_s'>s</span><span class='comma'>,</span><span class='id identifier rubyid_fid'>fid</span><span class='comma'>,</span><span class='id identifier rubyid_filename'>filename</span><span class='rparen'>)</span>
@@ -482,14 +606,92 @@ padded into trigrams.</p>
482
606
  <span class='id identifier rubyid_trigramsOnFile'>trigramsOnFile</span><span class='op'>=</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_scard'>scard</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:trigramsOnFile:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
483
607
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_sadd'>sadd</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:processedFiles</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
484
608
  <span class='id identifier rubyid_trigramRatio'>trigramRatio</span><span class='op'>=</span><span class='lparen'>(</span> <span class='lparen'>(</span><span class='id identifier rubyid_trigramsOnFile'>trigramsOnFile</span><span class='op'>*</span><span class='float'>1.0</span><span class='rparen'>)</span> <span class='op'>/</span> <span class='id identifier rubyid_trigramScanned'>trigramScanned</span> <span class='rparen'>)</span><span class='op'>*</span> <span class='float'>100.0</span>
485
- <span class='kw'>if</span> <span class='id identifier rubyid_trigramRatio'>trigramRatio</span> <span class='op'>&lt;</span> <span class='int'>10</span> <span class='kw'>or</span> <span class='id identifier rubyid_trigramRatio'>trigramRatio</span> <span class='op'>&gt;</span><span class='int'>75</span>
486
- <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_content'>\n\tRatio:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramRatio'>trigramRatio</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='rbrace'>}</span><span class='tstring_content'>% Unique Trigrams:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramsOnFile'>trigramsOnFile</span><span class='rbrace'>}</span><span class='tstring_content'> Total Scanned: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramScanned'>trigramScanned</span><span class='rbrace'>}</span><span class='tstring_content'> </span><span class='tstring_end'>&quot;</span></span>
609
+ <span class='kw'>if</span> <span class='id identifier rubyid_trigramRatio'>trigramRatio</span> <span class='op'>&lt;</span> <span class='int'>10</span> <span class='kw'>or</span> <span class='id identifier rubyid_trigramRatio'>trigramRatio</span> <span class='op'>&gt;</span><span class='int'>75</span>
610
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_content'>\n\tRatio:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramRatio'>trigramRatio</span><span class='period'>.</span><span class='id identifier rubyid_round'>round</span><span class='rbrace'>}</span><span class='tstring_content'>% Unique Trigrams:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramsOnFile'>trigramsOnFile</span><span class='rbrace'>}</span><span class='tstring_content'> Total Scanned: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramScanned'>trigramScanned</span><span class='rbrace'>}</span><span class='tstring_content'> ?Binary</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_trigramRatio'>trigramRatio</span> <span class='op'>&gt;</span><span class='int'>90</span> <span class='kw'>and</span> <span class='id identifier rubyid_trigramsOnFile'>trigramsOnFile</span><span class='op'>&gt;</span><span class='int'>70</span>
487
611
  <span class='kw'>end</span>
488
612
  <span class='kw'>return</span> <span class='kw'>nil</span>
489
613
  <span class='kw'>end</span></pre>
490
614
  </td>
491
615
  </tr>
492
616
  </table>
617
+ </div>
618
+
619
+ <div class="method_details ">
620
+ <p class="signature " id="map_ids_to_files-instance_method">
621
+
622
+ - (<tt>Object</tt>) <strong>map_ids_to_files</strong>(fileIds)
623
+
624
+
625
+
626
+ </p><table class="source_code">
627
+ <tr>
628
+ <td>
629
+ <pre class="lines">
630
+
631
+
632
+ 228
633
+ 229
634
+ 230
635
+ 231
636
+ 232
637
+ 233
638
+ 234
639
+ 235
640
+ 236
641
+ 237</pre>
642
+ </td>
643
+ <td>
644
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 228</span>
645
+
646
+ <span class='kw'>def</span> <span class='id identifier rubyid_map_ids_to_files'>map_ids_to_files</span><span class='lparen'>(</span><span class='id identifier rubyid_fileIds'>fileIds</span><span class='rparen'>)</span>
647
+ <span class='id identifier rubyid_filenames'>filenames</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span>
648
+ <span class='comment'># fscan:id2filename:#{fid}....
649
+ </span> <span class='id identifier rubyid_fileIds'>fileIds</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_id'>id</span> <span class='op'>|</span>
650
+ <span class='id identifier rubyid_file_name'>file_name</span><span class='op'>=</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id2filename:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id'>id</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
651
+ <span class='id identifier rubyid_filenames'>filenames</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='id identifier rubyid_file_name'>file_name</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='op'>!</span><span class='id identifier rubyid_file_name'>file_name</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
652
+ <span class='kw'>end</span>
653
+ <span class='comment'>#puts &quot; ** Files found:#{filenames} from ids #{fileIds}&quot;
654
+ </span> <span class='kw'>return</span> <span class='id identifier rubyid_filenames'>filenames</span>
655
+ <span class='kw'>end</span></pre>
656
+ </td>
657
+ </tr>
658
+ </table>
659
+ </div>
660
+
661
+ <div class="method_details ">
662
+ <p class="signature " id="reindex-instance_method">
663
+
664
+ - (<tt>Object</tt>) <strong>reindex</strong>(fileList)
665
+
666
+
667
+
668
+ </p><table class="source_code">
669
+ <tr>
670
+ <td>
671
+ <pre class="lines">
672
+
673
+
674
+ 276
675
+ 277
676
+ 278
677
+ 279
678
+ 280
679
+ 281
680
+ 282</pre>
681
+ </td>
682
+ <td>
683
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 276</span>
684
+
685
+ <span class='kw'>def</span> <span class='id identifier rubyid_reindex'>reindex</span><span class='lparen'>(</span><span class='id identifier rubyid_fileList'>fileList</span><span class='rparen'>)</span>
686
+ <span class='comment'>#puts &quot;Reindexing... #{fileList.length} files...&quot;
687
+ </span> <span class='id identifier rubyid_fileList'>fileList</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_current_file'>current_file</span> <span class='op'>|</span>
688
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_current_file'>current_file</span><span class='rbracket'>]</span><span class='rparen'>)</span>
689
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span><span class='lparen'>(</span><span class='id identifier rubyid_current_file'>current_file</span><span class='comma'>,</span><span class='id identifier rubyid_noReload'>noReload</span><span class='op'>=</span><span class='kw'>false</span><span class='rparen'>)</span>
690
+ <span class='kw'>end</span>
691
+ <span class='kw'>end</span></pre>
692
+ </td>
693
+ </tr>
694
+ </table>
493
695
  </div>
494
696
 
495
697
  <div class="method_details ">
@@ -516,44 +718,45 @@ padded into trigrams.</p>
516
718
  <pre class="lines">
517
719
 
518
720
 
519
- 163
520
- 164
521
- 165
522
- 166
523
- 167
524
- 168
525
- 169
526
- 170
527
- 171
528
- 172
529
- 173
530
- 174
531
- 175
532
- 176
533
- 177
534
- 178
535
- 179
536
- 180
537
- 181
538
- 182
539
- 183
540
- 184
541
- 185
542
- 186
543
- 187
544
- 188
545
- 189
546
- 190
547
- 191
548
- 192
549
- 193
550
- 194
551
- 195
552
- 196
553
- 197</pre>
721
+ 297
722
+ 298
723
+ 299
724
+ 300
725
+ 301
726
+ 302
727
+ 303
728
+ 304
729
+ 305
730
+ 306
731
+ 307
732
+ 308
733
+ 309
734
+ 310
735
+ 311
736
+ 312
737
+ 313
738
+ 314
739
+ 315
740
+ 316
741
+ 317
742
+ 318
743
+ 319
744
+ 320
745
+ 321
746
+ 322
747
+ 323
748
+ 324
749
+ 325
750
+ 326
751
+ 327
752
+ 328
753
+ 329
754
+ 330
755
+ 331
756
+ 332</pre>
554
757
  </td>
555
758
  <td>
556
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 163</span>
759
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 297</span>
557
760
 
558
761
  <span class='kw'>def</span> <span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='id identifier rubyid_filePaths'>filePaths</span><span class='op'>=</span><span class='kw'>nil</span><span class='rparen'>)</span>
559
762
  <span class='kw'>if</span> <span class='id identifier rubyid_filePaths'>filePaths</span><span class='op'>==</span><span class='kw'>nil</span>
@@ -566,26 +769,27 @@ padded into trigrams.</p>
566
769
  <span class='kw'>else</span>
567
770
  <span class='id identifier rubyid_fileList'>fileList</span><span class='op'>=</span><span class='id identifier rubyid_filePaths'>filePaths</span>
568
771
  <span class='kw'>end</span>
569
- <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Files to remove from index...</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fileList'>fileList</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
570
-
571
- <span class='id identifier rubyid_fileList'>fileList</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_filename'>filename</span><span class='op'>|</span>
772
+ <span class='comment'># puts &quot;Files to remove from index...#{fileList.length}&quot;
773
+ </span> <span class='id identifier rubyid_fileList'>fileList</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_filename'>filename</span><span class='op'>|</span>
572
774
  <span class='id identifier rubyid_fid'>fid</span><span class='op'>=</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
573
775
  <span class='id identifier rubyid_trigramsToExpurge'>trigramsToExpurge</span><span class='op'>=</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_smembers'>smembers</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:trigramsOnFile:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
574
776
  <span class='kw'>if</span> <span class='id identifier rubyid_trigramsToExpurge'>trigramsToExpurge</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>==</span><span class='int'>0</span>
575
777
  <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>?Nothing to do on </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
576
778
  <span class='kw'>end</span>
577
- <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_content'> id=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_content'> Trigrams: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramsToExpurge'>trigramsToExpurge</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
779
+ <span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</span><span class='tstring_content'> id=</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_content'> Trigrams: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_trigramsToExpurge'>trigramsToExpurge</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbrace'>}</span><span class='tstring_content'> Expurging...</span><span class='tstring_end'>&quot;</span></span>
578
780
  <span class='id identifier rubyid_trigramsToExpurge'>trigramsToExpurge</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_ts'>ts</span> <span class='op'>|</span>
579
781
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_srem'>srem</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ts'>ts</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_fid'>fid</span>
580
782
  <span class='kw'>begin</span>
581
783
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_srem'>srem</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram:ci:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_ts'>ts</span><span class='period'>.</span><span class='id identifier rubyid_downcase'>downcase</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span><span class='id identifier rubyid_fid'>fid</span>
582
- <span class='kw'>rescue</span> <span class='const'>ArgumentError</span>
784
+ <span class='comment'>#putc &quot;.&quot;
785
+ </span> <span class='kw'>rescue</span> <span class='const'>ArgumentError</span>
583
786
  <span class='comment'># Ignore &quot;ArgumentError: invalid byte sequence in UTF-8&quot;
584
787
  </span> <span class='comment'># and proceed...
585
788
  </span> <span class='kw'>end</span>
586
789
  <span class='kw'>end</span>
587
-
588
- <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_del'>del</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</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'>fscan:trigramsOnFile:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</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'>fscan:id2filename:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
790
+ <span class='comment'>#putc &quot;\n&quot;
791
+ </span>
792
+ <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_del'>del</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_filename'>filename</span><span class='rbrace'>}</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'>fscan:trigramsOnFile:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</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'>fscan:id2filename:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fid'>fid</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span>
589
793
  <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_srem'>srem</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:processedFiles</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='id identifier rubyid_filename'>filename</span>
590
794
  <span class='kw'>end</span>
591
795
  <span class='kw'>return</span> <span class='kw'>nil</span>
@@ -619,15 +823,29 @@ padded into trigrams.</p>
619
823
  <pre class="lines">
620
824
 
621
825
 
622
- 158
623
- 159
624
- 160</pre>
826
+ 285
827
+ 286
828
+ 287
829
+ 288
830
+ 289
831
+ 290
832
+ 291
833
+ 292
834
+ 293
835
+ 294</pre>
625
836
  </td>
626
837
  <td>
627
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 158</span>
838
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 285</span>
628
839
 
629
840
  <span class='kw'>def</span> <span class='id identifier rubyid_removeAll'>removeAll</span><span class='lparen'>(</span><span class='rparen'>)</span>
630
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_remove'>remove</span><span class='lparen'>(</span><span class='kw'>nil</span><span class='rparen'>)</span>
841
+ <span class='id identifier rubyid_tokill'>tokill</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span>
842
+ <span class='id identifier rubyid_tokill'>tokill</span><span class='op'>=</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:*</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
843
+ <span class='id identifier rubyid_tokill'>tokill</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='op'>*</span><span class='lparen'>(</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_keys'>keys</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram*</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
844
+ <span class='id identifier rubyid_tokill'>tokill</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_x'>x</span> <span class='op'>|</span>
845
+ <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_del'>del</span> <span class='id identifier rubyid_x'>x</span>
846
+ <span class='comment'>#puts &quot;Deleted #x&quot;
847
+ </span> <span class='kw'>end</span>
848
+ <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_del'>del</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:processedFiles</span><span class='tstring_end'>&quot;</span></span>
631
849
  <span class='kw'>end</span></pre>
632
850
  </td>
633
851
  </tr>
@@ -661,67 +879,39 @@ padded into trigrams</p>
661
879
  <pre class="lines">
662
880
 
663
881
 
664
- 119
665
- 120
666
- 121
667
- 122
668
- 123
669
- 124
670
- 125
671
- 126
672
- 127
673
- 128
674
- 129
675
- 130
676
- 131
677
- 132
678
- 133
679
- 134
680
- 135
681
- 136
682
- 137
683
- 138
684
- 139
685
- 140
686
- 141
687
- 142
688
- 143
689
- 144
690
- 145
691
- 146
692
- 147</pre>
882
+ 260
883
+ 261
884
+ 262
885
+ 263
886
+ 264
887
+ 265
888
+ 266
889
+ 267
890
+ 268
891
+ 269
892
+ 270
893
+ 271
894
+ 272
895
+ 273
896
+ 274</pre>
693
897
  </td>
694
898
  <td>
695
- <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 119</span>
899
+ <pre class="code"><span class="info file"># File 'lib/code_zauker.rb', line 260</span>
696
900
 
697
901
  <span class='kw'>def</span> <span class='id identifier rubyid_search'>search</span><span class='lparen'>(</span><span class='id identifier rubyid_term'>term</span><span class='rparen'>)</span>
698
902
  <span class='kw'>if</span> <span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&lt;</span> <span class='const'>GRAM_SIZE</span>
699
903
  <span class='id identifier rubyid_raise'>raise</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>FATAL: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_term'>term</span><span class='rbrace'>}</span><span class='tstring_content'> is shorter then the minimum size of </span><span class='embexpr_beg'>#{</span><span class='const'>GRAM_SIZE</span><span class='rbrace'>}</span><span class='tstring_content'> character</span><span class='tstring_end'>&quot;</span></span>
700
904
  <span class='kw'>end</span>
701
905
  <span class='comment'>#puts &quot; ** Searching: #{term}&quot;
702
- </span> <span class='comment'># split the term in a padded trigram
703
- </span> <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span>
704
- <span class='comment'># Search=&gt; Sea AND ear AND arc AND rch
705
- </span> <span class='kw'>for</span> <span class='id identifier rubyid_j'>j</span> <span class='kw'>in</span> <span class='int'>0</span><span class='op'>...</span><span class='id identifier rubyid_term'>term</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span>
706
- <span class='id identifier rubyid_currentTrigram'>currentTrigram</span><span class='op'>=</span><span class='id identifier rubyid_term'>term</span><span class='lbracket'>[</span><span class='id identifier rubyid_j'>j</span><span class='comma'>,</span><span class='const'>GRAM_SIZE</span><span class='rbracket'>]</span>
707
- <span class='kw'>if</span> <span class='id identifier rubyid_currentTrigram'>currentTrigram</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>&lt;</span><span class='const'>GRAM_SIZE</span>
708
- <span class='comment'># We are at the end...
709
- </span> <span class='kw'>break</span>
710
- <span class='kw'>end</span>
711
- <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_currentTrigram'>currentTrigram</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
712
- <span class='kw'>end</span>
906
+ </span> <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='op'>=</span><span class='id identifier rubyid_split_in_trigrams'>split_in_trigrams</span><span class='lparen'>(</span><span class='id identifier rubyid_term'>term</span><span class='comma'>,</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>trigram</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
713
907
  <span class='comment'>#puts &quot;Trigam conversion /#{term}/ into #{trigramInAnd}&quot;
714
908
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='op'>==</span><span class='int'>0</span>
715
909
  <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
716
910
  <span class='kw'>end</span>
717
911
  <span class='id identifier rubyid_fileIds'>fileIds</span><span class='op'>=</span> <span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_sinter'>sinter</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_trigramInAnd'>trigramInAnd</span><span class='rparen'>)</span>
718
- <span class='id identifier rubyid_filenames'>filenames</span><span class='op'>=</span><span class='lbracket'>[</span><span class='rbracket'>]</span>
719
- <span class='comment'># fscan:id2filename:#{fid}....
720
- </span> <span class='id identifier rubyid_fileIds'>fileIds</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_id'>id</span> <span class='op'>|</span>
721
- <span class='id identifier rubyid_filenames'>filenames</span><span class='period'>.</span><span class='id identifier rubyid_push'>push</span><span class='lparen'>(</span><span class='ivar'>@redis</span><span class='period'>.</span><span class='id identifier rubyid_get'>get</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>fscan:id2filename:</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id'>id</span><span class='rbrace'>}</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
722
- <span class='kw'>end</span>
723
- <span class='comment'>#puts &quot; ** Files found:#{filenames} from ids #{fileIds}&quot;
724
- </span> <span class='kw'>return</span> <span class='id identifier rubyid_filenames'>filenames</span>
912
+ <span class='id identifier rubyid_fileNames'>fileNames</span><span class='op'>=</span><span class='id identifier rubyid_map_ids_to_files'>map_ids_to_files</span><span class='lparen'>(</span><span class='id identifier rubyid_fileIds'>fileIds</span><span class='rparen'>)</span>
913
+ <span class='comment'>#puts &quot;DEBUG #{fileIds} #{fileNames}&quot;
914
+ </span> <span class='kw'>return</span> <span class='id identifier rubyid_fileNames'>fileNames</span>
725
915
  <span class='kw'>end</span></pre>
726
916
  </td>
727
917
  </tr>
@@ -733,7 +923,7 @@ padded into trigrams</p>
733
923
  </div>
734
924
 
735
925
  <div id="footer">
736
- Generated on Fri Jan 27 14:54:06 2012 by
926
+ Generated on Fri Feb 3 17:18:44 2012 by
737
927
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
738
928
  0.7.4 (ruby-1.9.3).
739
929
  </div>