rubyc 0.1.2 → 0.3.0
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.
- checksums.yaml +7 -0
- data/Gemfile +5 -4
- data/Gemfile.lock +102 -52
- data/README.md +20 -13
- data/Rakefile +12 -3
- data/lib/rubyc/cli.rb +39 -16
- data/lib/rubyc/core_extensions.rb +5 -16
- data/lib/rubyc/version.rb +1 -1
- data/rubyc.gemspec +2 -2
- data/spec/cli_spec.rb +44 -22
- data/spec/spec_helper.rb +7 -9
- metadata +56 -49
- data/lib/rubyc/colorize_stack.rb +0 -37
- data/spec/colorize_stack_spec.rb +0 -47
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 129a515517a551a55fb60a6c2af06819da814828e9dd9a4328532e27a90553e3
|
|
4
|
+
data.tar.gz: 6d5dff8eb1ab16c468045138b7b4a011755abc0b62ef4240cf55ebffb27d35c3
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: ebcf9c8df0fbdcd5e5b59f075f288773da129a0588dd13dadb4d0b82a860aed3c88ed92df33cae58b0ba22303ae8261179f0be04f70072d0d24a9e4ac432710a
|
|
7
|
+
data.tar.gz: 60138e7cacccc60efd625f81b770d30b21932953801ea68f3f1cfb364d8adfc78328f6791c7eded23f1038243755278e7b7736d37f7ab2792d6656b9683f45b5
|
data/Gemfile
CHANGED
|
@@ -9,14 +9,15 @@ platforms :mri_18 do
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
platforms :mri_19 do
|
|
12
|
-
|
|
12
|
+
group :development do
|
|
13
|
+
gem 'ruby-debug19'
|
|
14
|
+
end
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
group :development do
|
|
16
18
|
gem 'pry'
|
|
17
19
|
gem 'guard'
|
|
18
20
|
gem 'guard-minitest'
|
|
19
|
-
gem 'rb-fsevent',
|
|
20
|
-
|
|
21
|
-
# gem 'ruby_gntp', '0.3.4'
|
|
21
|
+
gem 'rb-fsevent', :require => false
|
|
22
|
+
gem 'growl'
|
|
22
23
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,61 +1,104 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
rubyc (0.
|
|
4
|
+
rubyc (0.3.0)
|
|
5
5
|
thor (~> 0.15)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: http://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
archive-tar-minitar (0.
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
10
|
+
archive-tar-minitar (0.8)
|
|
11
|
+
minitar (~> 0.8)
|
|
12
|
+
minitar-cli (~> 0.8)
|
|
13
|
+
aruba (0.14.14)
|
|
14
|
+
childprocess (>= 0.6.3, < 4.0.0)
|
|
15
|
+
contracts (~> 0.9)
|
|
16
|
+
cucumber (>= 1.3.19)
|
|
17
|
+
ffi (~> 1.9)
|
|
18
|
+
rspec-expectations (>= 2.99)
|
|
19
|
+
thor (>= 0.19, < 2.0)
|
|
20
|
+
builder (3.2.4)
|
|
21
|
+
childprocess (3.0.0)
|
|
22
|
+
coderay (1.1.3)
|
|
23
|
+
colorize (0.8.1)
|
|
24
|
+
columnize (0.9.0)
|
|
25
|
+
contracts (0.16.1)
|
|
26
|
+
cucumber (8.0.0)
|
|
27
|
+
builder (~> 3.2, >= 3.2.4)
|
|
28
|
+
cucumber-ci-environment (~> 9.0, >= 9.0.4)
|
|
29
|
+
cucumber-core (~> 11.0, >= 11.0.0)
|
|
30
|
+
cucumber-cucumber-expressions (~> 15.1, >= 15.1.1)
|
|
31
|
+
cucumber-gherkin (~> 23.0, >= 23.0.1)
|
|
32
|
+
cucumber-html-formatter (~> 19.1, >= 19.1.0)
|
|
33
|
+
cucumber-messages (~> 18.0, >= 18.0.0)
|
|
34
|
+
diff-lcs (~> 1.5, >= 1.5.0)
|
|
35
|
+
mime-types (~> 3.4, >= 3.4.1)
|
|
36
|
+
multi_test (~> 1.1, >= 1.1.0)
|
|
37
|
+
sys-uname (~> 1.2, >= 1.2.2)
|
|
38
|
+
cucumber-ci-environment (9.0.4)
|
|
39
|
+
cucumber-core (11.0.0)
|
|
40
|
+
cucumber-gherkin (~> 23.0, >= 23.0.1)
|
|
41
|
+
cucumber-messages (~> 18.0, >= 18.0.0)
|
|
42
|
+
cucumber-tag-expressions (~> 4.1, >= 4.1.0)
|
|
43
|
+
cucumber-cucumber-expressions (15.2.0)
|
|
44
|
+
cucumber-gherkin (23.0.1)
|
|
45
|
+
cucumber-messages (~> 18.0, >= 18.0.0)
|
|
46
|
+
cucumber-html-formatter (19.2.0)
|
|
47
|
+
cucumber-messages (~> 18.0, >= 18.0.0)
|
|
48
|
+
cucumber-messages (18.0.0)
|
|
49
|
+
cucumber-tag-expressions (4.1.0)
|
|
50
|
+
diff-lcs (1.5.0)
|
|
51
|
+
ffi (1.15.5)
|
|
52
|
+
formatador (1.1.0)
|
|
53
|
+
growl (1.0.3)
|
|
54
|
+
guard (2.18.0)
|
|
55
|
+
formatador (>= 0.2.4)
|
|
56
|
+
listen (>= 2.7, < 4.0)
|
|
57
|
+
lumberjack (>= 1.0.12, < 2.0)
|
|
58
|
+
nenv (~> 0.1)
|
|
59
|
+
notiffany (~> 0.0)
|
|
60
|
+
pry (>= 0.13.0)
|
|
61
|
+
shellany (~> 0.0)
|
|
62
|
+
thor (>= 0.18.1)
|
|
63
|
+
guard-compat (1.2.1)
|
|
64
|
+
guard-minitest (2.4.6)
|
|
65
|
+
guard-compat (~> 1.2)
|
|
66
|
+
minitest (>= 3.0)
|
|
67
|
+
hashie (5.0.0)
|
|
68
|
+
linecache (1.3.1)
|
|
39
69
|
linecache19 (0.5.12)
|
|
40
70
|
ruby_core_source (>= 0.1.4)
|
|
41
|
-
listen (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
71
|
+
listen (3.7.1)
|
|
72
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
73
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
|
74
|
+
lumberjack (1.2.8)
|
|
75
|
+
method_source (1.0.0)
|
|
76
|
+
mime-types (3.4.1)
|
|
77
|
+
mime-types-data (~> 3.2015)
|
|
78
|
+
mime-types-data (3.2022.0105)
|
|
79
|
+
minitar (0.8)
|
|
80
|
+
minitar-cli (0.8)
|
|
81
|
+
minitar (~> 0.8.0)
|
|
82
|
+
powerbar (~> 1.0)
|
|
83
|
+
minitest (5.16.1)
|
|
84
|
+
multi_test (1.1.0)
|
|
85
|
+
nenv (0.3.0)
|
|
86
|
+
notiffany (0.1.3)
|
|
87
|
+
nenv (~> 0.1)
|
|
88
|
+
shellany (~> 0.0)
|
|
89
|
+
powerbar (1.0.18)
|
|
90
|
+
hashie (>= 1.1.0)
|
|
91
|
+
pry (0.14.1)
|
|
92
|
+
coderay (~> 1.1)
|
|
93
|
+
method_source (~> 1.0)
|
|
94
|
+
rake (13.0.6)
|
|
95
|
+
rb-fsevent (0.11.1)
|
|
96
|
+
rb-inotify (0.10.1)
|
|
97
|
+
ffi (~> 1.0)
|
|
98
|
+
rspec-expectations (3.11.0)
|
|
99
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
100
|
+
rspec-support (~> 3.11.0)
|
|
101
|
+
rspec-support (3.11.0)
|
|
59
102
|
ruby-debug (0.10.4)
|
|
60
103
|
columnize (>= 0.1)
|
|
61
104
|
ruby-debug-base (~> 0.10.4.0)
|
|
@@ -71,22 +114,29 @@ GEM
|
|
|
71
114
|
ruby-debug-base19 (>= 0.11.19)
|
|
72
115
|
ruby_core_source (0.1.5)
|
|
73
116
|
archive-tar-minitar (>= 0.5.2)
|
|
74
|
-
|
|
75
|
-
|
|
117
|
+
shellany (0.0.1)
|
|
118
|
+
sys-uname (1.2.2)
|
|
119
|
+
ffi (~> 1.1)
|
|
120
|
+
thor (0.20.3)
|
|
76
121
|
|
|
77
122
|
PLATFORMS
|
|
78
123
|
ruby
|
|
124
|
+
x86_64-darwin-19
|
|
79
125
|
|
|
80
126
|
DEPENDENCIES
|
|
81
127
|
aruba
|
|
82
|
-
bundler (~>
|
|
128
|
+
bundler (~> 2.0)
|
|
83
129
|
colorize
|
|
130
|
+
growl
|
|
84
131
|
guard
|
|
85
132
|
guard-minitest
|
|
86
133
|
minitest
|
|
87
134
|
pry
|
|
88
135
|
rake
|
|
89
|
-
rb-fsevent
|
|
136
|
+
rb-fsevent
|
|
90
137
|
ruby-debug (>= 0.10.3)
|
|
91
138
|
ruby-debug19
|
|
92
139
|
rubyc!
|
|
140
|
+
|
|
141
|
+
BUNDLED WITH
|
|
142
|
+
2.3.17
|
data/README.md
CHANGED
|
@@ -16,7 +16,7 @@ Rubys supports some Enumerable methods applied to each line to the stdin stream.
|
|
|
16
16
|
|
|
17
17
|
Rubyc gives you the __line__ variable and ıts shorter alias __l__ to represent the current line on which Rubyc is iterating.
|
|
18
18
|
|
|
19
|
-
The __index__ and __lnum__
|
|
19
|
+
The __index__ and __lnum__ variables are also available to you. The __index__ variable represents the index of the line starting at 0 whereas __lnum__ is the line number which starts at 1.
|
|
20
20
|
## Examples
|
|
21
21
|
### Use Case: Upcasing
|
|
22
22
|
Upcase what is comming from stdin.
|
|
@@ -48,7 +48,7 @@ The Rubyc way:
|
|
|
48
48
|
``` bash
|
|
49
49
|
$ cat file1.csv | rubyc map -r csv 'csv = CSV.parse_line(l); [csv[1], csv[2]]'
|
|
50
50
|
```
|
|
51
|
-
NOTE: -r is an alias for the --require= option indicates the gems needed for the exectution of the script. Note that for multiple require,
|
|
51
|
+
NOTE: -r is an alias for the --require= option indicates the gems needed for the exectution of the script. Note that for multiple require, gem names must me separated with a colon '__:__'.
|
|
52
52
|
|
|
53
53
|
### Use Case: Colorize Stderr
|
|
54
54
|
The shell way:
|
|
@@ -77,16 +77,23 @@ phone_numbers: 47
|
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
You can see all the currently supported methods by calling rubyc's help:
|
|
81
81
|
```
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
82
|
+
$ rubyc help
|
|
83
|
+
Tasks:
|
|
84
|
+
rubyc compact # Remove empty lines
|
|
85
|
+
rubyc count_by BLOCK # Count the number of lines that have the same property. The property is defined by the return value of the gi...
|
|
86
|
+
rubyc grep BLOCK # Enumerable#grep
|
|
87
|
+
rubyc help [TASK] # Describe available tasks or one specific task
|
|
88
|
+
rubyc map BLOCK # Enumerable#map
|
|
89
|
+
rubyc merge NB_LINES [SEPARATOR] # Merge NB_LINES consecutive lines using SEPARATOR. If SEPARATOR is not given ',' is used
|
|
90
|
+
rubyc reject BLOCK # Enumerable#reject
|
|
91
|
+
rubyc scan MATCHER BLOCK # String#scan
|
|
92
|
+
rubyc select BLOCK # Enumerable#select
|
|
93
|
+
rubyc sort_by BLOCK # Enumerable#sort_by
|
|
94
|
+
rubyc sum BLOCK # Active Support Enumerable#sum
|
|
95
|
+
rubyc uniq # Enumerable#uniq
|
|
96
|
+
|
|
97
|
+
Options:
|
|
98
|
+
-r, [--require=REQUIRE]
|
|
92
99
|
```
|
data/Rakefile
CHANGED
|
@@ -6,11 +6,20 @@ require 'rake/testtask'
|
|
|
6
6
|
require 'cucumber'
|
|
7
7
|
require 'cucumber/rake/task'
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
require "minitest/test_task"
|
|
10
|
+
|
|
11
|
+
Minitest::TestTask.create # named test, sensible defaults
|
|
12
|
+
|
|
13
|
+
# or more explicitly:
|
|
14
|
+
|
|
15
|
+
Minitest::TestTask.create(:test) do |t|
|
|
16
|
+
t.libs << "spec"
|
|
17
|
+
t.libs << "lib"
|
|
18
|
+
t.warning = false
|
|
19
|
+
t.test_globs = ["test/**/*_spec.rb"]
|
|
12
20
|
end
|
|
13
21
|
|
|
22
|
+
|
|
14
23
|
Cucumber::Rake::Task.new(:features) do |t|
|
|
15
24
|
t.fork = false
|
|
16
25
|
end
|
data/lib/rubyc/cli.rb
CHANGED
|
@@ -1,32 +1,35 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
1
|
+
require "yaml"
|
|
2
|
+
require "thor"
|
|
3
|
+
require "rubyc/core_extensions"
|
|
4
4
|
|
|
5
5
|
module Rubyc
|
|
6
6
|
class CLI < Thor
|
|
7
|
-
class_option :require, :aliases =>
|
|
8
|
-
|
|
7
|
+
class_option :require, :aliases => "-r"
|
|
8
|
+
class_option :sync, :type => :boolean, :default => false, :aliases => "-s", :banner => "Synchronize stdout"
|
|
9
|
+
|
|
9
10
|
def initialize(*args)
|
|
10
11
|
super
|
|
11
12
|
libs = options[:require] ? options[:require].strip.split(":") : []
|
|
12
|
-
libs.each {|lib| require lib}
|
|
13
|
-
$stdout.sync =
|
|
13
|
+
libs.each { |lib| require lib }
|
|
14
|
+
$stdout.sync = options[:sync]
|
|
14
15
|
end
|
|
15
|
-
|
|
16
|
+
|
|
16
17
|
def help(*args)
|
|
17
|
-
super
|
|
18
|
+
super(*args)
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
desc "map BLOCK", "Enumerable#map"
|
|
21
|
-
long_desc "THIS IS A LONG DESCRIPTION"
|
|
22
|
+
long_desc "THIS IS A LONG DESCRIPTION"
|
|
23
|
+
|
|
22
24
|
def map(code)
|
|
23
|
-
proc = eval(
|
|
25
|
+
proc = eval("Proc.new{|line,index| l = line; lnum = index + 1;#{code}}")
|
|
24
26
|
$stdin.each_line.each_with_index do |line, index|
|
|
25
27
|
puts proc.call(line.chomp, index).to_s
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
desc "sum BLOCK", "Active Support Enumerable#sum"
|
|
32
|
+
|
|
30
33
|
def sum(code = nil)
|
|
31
34
|
code ||= "line"
|
|
32
35
|
proc = eval("Proc.new{|line| l = line; #{code}}")
|
|
@@ -37,22 +40,25 @@ module Rubyc
|
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
desc "select BLOCK", "Enumerable#select"
|
|
43
|
+
|
|
40
44
|
def select(code)
|
|
41
|
-
proc = eval(
|
|
45
|
+
proc = eval("Proc.new{|line,index| l = line; lnum = index + 1;#{code}}")
|
|
42
46
|
$stdin.each_line.each_with_index do |line, index|
|
|
43
47
|
puts line if proc.call(line.chomp, index)
|
|
44
48
|
end
|
|
45
49
|
end
|
|
46
50
|
|
|
47
51
|
desc "reject BLOCK", "Enumerable#reject"
|
|
52
|
+
|
|
48
53
|
def reject(code)
|
|
49
|
-
proc = eval(
|
|
54
|
+
proc = eval("Proc.new{|line,index| l = line; lnum = index + 1;#{code}}")
|
|
50
55
|
$stdin.each_line.each_with_index do |line, index|
|
|
51
56
|
puts line unless proc.call(line.chomp, index)
|
|
52
57
|
end
|
|
53
58
|
end
|
|
54
|
-
|
|
59
|
+
|
|
55
60
|
desc "count_by BLOCK", "Count the number of lines that have the same property. The property is defined by the return value of the given the block"
|
|
61
|
+
|
|
56
62
|
def count_by(code = nil)
|
|
57
63
|
code ||= "line"
|
|
58
64
|
proc = eval("Proc.new{|line| l = line; #{code}}")
|
|
@@ -63,6 +69,7 @@ module Rubyc
|
|
|
63
69
|
end
|
|
64
70
|
|
|
65
71
|
desc "sort_by BLOCK", "Enumerable#sort_by"
|
|
72
|
+
|
|
66
73
|
def sort_by(code = nil)
|
|
67
74
|
code ||= "line"
|
|
68
75
|
proc = eval("Proc.new{|line| l = line; #{code}}")
|
|
@@ -73,6 +80,7 @@ module Rubyc
|
|
|
73
80
|
end
|
|
74
81
|
|
|
75
82
|
desc "grep BLOCK", "Enumerable#grep"
|
|
83
|
+
|
|
76
84
|
def grep(pattern, code = nil)
|
|
77
85
|
pattern = eval(pattern)
|
|
78
86
|
proc = code ? eval("Proc.new{|line| l = line; #{code}}") : nil
|
|
@@ -80,6 +88,7 @@ module Rubyc
|
|
|
80
88
|
end
|
|
81
89
|
|
|
82
90
|
desc "scan MATCHER BLOCK", "String#scan"
|
|
91
|
+
|
|
83
92
|
def scan(pattern, code = nil)
|
|
84
93
|
pattern = eval(pattern)
|
|
85
94
|
proc = code ? eval("Proc.new{|*match| m = match; #{code}}") : nil
|
|
@@ -88,18 +97,32 @@ module Rubyc
|
|
|
88
97
|
end
|
|
89
98
|
|
|
90
99
|
desc "uniq", "Enumerable#uniq"
|
|
100
|
+
|
|
91
101
|
def uniq
|
|
92
102
|
puts $stdin.to_a.uniq
|
|
93
103
|
end
|
|
94
104
|
|
|
105
|
+
desc "uniq_by BLOCK", "TODO"
|
|
106
|
+
|
|
107
|
+
def uniq_by(code = nil)
|
|
108
|
+
code ||= "line"
|
|
109
|
+
proc = eval("Proc.new{|line| l = line; #{code}}")
|
|
110
|
+
counts = $stdin.uniq_by do |line|
|
|
111
|
+
proc.call(line.chomp)
|
|
112
|
+
end
|
|
113
|
+
puts counts
|
|
114
|
+
end
|
|
115
|
+
|
|
95
116
|
desc "compact", "Remove empty lines"
|
|
117
|
+
|
|
96
118
|
def compact
|
|
97
|
-
$stdin.each{ |line| puts line if line.chomp! != ""}
|
|
119
|
+
$stdin.each { |line| puts line if line.chomp! != "" }
|
|
98
120
|
end
|
|
99
121
|
|
|
100
122
|
desc "merge NB_LINES [SEPARATOR]", "Merge NB_LINES consecutive lines using SEPARATOR. If SEPARATOR is not given \',\' is used"
|
|
123
|
+
|
|
101
124
|
def merge(nb_lines, sep = ",")
|
|
102
|
-
$stdin.each_slice(nb_lines.to_i){|chunk| puts chunk.map{|elem| elem.strip}.join(sep)}
|
|
125
|
+
$stdin.each_slice(nb_lines.to_i) { |chunk| puts chunk.map { |elem| elem.strip }.join(sep) }
|
|
103
126
|
end
|
|
104
127
|
end
|
|
105
128
|
end
|
|
@@ -8,22 +8,11 @@ module Enumerable
|
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
memo[key] ||= []
|
|
16
|
-
memo[key] << elem
|
|
11
|
+
def uniq_by
|
|
12
|
+
each_with_index.inject({}) do |memo, (obj, index)|
|
|
13
|
+
val, data = yield obj
|
|
14
|
+
memo[val] ||= data
|
|
17
15
|
memo
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# File activesupport/lib/active_support/core_ext/enumerable.rb, line 57
|
|
22
|
-
def sum(identity = 0, &block)
|
|
23
|
-
if block_given?
|
|
24
|
-
map(&block).sum(identity)
|
|
25
|
-
else
|
|
26
|
-
inject { |sum, element| sum + element } || identity
|
|
27
|
-
end
|
|
16
|
+
end.values
|
|
28
17
|
end
|
|
29
18
|
end
|
data/lib/rubyc/version.rb
CHANGED
data/rubyc.gemspec
CHANGED
|
@@ -7,15 +7,15 @@ Gem::Specification.new do |s|
|
|
|
7
7
|
s.version = Rubyc::VERSION
|
|
8
8
|
s.platform = Gem::Platform::RUBY
|
|
9
9
|
s.authors = ["Martin Chabot"]
|
|
10
|
+
s.licenses = ["MIT"]
|
|
10
11
|
s.email = ["chabotm@gmail.com"]
|
|
11
12
|
s.homepage = "https://github.com/martinos/rubyc"
|
|
12
13
|
s.summary = %q{Adds Ruby's powers to the command line}
|
|
13
14
|
s.description = %q{Adds Ruby's powers to the command line}
|
|
14
|
-
s.rubyforge_project = "rubyc"
|
|
15
15
|
|
|
16
16
|
s.add_dependency "thor", "~> 0.15"
|
|
17
17
|
s.add_development_dependency 'rake'
|
|
18
|
-
s.add_development_dependency "bundler", "~>
|
|
18
|
+
s.add_development_dependency "bundler", "~> 2.0"
|
|
19
19
|
s.add_development_dependency 'minitest'
|
|
20
20
|
s.add_development_dependency 'aruba'
|
|
21
21
|
s.add_development_dependency 'colorize'
|
data/spec/cli_spec.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
require "rubyc/cli"
|
|
3
3
|
|
|
4
4
|
include SpecHelper
|
|
5
5
|
|
|
@@ -12,72 +12,94 @@ describe "A rubyc cli" do
|
|
|
12
12
|
out_str = local_io("first\nsecond") do
|
|
13
13
|
@cli.map('"LineNum=#{lnum} Index=#{index}: #{l.upcase}"')
|
|
14
14
|
end
|
|
15
|
-
out_str.must_equal "LineNum=1 Index=0: FIRST\nLineNum=2 Index=1: SECOND\n"
|
|
15
|
+
_(out_str).must_equal "LineNum=1 Index=0: FIRST\nLineNum=2 Index=1: SECOND\n"
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "should select line from stdin and send it to stdout" do
|
|
19
19
|
out_str = local_io("John Doe\nBlack Jack\nDr Dolittle\nCracker Jack") do
|
|
20
|
-
@cli.select(
|
|
20
|
+
@cli.select("l =~ /Jack/ && lnum == 2 && index == 1")
|
|
21
21
|
end
|
|
22
|
-
out_str.must_equal "Black Jack\n"
|
|
22
|
+
_(out_str).must_equal "Black Jack\n"
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
it "should reject line from stdin and send it to stdout" do
|
|
26
26
|
out_str = local_io("John Doe\nBlack Jack\nDr Dolittle\nCracker Jack") do
|
|
27
|
-
@cli.reject(
|
|
27
|
+
@cli.reject("l =~ /Jack/ && lnum == 2 && index == 1")
|
|
28
28
|
end
|
|
29
|
-
out_str.must_equal "John Doe\nDr Dolittle\nCracker Jack\n"
|
|
29
|
+
_(out_str).must_equal "John Doe\nDr Dolittle\nCracker Jack\n"
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "should sum line from stdin and send it to stdout" do
|
|
33
33
|
out_str = local_io("1\n2\nthird\n4") do
|
|
34
|
-
@cli.sum(
|
|
34
|
+
@cli.sum("l.to_i * 2")
|
|
35
35
|
end
|
|
36
|
-
out_str.must_equal "14\n"
|
|
36
|
+
_(out_str).must_equal "14\n"
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
it "should sort by stdin and send the result to stdout" do
|
|
40
40
|
out_str = local_io("a\nbbb\ncc\ndddd") do
|
|
41
|
-
@cli.sort_by(
|
|
41
|
+
@cli.sort_by("l.length")
|
|
42
42
|
end
|
|
43
|
-
out_str.must_equal "a\ncc\nbbb\ndddd\n"
|
|
43
|
+
_(out_str).must_equal "a\ncc\nbbb\ndddd\n"
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
it "should grep stdin and send the result to stdout" do
|
|
47
47
|
out_str = local_io("bbbb\nbbb\ncc\ndddd") do
|
|
48
|
-
@cli.grep(
|
|
48
|
+
@cli.grep("/^b/", "l.upcase")
|
|
49
49
|
end
|
|
50
|
-
out_str.must_equal "BBBB\nBBB\n"
|
|
50
|
+
_(out_str).must_equal "BBBB\nBBB\n"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "should count_by an algorithm and output to stdout" do
|
|
54
54
|
out_str = local_io("bbbb\nbbb\ncc\ndddd") do
|
|
55
|
-
@cli.count_by(
|
|
56
|
-
end
|
|
57
|
-
expected = {"bb" => 2, "cc" => 1, "dd" => 1}
|
|
55
|
+
@cli.count_by("l =~ /^(..)/;$1")
|
|
56
|
+
end
|
|
57
|
+
expected = { "bb" => 2, "cc" => 1, "dd" => 1 }
|
|
58
58
|
|
|
59
|
-
YAML.load(out_str).must_equal expected
|
|
59
|
+
_(YAML.load(out_str)).must_equal expected
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it "should remove empty lines from stdin and output to stdout" do
|
|
63
|
-
out_str = local_io("bbbb\n\ncc\n") do
|
|
63
|
+
out_str = local_io("bbbb\n\ncc\n") do
|
|
64
64
|
@cli.compact
|
|
65
65
|
end
|
|
66
|
-
out_str.must_equal "bbbb\ncc\n"
|
|
66
|
+
_(out_str).must_equal "bbbb\ncc\n"
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it "should keep unique lines from stdin and output them to stdout" do
|
|
70
70
|
out_str = local_io("1\n2\n2\n3") do
|
|
71
71
|
@cli.uniq
|
|
72
72
|
end
|
|
73
|
-
out_str.must_equal "1\n2\n3\n"
|
|
73
|
+
_(out_str).must_equal "1\n2\n3\n"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "should keep unique records grouped by a certain algorithm" do
|
|
77
|
+
out_str = local_io("aaaCoco\nbbbMomo\naaaBato\nbbbToto") do
|
|
78
|
+
@cli.uniq_by("[l[0,3], l[3..-1]]")
|
|
79
|
+
end
|
|
80
|
+
# We test this way since uniq_by uses hashes and on Ruby 1.8.7 hashes are not ordered
|
|
81
|
+
out_array = out_str.split("\n").sort
|
|
82
|
+
_(out_array).must_equal ["Coco", "Momo"]
|
|
74
83
|
end
|
|
75
84
|
|
|
76
85
|
it "should merge lines in group of n output them to stdout" do
|
|
77
86
|
out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
|
|
78
87
|
@cli.merge(3, ",")
|
|
79
88
|
end
|
|
80
|
-
out_str.must_equal "1,2,3\n4,5,6\n7,8\n"
|
|
89
|
+
_(out_str).must_equal "1,2,3\n4,5,6\n7,8\n"
|
|
81
90
|
end
|
|
82
|
-
end
|
|
83
91
|
|
|
92
|
+
it "should merge lines in group of n output them to stdout" do
|
|
93
|
+
out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
|
|
94
|
+
@cli.merge(3, ",")
|
|
95
|
+
end
|
|
96
|
+
_(out_str).must_equal "1,2,3\n4,5,6\n7,8\n"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "should merge lines in group of n output them to stdout" do
|
|
100
|
+
out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
|
|
101
|
+
@cli.merge(3, ",")
|
|
102
|
+
end
|
|
103
|
+
_(out_str).must_equal "1,2,3\n4,5,6\n7,8\n"
|
|
104
|
+
end
|
|
105
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
$:.unshift File.expand_path(
|
|
2
|
-
$:.unshift File.expand_path(
|
|
3
|
-
ROOT_PATH = File.expand_path(
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require 'rubyc/colorize_stack'
|
|
1
|
+
$:.unshift File.expand_path("..", __FILE__)
|
|
2
|
+
$:.unshift File.expand_path("../../lib", __FILE__)
|
|
3
|
+
ROOT_PATH = File.expand_path("../..", __FILE__)
|
|
4
|
+
require "rubyc"
|
|
5
|
+
require "minitest/spec"
|
|
6
|
+
require "minitest/autorun"
|
|
8
7
|
|
|
9
8
|
module SpecHelper
|
|
10
9
|
def local_io(in_str)
|
|
11
|
-
old_stdin, old_stdout = $stdin, $stdout
|
|
10
|
+
old_stdin, old_stdout = $stdin, $stdout
|
|
12
11
|
$stdin = StringIO.new(in_str)
|
|
13
12
|
$stdout = StringIO.new
|
|
14
13
|
yield
|
|
@@ -17,4 +16,3 @@ module SpecHelper
|
|
|
17
16
|
out_str
|
|
18
17
|
end
|
|
19
18
|
end
|
|
20
|
-
MiniTest::Unit.output.extend MiniTest::ColorizeStack
|
metadata
CHANGED
|
@@ -1,82 +1,99 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubyc
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.3.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Martin Chabot
|
|
9
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2022-06-29 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
14
|
name: thor
|
|
16
|
-
requirement:
|
|
17
|
-
none: false
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
16
|
requirements:
|
|
19
|
-
- - ~>
|
|
17
|
+
- - "~>"
|
|
20
18
|
- !ruby/object:Gem::Version
|
|
21
19
|
version: '0.15'
|
|
22
20
|
type: :runtime
|
|
23
21
|
prerelease: false
|
|
24
|
-
version_requirements:
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0.15'
|
|
25
27
|
- !ruby/object:Gem::Dependency
|
|
26
28
|
name: rake
|
|
27
|
-
requirement:
|
|
28
|
-
none: false
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
30
|
requirements:
|
|
30
|
-
- -
|
|
31
|
+
- - ">="
|
|
31
32
|
- !ruby/object:Gem::Version
|
|
32
33
|
version: '0'
|
|
33
34
|
type: :development
|
|
34
35
|
prerelease: false
|
|
35
|
-
version_requirements:
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
36
41
|
- !ruby/object:Gem::Dependency
|
|
37
42
|
name: bundler
|
|
38
|
-
requirement:
|
|
39
|
-
none: false
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
44
|
requirements:
|
|
41
|
-
- - ~>
|
|
45
|
+
- - "~>"
|
|
42
46
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '
|
|
47
|
+
version: '2.0'
|
|
44
48
|
type: :development
|
|
45
49
|
prerelease: false
|
|
46
|
-
version_requirements:
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '2.0'
|
|
47
55
|
- !ruby/object:Gem::Dependency
|
|
48
56
|
name: minitest
|
|
49
|
-
requirement:
|
|
50
|
-
none: false
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
51
58
|
requirements:
|
|
52
|
-
- -
|
|
59
|
+
- - ">="
|
|
53
60
|
- !ruby/object:Gem::Version
|
|
54
61
|
version: '0'
|
|
55
62
|
type: :development
|
|
56
63
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
58
69
|
- !ruby/object:Gem::Dependency
|
|
59
70
|
name: aruba
|
|
60
|
-
requirement:
|
|
61
|
-
none: false
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
62
72
|
requirements:
|
|
63
|
-
- -
|
|
73
|
+
- - ">="
|
|
64
74
|
- !ruby/object:Gem::Version
|
|
65
75
|
version: '0'
|
|
66
76
|
type: :development
|
|
67
77
|
prerelease: false
|
|
68
|
-
version_requirements:
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: colorize
|
|
71
|
-
requirement:
|
|
72
|
-
none: false
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
73
86
|
requirements:
|
|
74
|
-
- -
|
|
87
|
+
- - ">="
|
|
75
88
|
- !ruby/object:Gem::Version
|
|
76
89
|
version: '0'
|
|
77
90
|
type: :development
|
|
78
91
|
prerelease: false
|
|
79
|
-
version_requirements:
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
80
97
|
description: Adds Ruby's powers to the command line
|
|
81
98
|
email:
|
|
82
99
|
- chabotm@gmail.com
|
|
@@ -85,7 +102,7 @@ executables:
|
|
|
85
102
|
extensions: []
|
|
86
103
|
extra_rdoc_files: []
|
|
87
104
|
files:
|
|
88
|
-
- .gitignore
|
|
105
|
+
- ".gitignore"
|
|
89
106
|
- Gemfile
|
|
90
107
|
- Gemfile.lock
|
|
91
108
|
- Guardfile
|
|
@@ -102,42 +119,33 @@ files:
|
|
|
102
119
|
- features/support/env.rb
|
|
103
120
|
- lib/rubyc.rb
|
|
104
121
|
- lib/rubyc/cli.rb
|
|
105
|
-
- lib/rubyc/colorize_stack.rb
|
|
106
122
|
- lib/rubyc/core_extensions.rb
|
|
107
123
|
- lib/rubyc/version.rb
|
|
108
124
|
- rubyc.gemspec
|
|
109
125
|
- spec/cli_spec.rb
|
|
110
|
-
- spec/colorize_stack_spec.rb
|
|
111
126
|
- spec/spec_helper.rb
|
|
112
127
|
homepage: https://github.com/martinos/rubyc
|
|
113
|
-
licenses:
|
|
114
|
-
|
|
128
|
+
licenses:
|
|
129
|
+
- MIT
|
|
130
|
+
metadata: {}
|
|
131
|
+
post_install_message:
|
|
115
132
|
rdoc_options: []
|
|
116
133
|
require_paths:
|
|
117
134
|
- lib
|
|
118
135
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
|
-
none: false
|
|
120
136
|
requirements:
|
|
121
|
-
- -
|
|
137
|
+
- - ">="
|
|
122
138
|
- !ruby/object:Gem::Version
|
|
123
139
|
version: '0'
|
|
124
|
-
segments:
|
|
125
|
-
- 0
|
|
126
|
-
hash: -157925569780101153
|
|
127
140
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
|
-
none: false
|
|
129
141
|
requirements:
|
|
130
|
-
- -
|
|
142
|
+
- - ">="
|
|
131
143
|
- !ruby/object:Gem::Version
|
|
132
144
|
version: '0'
|
|
133
|
-
segments:
|
|
134
|
-
- 0
|
|
135
|
-
hash: -157925569780101153
|
|
136
145
|
requirements: []
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
specification_version: 3
|
|
146
|
+
rubygems_version: 3.1.2
|
|
147
|
+
signing_key:
|
|
148
|
+
specification_version: 4
|
|
141
149
|
summary: Adds Ruby's powers to the command line
|
|
142
150
|
test_files:
|
|
143
151
|
- features/fixtures/file1.csv
|
|
@@ -148,5 +156,4 @@ test_files:
|
|
|
148
156
|
- features/step_definitions/rubyc_steps.rb
|
|
149
157
|
- features/support/env.rb
|
|
150
158
|
- spec/cli_spec.rb
|
|
151
|
-
- spec/colorize_stack_spec.rb
|
|
152
159
|
- spec/spec_helper.rb
|
data/lib/rubyc/colorize_stack.rb
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
module MiniTest
|
|
2
|
-
# http://blog.macromates.com/2007/the-textmate-url-scheme/
|
|
3
|
-
module ColorizeStack
|
|
4
|
-
def write(str = "")
|
|
5
|
-
str.each_line do |line|
|
|
6
|
-
super(colorize_line(line))
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def colorize_line(line)
|
|
11
|
-
red = "\e[31m"
|
|
12
|
-
clear = "\e[0m"
|
|
13
|
-
green = "\e[32m"
|
|
14
|
-
blue = "\e[34m"
|
|
15
|
-
magenta = "\e[35m"
|
|
16
|
-
clear = "\e[0m"
|
|
17
|
-
# test_0001_should_map_stdin_to_stdout(A rubyc cli) [./spec/cli_spec.rb:16]:
|
|
18
|
-
# /Users/martinchabot/dev/my_gems/rubyc/spec/cli_spec.rb:16:in `test_0001_should_map_stdin_to_stdout'
|
|
19
|
-
url_regex = /(.*?)([.\w\/]*.rb):(\d+)(.*)/
|
|
20
|
-
if line =~ url_regex
|
|
21
|
-
prefix, file_name, line_number, suffix = $1, $2, $3, $4
|
|
22
|
-
if File.exist? file_name
|
|
23
|
-
full_path = File.expand_path(file_name)
|
|
24
|
-
app_trace = full_path.match(Dir.pwd) && full_path !~ /vendor/
|
|
25
|
-
new_line = "#{prefix}#{blue}txmt://open?url=file://#{File.dirname(full_path)}/#{clear}#{red if app_trace }#{File.basename(full_path)}#{clear if app_trace}&line=#{line_number}#{suffix}\n"
|
|
26
|
-
else
|
|
27
|
-
new_line = line
|
|
28
|
-
end
|
|
29
|
-
else
|
|
30
|
-
new_line = line
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
data/spec/colorize_stack_spec.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
require 'stringio'
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe MiniTest::ColorizeStack do
|
|
6
|
-
it 'shoud colorize IO' do
|
|
7
|
-
str = <<EOF
|
|
8
|
-
test_0003_should_return_the_value_from_on_key(AProductionBafFileSpec::AStructureSpec):
|
|
9
|
-
RuntimeError: THIS IS A STACKTRACE TEST
|
|
10
|
-
./lib/rubyc/colorize_stack.rb:19:in `extract_data_from_raw'
|
|
11
|
-
./lib/rubyc/colorize_stack.rb:9:in `initialize'
|
|
12
|
-
./lib/rubyc/colorize_stack.rb:44:in `new'
|
|
13
|
-
./lib/rubyc/colorize_stack.rb:44:in `parse'
|
|
14
|
-
./lib/rubyc/core_extensions.rb:18:in `parse'
|
|
15
|
-
./lib/rubyc/core_extensions.rb:17:in `map'
|
|
16
|
-
./lib/rubyc/core_extensions.rb:17:in `parse'
|
|
17
|
-
./lib/rubyc/core_extensions.rb:26:in `parse'
|
|
18
|
-
./lib/rubyc/core_extensions.rb:39:in `scanned_string'
|
|
19
|
-
./lib/rubyc/core_extensions.rb:16:in `parse'
|
|
20
|
-
./lib/rubyc/core_extensions.rb:27:in `read'
|
|
21
|
-
./spec/spec_helper.rb:8
|
|
22
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/spec.rb:118:in `instance_eval'
|
|
23
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/spec.rb:118:in `setup'
|
|
24
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:713:in `run'
|
|
25
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:675:in `run_test_suites'
|
|
26
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:669:in `each'
|
|
27
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:669:in `run_test_suites'
|
|
28
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:668:in `each'
|
|
29
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:668:in `run_test_suites'
|
|
30
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:632:in `run'
|
|
31
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352/gems/minitest-1.7.2/lib/minitest/unit.rb:524:in `autorun'
|
|
32
|
-
/Users/martinos/.rvm/gems/ruby-1.8.7-p352@global/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5
|
|
33
|
-
|
|
34
|
-
5 tests, 0 assertions, 0 failures, 5 errors, 0 skips
|
|
35
|
-
EOF
|
|
36
|
-
out = StringIO.new
|
|
37
|
-
out.extend MiniTest::ColorizeStack
|
|
38
|
-
out.write(str)
|
|
39
|
-
str = out.string
|
|
40
|
-
red = "\e\\[31m"
|
|
41
|
-
clear = "\e\\[0m"
|
|
42
|
-
green = "\e\\[32m"
|
|
43
|
-
blue = "\e\\[34m"
|
|
44
|
-
magenta = "\e\\[35m"
|
|
45
|
-
str.must_match %r{txmt://open\?url=file:///(.*)rubyc/lib/rubyc/(.*)colorize_stack.rb(.*)line=19:in `extract_data_from_raw}
|
|
46
|
-
end
|
|
47
|
-
end
|