icersplicer 0.8.4 → 0.8.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/icersplicer +26 -16
  3. data/lib/icersplicer.rb +162 -149
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6bcc6bdd964101db8f7fe11ac53410d6b31fb8d1
4
- data.tar.gz: 5b3726eef1d632772527722561f9b08981353b2c
3
+ metadata.gz: c79c144aea7b10ae25373863f07871e381b53baf
4
+ data.tar.gz: 135decaecbfe484b53fef4579e31b8a5477a01bc
5
5
  SHA512:
6
- metadata.gz: 02b127c69b259952cf8de687d1ecf0a891f516e73a39332ef6166f7f6768e5d367c8bc676bdfb6e54fc6f62c654705001b157e01483c1ecef5569cd7e52a3716
7
- data.tar.gz: 5a63de22a01e9f1f0a4f5fb886cf83dd0c2a8a387b5579a2e428b6afc90409b773ec0b36590e03ad4b62419c0e0585026f80562f9925d8222ab549b7364aea15
6
+ metadata.gz: 201632e6e5dcb26d1c80792a6bfb4a65d4109349622c915c533051ebb147400b68a25eddf4a741c4ee8c96b3312da905c66fbdcd72ffb89de857542c522527d6
7
+ data.tar.gz: 5e6b0a8962aaa87ccb6e9dcbf263b7dc88544b9c15f8fe3eb29378cfa4d70fdca0f76ac915494ad5d511138de3f697fcb31da443d49facbc82190e30bc05ce3d
data/bin/icersplicer CHANGED
@@ -25,16 +25,18 @@ include Icersplicer
25
25
 
26
26
  trap("INT") {
27
27
  puts "Goodbye see you soon!"
28
- reset_screen
28
+ ice.reset_screen
29
29
  exit
30
30
  }
31
31
 
32
32
  VERSION = Icersplicer::VERSION::STRING
33
+ ice = FileProcessor.new
33
34
 
34
35
  ARGV[0] = "--help" if ARGV[0] == nil
35
36
 
36
37
  opts = GetoptLong.new(
37
38
  [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
39
+ [ '--keywordsfile', '-k', GetoptLong::REQUIRED_ARGUMENT],
38
40
  [ '--lineoffset', '-l', GetoptLong::OPTIONAL_ARGUMENT],
39
41
  [ '--linelimit', '-n', GetoptLong::REQUIRED_ARGUMENT],
40
42
  [ '--head', '-3', GetoptLong::REQUIRED_ARGUMENT],
@@ -52,6 +54,7 @@ opts = GetoptLong.new(
52
54
  [ '--search', '-1', GetoptLong::REQUIRED_ARGUMENT],
53
55
  [ '--replace', '-2', GetoptLong::REQUIRED_ARGUMENT],
54
56
  [ '--nostats', '-6', GetoptLong::NO_ARGUMENT ],
57
+ [ '--debug', '-d', GetoptLong::REQUIRED_ARGUMENT ]
55
58
  )
56
59
 
57
60
  opts.each do |opt, arg|
@@ -61,7 +64,9 @@ opts.each do |opt, arg|
61
64
  helper << "\e[1;34m============================\e[0m\ \n"
62
65
  helper << %Q[
63
66
  -h, --help '-h':
64
- show help
67
+ show help, )
68
+ --keywordsfile '-k' STRING ( Syntax Highlighting Keywords file see examples )
69
+ Full path not required just keywords-ruby.ice just place it in .icersplicer
65
70
  --lineoffset '-l' INTEGER
66
71
  --linelimit '-n' INTEGER
67
72
  --head '-3' INTEGER
@@ -74,10 +79,11 @@ opts.each do |opt, arg|
74
79
  --outputfile '-o' filename
75
80
  --countlines '-c' Counts the lines of a file
76
81
  --grep '-g' Filter data
77
- --nohighlighter '-t' NO ARGUMENTS ( Turns off syntax hightlighting )
82
+ --nohighlighter '-t' NO ARGUMENTS ( Turns off Syntax Hightlighting )
78
83
  --search '-1' Text to search for
79
84
  --replace '-2' Replacement string
80
85
  --nostats '-6' Don't process statistics before exit
86
+ --debug '-d' Verbose debug for hacking on this project
81
87
 
82
88
  Example:
83
89
 
@@ -94,11 +100,13 @@ Written by Brian Hood
94
100
  ]
95
101
  puts helper
96
102
  exit
103
+ when '--keywordsfile'
104
+ ice.keywordsfile = arg.to_s
97
105
  when /^--lineoffset|^--tail/
98
106
  if opt == "--lineoffset"
99
107
  @line_offset = arg.to_i
100
108
  else
101
- count = countlines(@inputfile)
109
+ count = ice.countlines(@inputfile)
102
110
  @line_offset = count - arg.to_i
103
111
  end
104
112
  when /^--linelimit|^--head/
@@ -114,7 +122,7 @@ Written by Brian Hood
114
122
  @outputfile = arg.to_s
115
123
  puts "Outputfile: #{@outputfile}"
116
124
  when '--skiplines'
117
- @skip_lines = skip_processor(arg)
125
+ ice.skip_lines = ice.skip_processor(arg)
118
126
  when '--skipblank'
119
127
  @skipblank = "SKIP"
120
128
  when '--quiet'
@@ -125,13 +133,15 @@ Written by Brian Hood
125
133
  when '--grep'
126
134
  @grep = arg.to_s
127
135
  when '--nohighlighter'
128
- @nohighlighter = "OFF"
136
+ ice.nohighlighter = "OFF"
129
137
  when '--search'
130
138
  @search = arg.to_s
131
139
  when '--replace'
132
140
  @replace = arg.to_s
133
141
  when '--nostats'
134
142
  @nostats = "SKIP"
143
+ when '--debug'
144
+ ice.debug = arg.to_i
135
145
  end
136
146
  end
137
147
 
@@ -141,7 +151,7 @@ grep = @grep
141
151
 
142
152
  if instance_variable_defined?("@followtail")
143
153
  lines = @followtail
144
- followtail(inputfile, lines)
154
+ ice.followtail(inputfile, lines)
145
155
  end
146
156
 
147
157
  if instance_variable_defined?("@search")
@@ -177,7 +187,7 @@ linecounter = 0
177
187
  quietmode = false | @quiet_mode
178
188
 
179
189
  if @countlines == true
180
- countlines(inputfile)
190
+ ice.countlines(inputfile)
181
191
  exit
182
192
  end
183
193
 
@@ -204,10 +214,10 @@ begin
204
214
  unless instance_variable_defined?("@skipblank") and data_orig.strip == ""
205
215
  if data_orig =~ /#{grep}/
206
216
  filterlines += 1
207
- print_to_screen(linecounter, text_processor(data), quietmode) unless skip(linecounter)
217
+ ice.print_to_screen(linecounter, ice.text_processor(data), quietmode) unless ice.skip(linecounter)
208
218
  if instance_variable_defined?("@outputfile")
209
219
  data_orig.gsub!("#{search}", "#{replace}")
210
- processdata(data_orig, outputfile, quietmode) unless skip(linecounter)
220
+ ice.processdata(data_orig, outputfile, quietmode) unless ice.skip(linecounter)
211
221
  end
212
222
  end
213
223
  end
@@ -216,10 +226,10 @@ begin
216
226
  unless instance_variable_defined?("@skipblank") and data_orig.strip == ""
217
227
  if data_orig =~ /#{grep}/
218
228
  filterlines += 1
219
- print_to_screen(linecounter, text_processor(data), quietmode) unless skip(linecounter)
229
+ ice.print_to_screen(linecounter, ice.text_processor(data), quietmode) unless ice.skip(linecounter)
220
230
  if instance_variable_defined?("@outputfile")
221
231
  data_orig.gsub!("#{search}", "#{replace}")
222
- processdata(data_orig, outputfile, quietmode) unless skip(linecounter)
232
+ ice.processdata(data_orig, outputfile, quietmode) unless ice.skip(linecounter)
223
233
  end
224
234
  end
225
235
  end
@@ -233,11 +243,11 @@ begin
233
243
  rescue Errno::EPIPE, IOError
234
244
  raise IOError, "Closing session due to broken pipe"
235
245
  end
236
- closefile
246
+ ice.closefile
237
247
  unless instance_variable_defined?("@nostats")
238
- filterlinestats(filterlines)
239
- stats(inputfile, outputfile)
248
+ ice.filterlinestats(filterlines)
249
+ ice.stats(inputfile, outputfile)
240
250
  timer.watch('stop')
241
251
  timer.print_stats
242
252
  end
243
- reset_screen
253
+ ice.reset_screen
data/lib/icersplicer.rb CHANGED
@@ -15,182 +15,195 @@ module Icersplicer
15
15
  module VERSION #:nodoc:
16
16
  MAJOR = 0
17
17
  MINOR = 8
18
- TINY = 4
19
- CODENAME = "Ice Seal !"
18
+ TINY = 9
19
+ CODENAME = "Icey Sea !"
20
20
  STRING = [MAJOR, MINOR, TINY].join('.')
21
21
  end
22
+
23
+ end
24
+
25
+ module Icersplicer
26
+
27
+ class FileProcessor
22
28
 
23
- @@nfile = 0
24
- @@exp = nil
25
- @@keywordsfile = "keywords.ice"
26
- @@debug = false
27
-
28
- COLOURS = {"black" => 0,
29
- "red" => 1,
30
- "green" => 2,
31
- "yellow" => 3,
32
- "blue" => 4,
33
- "purple" => 5,
34
- "cyan" => 6,
35
- "white" => 7}
36
-
37
- def reset_screen
38
- puts "\e[0m\ "
39
- end
40
-
41
- def filterlinestats(filterlines)
42
- puts "\nLines Displayed by Filter: #{filterlines}"
43
- end
29
+ attr_writer :nohighlighter, :skip_lines, :keywordsfile, :debug
30
+
31
+ COLOURS = {"black" => 0,
32
+ "red" => 1,
33
+ "green" => 2,
34
+ "yellow" => 3,
35
+ "blue" => 4,
36
+ "purple" => 5,
37
+ "cyan" => 6,
38
+ "white" => 7}
39
+
40
+ def initialize
41
+ @fileopen = 0
42
+ @exp = nil
43
+ @keywordsfile = "keywords.ice"
44
+ @debug = 0
45
+ end
46
+
47
+ def reset_screen
48
+ puts "\e[0m\ "
49
+ end
50
+
51
+ def filterlinestats(filterlines)
52
+ puts "\nLines Displayed by Filter: #{filterlines}"
53
+ end
44
54
 
45
- def followtail(filename, number)
46
- File::Tail::Logfile.open(filename) do |log|
47
- log.interval = 3
48
- log.backward(10)
49
- log.backward(number).tail { |line| puts line }
55
+ def followtail(filename, number)
56
+ File::Tail::Logfile.open(filename) do |log|
57
+ log.interval = 3
58
+ log.backward(10)
59
+ log.backward(number).tail { |line| puts line }
60
+ end
61
+ exit
50
62
  end
51
- exit
52
- end
53
63
 
54
- def load_keywords(file)
55
- keys = Hash.new
56
- linenum = 0
57
- unless Dir.exists?("#{Dir.home}/.icersplicer")
58
- Dir.mkdir("#{Dir.home}/.icersplicer")
59
- end
60
- if File.exists?("#{Dir.home}/.icersplicer/#{file}")
61
- File.open("#{Dir.home}/.icersplicer/#{file}") {|n|
62
- n.each_line {|l|
63
- keys.update({linenum => "#{l.strip}"}) unless l.strip == ""
64
- puts "L: #{l.strip}" if @@debug == true
65
- linenum += 1
64
+ def load_keywords(file)
65
+ keys = Hash.new
66
+ linenum = 0
67
+ unless Dir.exists?("#{Dir.home}/.icersplicer")
68
+ Dir.mkdir("#{Dir.home}/.icersplicer")
69
+ end
70
+ if File.exists?("#{Dir.home}/.icersplicer/#{file}")
71
+ File.open("#{Dir.home}/.icersplicer/#{file}") {|n|
72
+ n.each_line {|l|
73
+ keys.update({linenum => "#{l.strip}"}) unless l.strip == ""
74
+ puts "L: #{l.strip}" if @debug >= 1
75
+ linenum += 1
76
+ }
66
77
  }
67
- }
68
- return keys
69
- else
70
- return false
78
+ return keys
79
+ else
80
+ return false
81
+ end
71
82
  end
72
- end
73
83
 
74
- def text_processor(data)
75
- unless instance_variable_defined?("@nohighlighter")
76
- data = text_highlighter(data)
77
- return data
78
- else
79
- return data
84
+ def text_processor(data)
85
+ unless @nohighlighter == "OFF"
86
+ data = text_highlighter(data)
87
+ return data
88
+ else
89
+ return data
90
+ end
80
91
  end
81
- end
82
92
 
83
- def text_highlighter(text)
84
- @keys ||= load_keywords("#{@@keywordsfile}")
85
- unless @keys.class == Hash
86
- @keys = {0 => "Ln:",
87
- 1 => "SELECT",
88
- 2 => "CREATE TABLE",
89
- 3 => "UPDATE",
90
- 4 => "DELETE",
91
- 5 => "INSERT"}
92
- end
93
- cpicker = [2,3,4,1,7,5,6] # Just a selection of colours
94
- @keys.each {|n|
95
- if n[1].split("##")[1] == nil
96
- text.gsub!("#{n[1]}", "\e[4;3#{cpicker[rand(cpicker.size)]}m#{n[1]}\e[0m\ \e[0;32m")
97
- else
98
- name = n[1].split("##")[1].split("=")[1]; puts "Name: #{name}" if @@debug == true
99
- cnum = COLOURS[name].to_i; puts "Colour Number: #{cnum}" if @@debug == true
100
- nval = n[1].split("##")[0]; puts "Value: #{nval}" if @@debug == true
101
- text.gsub!("#{nval}", "\e[4;3#{cnum}m#{nval}\e[0m\ \e[0;32m")
93
+ def text_highlighter(text)
94
+ @keys ||= load_keywords("#{@keywordsfile}")
95
+ unless @keys.class == Hash
96
+ @keys = {0 => "Ln:",
97
+ 1 => "SELECT",
98
+ 2 => "CREATE TABLE",
99
+ 3 => "UPDATE",
100
+ 4 => "DELETE",
101
+ 5 => "INSERT"}
102
102
  end
103
- text.gsub!(" \e[0;32m", "\e[0;32m")
104
- }
105
- return text
106
- end
103
+ cpicker = [2,3,4,1,7,5,6] # Just a selection of colours
104
+ @keys.each {|n|
105
+ if n[1].split("##")[1] == nil
106
+ text.gsub!("#{n[1]}", "\e[4;3#{cpicker[rand(cpicker.size)]}m#{n[1]}\e[0m\ \e[0;32m")
107
+ else
108
+ name = n[1].split("##")[1].split("=")[1]; puts "Name: #{name}" if @debug >= 3
109
+ cnum = COLOURS[name].to_i; puts "Colour Number: #{cnum}" if @debug >= 3
110
+ nval = n[1].split("##")[0]; puts "Value: #{nval}" if @debug >= 3
111
+ text.gsub!("#{nval}", "\e[4;3#{cnum}m#{nval}\e[0m\ \e[0;32m")
112
+ end
113
+ text.gsub!(" \e[0;32m", "\e[0;32m")
114
+ }
115
+ return text
116
+ end
107
117
 
108
- def countlines(inputfile)
109
- lines = 0
110
- unless inputfile == nil
111
- if File.exist?(inputfile)
112
- File.open(inputfile) {|n|
113
- n.each_line {
114
- lines += 1
118
+ def countlines(inputfile)
119
+ lines = 0
120
+ unless inputfile == nil
121
+ if File.exist?(inputfile)
122
+ File.open(inputfile) {|n|
123
+ n.each_line {
124
+ lines += 1
125
+ }
115
126
  }
116
- }
117
- puts "Filename: #{inputfile} Total Line Count: #{lines}"
127
+ puts "Filename: #{inputfile} Total Line Count: #{lines}"
128
+ end
118
129
  end
130
+ return lines
119
131
  end
120
- return lines
121
- end
122
-
123
- def skip_processor(filter)
124
- skip_lines = Hash.new
125
- skipcounter = 0
126
- filter.to_s.split(",").each {|n|
127
- skip_lines.update({skipcounter => n.to_i})
128
- # Allow line ranges
129
- min = n.split("-")[0].to_i
130
- max = n.split("-")[1].to_i
131
- puts "Min: #{min} Max: #{max}" if @debug == true
132
- unless n.split("-")[1] == nil
133
- if min > max
134
- raise RangeError, "Range Error: Minimun value can't be more than Maxiumun Range value"
132
+
133
+ def skip_processor(filter)
134
+ skip_lines = Hash.new
135
+ skipcounter = 0
136
+ filter.to_s.split(",").each {|n|
137
+ skip_lines.update({skipcounter => n.to_i})
138
+ # Allow line ranges
139
+ min = n.split("-")[0].to_i
140
+ max = n.split("-")[1].to_i
141
+ puts "Min: #{min} Max: #{max}" if @debug >= 2
142
+ unless n.split("-")[1] == nil
143
+ if min > max
144
+ raise RangeError, "Range Error: Minimun value can't be more than Maxiumun Range value"
145
+ end
146
+ min.upto(max) {|s|
147
+ skip_lines.update({skipcounter => s}) unless skip_lines[skip_lines.size - 1] == s
148
+ skipcounter += 1
149
+ }
150
+ end
151
+ skipcounter += 1
152
+ }
153
+ return skip_lines
154
+ end
155
+
156
+ def skip(line)
157
+ begin
158
+ if instance_variable_defined?("@skip_lines")
159
+ line_element = @skip_lines.key(line)
160
+ if line_element != nil
161
+ skiper = @skip_lines[line_element]
135
162
  end
136
- min.upto(max) {|s|
137
- skip_lines.update({skipcounter => s}) unless skip_lines[skip_lines.size - 1] == s
138
- skipcounter += 1
139
- }
140
- end
141
- skipcounter += 1
142
- }
143
- return skip_lines
144
- end
145
-
146
- def skip(line)
147
- begin
148
- if instance_variable_defined?("@skip_lines")
149
- line_element = @skip_lines.key(line)
150
- if line_element != nil
151
- skiper = @skip_lines[line_element]
152
163
  end
164
+ rescue NoMethodError
165
+ return nil
153
166
  end
154
- rescue NoMethodError
155
- return nil
167
+ return skiper
156
168
  end
157
- return skiper
158
- end
159
169
 
160
- def print_to_screen(linenum, text, quiet)
161
- puts "\e[1;33mLn: #{linenum}:\e[0m\ #{text}" unless quiet == true
162
- end
170
+ def print_to_screen(linenum, text, quiet)
171
+ puts "\e[1;33mLn: #{linenum}:\e[0m\ #{text}" unless quiet == true
172
+ end
163
173
 
164
- def openfile(outputfile)
165
- begin
166
- puts "Openfile: #{outputfile}"
167
- @@exp = File.open("#{outputfile}", 'w')
168
- rescue Errno::EACCES
169
- raise IOError, "Can't create file please check file / directory permissions"
174
+ def openfile(outputfile)
175
+ begin
176
+ puts "Openfile: #{outputfile}" if @debug == true
177
+ @export = File.open("#{outputfile}", 'w')
178
+ rescue Errno::EACCES
179
+ raise IOError, "Can't create file please check file / directory permissions"
180
+ end
170
181
  end
171
- end
172
182
 
173
- def writefile(data)
174
- @@exp.write(data)
175
- end
183
+ def writefile(data)
184
+ @export.write(data)
185
+ end
176
186
 
177
- def closefile
178
- begin
179
- @@exp.close
180
- puts "Closing file"
181
- rescue NoMethodError
187
+ def closefile
188
+ begin
189
+ @export.close
190
+ puts "Closing file"
191
+ rescue NoMethodError
192
+ end
182
193
  end
183
- end
184
194
 
185
- def processdata(data, outputfile, quietmode)
186
- openfile(outputfile) if @@nfile == 0
187
- writefile(data)
188
- @@nfile += 1
189
- end
195
+ def processdata(data, outputfile, quietmode)
196
+ openfile(outputfile) if @fileopen == 0
197
+ writefile(data)
198
+ @fileopen += 1
199
+ end
190
200
 
191
- def stats(inputfile, outputfile)
192
- print "Inputfile lines: "
193
- countlines(inputfile)
194
- end
201
+ def stats(inputfile, outputfile)
202
+ puts "Skip Lines #{@skip_lines}" if @debug >= 1
203
+ print "Inputfile lines: "
204
+ countlines(inputfile)
205
+ end
195
206
 
207
+ end
208
+
196
209
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icersplicer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Hood