icersplicer 0.3.6 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/icersplicer +33 -31
- data/lib/icersplicer.rb +37 -6
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e74103ad7acd91e846845928dee5cd14a68b2a0
|
4
|
+
data.tar.gz: e99b949b976c0e3ee96f8b707db4dd5db1395b60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a1bac8788290a8f83ae8117ff9a8d69c199e38216c880eaa3da7f754e28984d098e889978917712405d63a10305eafd8cca0f78042a205b35cfe9805e7c18ca
|
7
|
+
data.tar.gz: 7e8ab2a5375746f32a6cb0ad556569e0d948b4300c66ebe5a2afa97f24e1ec2c8904d4d90ab041bc7f4f3e446b966fbdac9c4176bdc1bf00c332bae43fcae686
|
data/bin/icersplicer
CHANGED
@@ -13,7 +13,9 @@
|
|
13
13
|
########################################################################
|
14
14
|
|
15
15
|
require 'getoptlong'
|
16
|
+
require 'walltime'
|
16
17
|
require 'pp'
|
18
|
+
|
17
19
|
require File.expand_path(File.join(
|
18
20
|
File.dirname(__FILE__),
|
19
21
|
"../lib/icersplicer.rb"))
|
@@ -36,7 +38,9 @@ opts = GetoptLong.new(
|
|
36
38
|
[ '--outputfile', '-o', GetoptLong::OPTIONAL_ARGUMENT],
|
37
39
|
[ '--countlines', '-c', GetoptLong::OPTIONAL_ARGUMENT],
|
38
40
|
[ '--grep', '-g', GetoptLong::REQUIRED_ARGUMENT],
|
39
|
-
[ '--nohighlighter', '-t', GetoptLong::NO_ARGUMENT ]
|
41
|
+
[ '--nohighlighter', '-t', GetoptLong::NO_ARGUMENT ],
|
42
|
+
[ '--search', '-1', GetoptLong::REQUIRED_ARGUMENT],
|
43
|
+
[ '--replace', '-2', GetoptLong::REQUIRED_ARGUMENT]
|
40
44
|
)
|
41
45
|
|
42
46
|
opts.each do |opt, arg|
|
@@ -57,7 +61,9 @@ opts.each do |opt, arg|
|
|
57
61
|
--countlines '-c' Counts the lines of a file
|
58
62
|
--grep '-g' Filter data
|
59
63
|
--nohighlighter '-t' NO ARGUMENTS ( Turns off syntax hightlighting )
|
60
|
-
|
64
|
+
--search '-1' Text to search for
|
65
|
+
--replace '-2' Replacement string
|
66
|
+
|
61
67
|
Example:
|
62
68
|
|
63
69
|
icersplicer -f inputfile --lineoffset 0 --linelimit 10 -s 3,6,9,10-15 -o outputfile
|
@@ -81,26 +87,7 @@ Written by Brian Hood
|
|
81
87
|
@outputfile = arg.to_s
|
82
88
|
puts "Outputfile: #{@outputfile}"
|
83
89
|
when '--skiplines'
|
84
|
-
@skip_lines =
|
85
|
-
arg.to_s.split(",").each {|n|
|
86
|
-
@skip_lines << n.to_i
|
87
|
-
# Allow line ranges
|
88
|
-
min = n.split("-")[0].to_i
|
89
|
-
max = n.split("-")[1].to_i
|
90
|
-
unless n.split("-")[1] == nil
|
91
|
-
begin
|
92
|
-
if min > max and max != 0
|
93
|
-
return false
|
94
|
-
end
|
95
|
-
rescue
|
96
|
-
puts "Range Error: Minimun value can't be more than Maxiumun Range value"
|
97
|
-
exit
|
98
|
-
end
|
99
|
-
min.upto(max) {|s|
|
100
|
-
@skip_lines << s unless @skip_lines[@skip_lines.size - 1] == s
|
101
|
-
}
|
102
|
-
end
|
103
|
-
}
|
90
|
+
@skip_lines = skip_processor(arg)
|
104
91
|
when '--skipblank'
|
105
92
|
@skipblank = "SKIP"
|
106
93
|
when '--quiet'
|
@@ -115,9 +102,25 @@ Written by Brian Hood
|
|
115
102
|
@grep = arg.to_s
|
116
103
|
when '--nohighlighter'
|
117
104
|
@nohighlighter = "OFF"
|
105
|
+
when '--search'
|
106
|
+
@search = arg.to_s
|
107
|
+
when '--replace'
|
108
|
+
@replace = arg.to_s
|
118
109
|
end
|
119
110
|
end
|
120
111
|
|
112
|
+
if instance_variable_defined?("@search")
|
113
|
+
search = @search
|
114
|
+
if instance_variable_defined?("@replace")
|
115
|
+
replace = @replace
|
116
|
+
search_and_replace = true
|
117
|
+
else
|
118
|
+
puts "Replace string required to use search / replace features..."
|
119
|
+
exit
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
|
121
124
|
unless instance_variable_defined?("@line_offset")
|
122
125
|
lineoffset = 0
|
123
126
|
else
|
@@ -152,19 +155,16 @@ unless File.exist?("#{inputfile}")
|
|
152
155
|
exit
|
153
156
|
end
|
154
157
|
|
155
|
-
|
156
|
-
|
157
|
-
data = text_highlighter(data)
|
158
|
-
return data
|
159
|
-
else
|
160
|
-
return data
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
158
|
+
timer = Stopwatch.new
|
159
|
+
timer.watch('start')
|
164
160
|
begin
|
165
161
|
File.open(inputfile) {|n|
|
166
162
|
n.each_line {|data|
|
167
163
|
data_orig = data.clone
|
164
|
+
if search_and_replace == true
|
165
|
+
data_orig.gsub!("#{search}", "#{replace}")
|
166
|
+
data.gsub!("#{search}", "#{replace}")
|
167
|
+
end
|
168
168
|
unless lineoffset > increment_offset
|
169
169
|
unless linelimit == 0
|
170
170
|
unless increment_limit > linelimit
|
@@ -198,3 +198,5 @@ rescue Errno::EPIPE
|
|
198
198
|
end
|
199
199
|
closefile if instance_variable_defined?("@exp")
|
200
200
|
stats(inputfile, outputfile)
|
201
|
+
timer.watch('stop')
|
202
|
+
timer.print_stats
|
data/lib/icersplicer.rb
CHANGED
@@ -13,8 +13,8 @@ module Icersplicer
|
|
13
13
|
|
14
14
|
module VERSION #:nodoc:
|
15
15
|
MAJOR = 0
|
16
|
-
MINOR =
|
17
|
-
TINY =
|
16
|
+
MINOR = 4
|
17
|
+
TINY = 2
|
18
18
|
CODENAME = "Ice Axe !"
|
19
19
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
20
20
|
end
|
@@ -48,7 +48,16 @@ module Icersplicer
|
|
48
48
|
return false
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
|
+
def text_processor(data)
|
53
|
+
unless instance_variable_defined?("@nohighlighter")
|
54
|
+
data = text_highlighter(data)
|
55
|
+
return data
|
56
|
+
else
|
57
|
+
return data
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
52
61
|
def text_highlighter(text)
|
53
62
|
keys = load_keywords("#{@@keywordsfile}")
|
54
63
|
if keys == false
|
@@ -64,9 +73,7 @@ module Icersplicer
|
|
64
73
|
text.gsub!("#{n}", "\e[4;3#{cpicker[rand(cpicker.size)]}m#{n}\e[0m\ \e[0;32m".strip)
|
65
74
|
else
|
66
75
|
name = n.split("##")[1].split("=")[1]
|
67
|
-
#puts "Colour: #{name} #{COLOURS[name]}"
|
68
76
|
cnum = COLOURS[name].to_i
|
69
|
-
#puts "NVal: #{n}"
|
70
77
|
nval = n.split("##")[0]
|
71
78
|
text.gsub!("#{nval}", "\e[4;3#{cnum}m#{nval}\e[0m\ \e[0;32m".strip)
|
72
79
|
end
|
@@ -88,7 +95,31 @@ module Icersplicer
|
|
88
95
|
end
|
89
96
|
end
|
90
97
|
end
|
91
|
-
|
98
|
+
|
99
|
+
def skip_processor(filter)
|
100
|
+
skip_lines = Array.new
|
101
|
+
filter.to_s.split(",").each {|n|
|
102
|
+
skip_lines << n.to_i
|
103
|
+
# Allow line ranges
|
104
|
+
min = n.split("-")[0].to_i
|
105
|
+
max = n.split("-")[1].to_i
|
106
|
+
unless n.split("-")[1] == nil
|
107
|
+
begin
|
108
|
+
if min > max and max != 0
|
109
|
+
return false
|
110
|
+
end
|
111
|
+
rescue
|
112
|
+
puts "Range Error: Minimun value can't be more than Maxiumun Range value"
|
113
|
+
exit
|
114
|
+
end
|
115
|
+
min.upto(max) {|s|
|
116
|
+
skip_lines << s unless skip_lines[skip_lines.size - 1] == s
|
117
|
+
}
|
118
|
+
end
|
119
|
+
}
|
120
|
+
return skip_lines
|
121
|
+
end
|
122
|
+
|
92
123
|
def skip(line)
|
93
124
|
begin
|
94
125
|
line_element = @skip_lines.index(line)
|
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.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Hood
|
@@ -9,7 +9,21 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-01-17 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: walltime
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.0.5
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.0.5
|
13
27
|
description: Text file manipulation similar to UNIX tools like cat / head / tail
|
14
28
|
email: brianh6854@googlemail.com
|
15
29
|
executables:
|