rubyc 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rubyc.gemspec
4
+ gemspec
data/README.rdoc ADDED
@@ -0,0 +1,2 @@
1
+ = Description
2
+ Adds Ruby's powers to the command line
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+ Bundler.require(:default, :development)
4
+ require 'rake/testtask'
5
+
6
+ task :default => :test
7
+ Rake::TestTask.new do |t|
8
+ t.pattern = "spec/*_spec.rb"
9
+ end
10
+
data/bin/rubyc.rb ADDED
@@ -0,0 +1,82 @@
1
+ module ::Enumerable
2
+ def count_by
3
+ self.inject({}) do |memo, elem|
4
+ key = yield elem
5
+ memo[key] ||= 0
6
+ memo[key] += 1
7
+ memo
8
+ end
9
+ end
10
+
11
+ def group_by
12
+ self.inject({}) do |memo, elem|
13
+ key = yield elem
14
+ memo[key] ||= []
15
+ memo[key] << elem
16
+ memo
17
+ end
18
+ end
19
+
20
+ def sum(identity = 0, &block)
21
+ if block_given?
22
+ map(&block).sum(identity)
23
+ else
24
+ inject { |sum, element| sum + element } || identity
25
+ end
26
+ end
27
+ end
28
+
29
+ class Rubyc < Thor
30
+ desc :map, "Apply Enumerable#map on each line"
31
+ def map(code)
32
+ proc = eval( "Proc.new{|line| l = line; #{code}}" )
33
+ STDIN.map do |line|
34
+ puts proc.call(line).to_s
35
+ end
36
+ end
37
+
38
+ desc :sum, "Calculate the sum of Numeric expressed on each line"
39
+ def sum(code = nil)
40
+ code ||= "line"
41
+ proc = eval("Proc.new{|line| l = line; #{code}}")
42
+ sum = STDIN.sum do |line|
43
+ proc.call(line).to_f
44
+ end
45
+ puts sum
46
+ end
47
+
48
+ desc :select, "Apply Enumerable#select on each line"
49
+ def select(code)
50
+ proc = eval( "Proc.new{|line| l = line; #{code}}" )
51
+ STDIN.map do |line|
52
+ puts line if proc.call(line)
53
+ end
54
+ end
55
+
56
+ desc :count_by, "Count by"
57
+ def count_by(code = nil)
58
+ code ||= "line"
59
+ proc = eval( "Proc.new{|line| l = line; #{code}}" )
60
+ counts = STDIN.count_by do |line|
61
+ proc.call(line).chomp
62
+ end
63
+ puts counts.to_yaml
64
+ end
65
+
66
+ desc :uniq, "uniq"
67
+ def uniq
68
+ puts STDIN.to_a.uniq
69
+ end
70
+
71
+ desc :compact, "Remove empty lines"
72
+ def compact
73
+ puts STDIN.select{|line| line.strip != ""}
74
+ end
75
+
76
+ desc :merge, "Merge consecutive lines"
77
+ def merge(nb_lines, sep = ",")
78
+ STDIN.each_slice(nb_lines.to_i){|chunk| puts chunk.map{|elem| elem.strip}.join(sep) }
79
+ end
80
+ end
81
+
82
+ Rubyc.start
@@ -0,0 +1,3 @@
1
+ module Rubyc
2
+ VERSION = "0.0.1"
3
+ end
data/lib/rubyc.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Rubyc
2
+ # Your code goes here...
3
+ end
data/rubyc.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rubyc/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rubyc"
7
+ s.version = Rubyc::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Martin Chabot"]
10
+ s.email = ["chabotm@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{Adds Ruby's powers to the command line}
13
+ s.description = %q{Adds Ruby's powers to the command line}
14
+ s.rubyforge_project = "rubyc"
15
+
16
+ s.add_dependency "thor"
17
+ s.add_dependency "minitar"
18
+ s.add_development_dependency 'rake'
19
+ s.add_development_dependency("bundler", "~> 1.0")
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubyc
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Martin Chabot
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-18 00:00:00 -04:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ hash: 3
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ prerelease: false
32
+ type: :runtime
33
+ requirement: *id001
34
+ name: thor
35
+ - !ruby/object:Gem::Dependency
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ prerelease: false
46
+ type: :runtime
47
+ requirement: *id002
48
+ name: minitar
49
+ - !ruby/object:Gem::Dependency
50
+ version_requirements: &id003 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ prerelease: false
60
+ type: :development
61
+ requirement: *id003
62
+ name: rake
63
+ - !ruby/object:Gem::Dependency
64
+ version_requirements: &id004 !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ hash: 15
70
+ segments:
71
+ - 1
72
+ - 0
73
+ version: "1.0"
74
+ prerelease: false
75
+ type: :development
76
+ requirement: *id004
77
+ name: bundler
78
+ description: Adds Ruby's powers to the command line
79
+ email:
80
+ - chabotm@gmail.com
81
+ executables:
82
+ - rubyc.rb
83
+ extensions: []
84
+
85
+ extra_rdoc_files: []
86
+
87
+ files:
88
+ - .gitignore
89
+ - Gemfile
90
+ - README.rdoc
91
+ - Rakefile
92
+ - bin/rubyc.rb
93
+ - lib/rubyc.rb
94
+ - lib/rubyc/version.rb
95
+ - rubyc.gemspec
96
+ has_rdoc: true
97
+ homepage: ""
98
+ licenses: []
99
+
100
+ post_install_message:
101
+ rdoc_options: []
102
+
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ hash: 3
111
+ segments:
112
+ - 0
113
+ version: "0"
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ requirements: []
124
+
125
+ rubyforge_project: rubyc
126
+ rubygems_version: 1.6.2
127
+ signing_key:
128
+ specification_version: 3
129
+ summary: Adds Ruby's powers to the command line
130
+ test_files: []
131
+