rubyc 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -9,14 +9,15 @@ platforms :mri_18 do
9
9
  end
10
10
 
11
11
  platforms :mri_19 do
12
- gem 'ruby-debug19'
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', '~> 0.9.1'
20
- # gem 'growl', '1.0.3'
21
- # gem 'ruby_gntp', '0.3.4'
21
+ gem 'rb-fsevent'
22
+ gem 'ruby_gntp'
22
23
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubyc (0.1.2)
4
+ rubyc (0.1.3)
5
5
  thor (~> 0.15)
6
6
 
7
7
  GEM
@@ -28,8 +28,10 @@ GEM
28
28
  ffi (1.1.5)
29
29
  gherkin (2.11.2)
30
30
  json (>= 1.4.6)
31
- guard (1.3.2)
31
+ guard (1.5.4)
32
32
  listen (>= 0.4.2)
33
+ lumberjack (>= 1.0.2)
34
+ pry (>= 0.9.10)
33
35
  thor (>= 0.14.6)
34
36
  guard-minitest (0.5.0)
35
37
  guard (>= 0.4)
@@ -38,7 +40,8 @@ GEM
38
40
  rbx-require-relative (> 0.0.4)
39
41
  linecache19 (0.5.12)
40
42
  ruby_core_source (>= 0.1.4)
41
- listen (0.5.1)
43
+ listen (0.5.3)
44
+ lumberjack (1.0.2)
42
45
  method_source (0.8)
43
46
  minitest (3.4.0)
44
47
  pry (0.9.10)
@@ -46,7 +49,7 @@ GEM
46
49
  method_source (~> 0.8)
47
50
  slop (~> 3.3.1)
48
51
  rake (0.9.2.2)
49
- rb-fsevent (0.9.1)
52
+ rb-fsevent (0.9.2)
50
53
  rbx-require-relative (0.0.9)
51
54
  rspec (2.11.0)
52
55
  rspec-core (~> 2.11.0)
@@ -71,6 +74,7 @@ GEM
71
74
  ruby-debug-base19 (>= 0.11.19)
72
75
  ruby_core_source (0.1.5)
73
76
  archive-tar-minitar (>= 0.5.2)
77
+ ruby_gntp (0.3.4)
74
78
  slop (3.3.3)
75
79
  thor (0.16.0)
76
80
 
@@ -86,7 +90,8 @@ DEPENDENCIES
86
90
  minitest
87
91
  pry
88
92
  rake
89
- rb-fsevent (~> 0.9.1)
93
+ rb-fsevent
90
94
  ruby-debug (>= 0.10.3)
91
95
  ruby-debug19
96
+ ruby_gntp
92
97
  rubyc!
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__ variable 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.
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, gems must me separated with a :.
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
- Here are the currently supported methods:
80
+ You can see all the currently supported methods by calling rubyc's help:
81
81
  ```
82
- compact # Remove empty lines
83
- count_by # Count the number of lines that have the same property. The property is defined by the return value of the given the block.
84
- grep # Enumerable#grep the first argument is the pattern matcher and the second is the block executed on each line.
85
- map # Apply Enumerable#map on each line and outputs the results of the block by calling to_s on the returned object.
86
- merge # Merge consecutive lines
87
- scan # String#scan
88
- select # Enumerable#select
89
- sort_by # Emumerable#sort_by
90
- sum # Rails Enumerable#sum
91
- uniq # uniq
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/lib/rubyc/cli.rb CHANGED
@@ -92,6 +92,16 @@ module Rubyc
92
92
  puts $stdin.to_a.uniq
93
93
  end
94
94
 
95
+ desc "uniq_by BLOCK", "TODO"
96
+ def uniq_by(code = nil)
97
+ code ||= "line"
98
+ proc = eval("Proc.new{|line| l = line; #{code}}")
99
+ counts = $stdin.uniq_by do |line|
100
+ proc.call(line.chomp)
101
+ end
102
+ puts counts
103
+ end
104
+
95
105
  desc "compact", "Remove empty lines"
96
106
  def compact
97
107
  $stdin.each{ |line| puts line if line.chomp! != ""}
@@ -26,4 +26,11 @@ module Enumerable
26
26
  inject { |sum, element| sum + element } || identity
27
27
  end
28
28
  end
29
+
30
+ def uniq_by
31
+ each_with_object({}) do |obj, memo|
32
+ val, data = yield obj
33
+ memo[val] ||= data
34
+ end.values
35
+ end
29
36
  end
data/lib/rubyc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rubyc
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
data/spec/cli_spec.rb CHANGED
@@ -73,6 +73,28 @@ describe "A rubyc cli" do
73
73
  out_str.must_equal "1\n2\n3\n"
74
74
  end
75
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
+ out_str.must_equal "Coco\nMomo\n"
81
+ end
82
+
83
+ it "should merge lines in group of n output them to stdout" do
84
+ out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
85
+ @cli.merge(3, ",")
86
+ end
87
+ out_str.must_equal "1,2,3\n4,5,6\n7,8\n"
88
+ end
89
+
90
+
91
+ it "should merge lines in group of n output them to stdout" do
92
+ out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
93
+ @cli.merge(3, ",")
94
+ end
95
+ out_str.must_equal "1,2,3\n4,5,6\n7,8\n"
96
+ end
97
+
76
98
  it "should merge lines in group of n output them to stdout" do
77
99
  out_str = local_io("1\n2\n3\n4\n5\n6\n7\n8") do
78
100
  @cli.merge(3, ",")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2012-12-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
- requirement: &70094492014140 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0.15'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70094492014140
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '0.15'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rake
27
- requirement: &70094492031300 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70094492031300
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: bundler
38
- requirement: &70094492026780 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '1.0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70094492026780
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: minitest
49
- requirement: &70094492040240 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70094492040240
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: aruba
60
- requirement: &70094492048360 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *70094492048360
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: colorize
71
- requirement: &70094492044480 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,7 +101,12 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *70094492044480
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  description: Adds Ruby's powers to the command line
81
111
  email:
82
112
  - chabotm@gmail.com
@@ -123,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
153
  version: '0'
124
154
  segments:
125
155
  - 0
126
- hash: -157925569780101153
156
+ hash: 3393431867051759750
127
157
  required_rubygems_version: !ruby/object:Gem::Requirement
128
158
  none: false
129
159
  requirements:
@@ -132,10 +162,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
162
  version: '0'
133
163
  segments:
134
164
  - 0
135
- hash: -157925569780101153
165
+ hash: 3393431867051759750
136
166
  requirements: []
137
167
  rubyforge_project: rubyc
138
- rubygems_version: 1.8.10
168
+ rubygems_version: 1.8.24
139
169
  signing_key:
140
170
  specification_version: 3
141
171
  summary: Adds Ruby's powers to the command line