rubyc 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+