ruby_ext 0.4.7 → 0.4.9
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/Rakefile +3 -4
- data/lib/rake_ext/project.rb +86 -0
- data/lib/rake_ext.rb +48 -47
- data/lib/ruby_ext/gems.rb +1 -0
- data/lib/ruby_ext.rb +4 -2
- data/spec/array_spec.rb +1 -1
- data/spec/declarative_cache_spec.rb +1 -1
- data/spec/deep_clone_spec.rb +1 -1
- data/spec/kernel_spec.rb +1 -1
- data/spec/module_spec.rb +1 -1
- data/spec/multiple_inheritance_spec.rb +1 -1
- data/spec/must_spec.rb +1 -1
- data/spec/observable2_spec.rb +26 -26
- data/spec/open_constructor_spec.rb +1 -1
- data/spec/open_object_spec.rb +1 -1
- data/spec/prepare_arguments_spec.rb +1 -1
- data/spec/should_spec.rb +1 -1
- data/spec/{helper.rb → spec_helper.rb} +0 -0
- data/spec/synchronize_spec.rb +1 -1
- metadata +12 -8
data/Rakefile
CHANGED
@@ -3,12 +3,11 @@ $LOAD_PATH << lib_dir unless $LOAD_PATH.include? lib_dir
|
|
3
3
|
|
4
4
|
require 'rake_ext'
|
5
5
|
|
6
|
-
|
6
|
+
project(
|
7
7
|
:name => "ruby_ext",
|
8
|
-
:version => "0.4.
|
8
|
+
:version => "0.4.9",
|
9
9
|
:summary => "Ruby language extensions",
|
10
10
|
|
11
11
|
:author => "Alexey Petrushin",
|
12
|
-
:homepage => "http://github.com/alexeypetrushin/ruby_ext"
|
13
|
-
:dependencies => %w(facets)
|
12
|
+
:homepage => "http://github.com/alexeypetrushin/ruby_ext"
|
14
13
|
)
|
@@ -0,0 +1,86 @@
|
|
1
|
+
#
|
2
|
+
# parse_dependencies_for
|
3
|
+
#
|
4
|
+
def parse_project_gemfile
|
5
|
+
required_gems = []
|
6
|
+
gem_file = "#{project_dir}/lib/#{project[:name]}/gems.rb"
|
7
|
+
if File.exist? gem_file
|
8
|
+
puts "Parsing gemfile #{gem_file}"
|
9
|
+
|
10
|
+
code = File.open(gem_file){|f| f.read}
|
11
|
+
|
12
|
+
stub_class = Class.new
|
13
|
+
stub_class.send(:define_method, :gem){|*args| required_gems << args}
|
14
|
+
stub = stub_class.new
|
15
|
+
stub.instance_eval code, __FILE__, __LINE__
|
16
|
+
end
|
17
|
+
required_gems
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
#
|
22
|
+
# Install gems
|
23
|
+
#
|
24
|
+
namespace :gem do
|
25
|
+
desc "Install gem required by project"
|
26
|
+
task :install do
|
27
|
+
gems = parse_project_gemfile
|
28
|
+
gems.each do |name, version|
|
29
|
+
puts "Installing gem #{name} #{version}"
|
30
|
+
%x(gem install #{name} #{"-v #{version}" if version})
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
#
|
37
|
+
# Gem Spec, for sample look at Rakefile
|
38
|
+
#
|
39
|
+
require 'rake/clean'
|
40
|
+
require 'rake/gempackagetask'
|
41
|
+
require 'tmpdir'
|
42
|
+
|
43
|
+
namespace :gem do
|
44
|
+
spec = Gem::Specification.new do |s|
|
45
|
+
gems = parse_project_gemfile
|
46
|
+
gems.each{|name_version| s.add_dependency *name_version}
|
47
|
+
|
48
|
+
options = project.clone
|
49
|
+
|
50
|
+
s.platform = options.delete(:platform) || Gem::Platform::RUBY
|
51
|
+
s.has_rdoc = options.delete(:has_rdoc) == nil ? false : true
|
52
|
+
s.require_path = options.delete(:lib) || "lib"
|
53
|
+
s.files = options.delete(:files) || (%w{Rakefile readme.md} + Dir.glob("{lib,spec}/**/*"))
|
54
|
+
|
55
|
+
# s.name = options[:name)
|
56
|
+
# s.author = options[:author)
|
57
|
+
# s.homepage = options[:homepage)
|
58
|
+
|
59
|
+
options.each{|k, v| s.send "#{k}=", v}
|
60
|
+
end
|
61
|
+
|
62
|
+
package_dir = Dir.tmpdir
|
63
|
+
Rake::GemPackageTask.new(spec) do |p|
|
64
|
+
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
65
|
+
p.need_zip = true
|
66
|
+
p.package_dir = package_dir
|
67
|
+
end
|
68
|
+
|
69
|
+
task :push do
|
70
|
+
gem_file = Dir.glob("#{package_dir}/#{project[:name]}*.gem").first
|
71
|
+
system "gem push #{gem_file}"
|
72
|
+
end
|
73
|
+
|
74
|
+
task :clean do
|
75
|
+
system "rm -r #{package_dir}"
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "List all gems required by project"
|
79
|
+
task :list do
|
80
|
+
puts "Gems required for #{project[:name]}:"
|
81
|
+
puts parse_project_gemfile
|
82
|
+
end
|
83
|
+
|
84
|
+
desc "Build and publish project as gem"
|
85
|
+
task :release => [:gem, :push, :clean]
|
86
|
+
end
|
data/lib/rake_ext.rb
CHANGED
@@ -2,7 +2,45 @@ require 'rake'
|
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Spec
|
6
|
+
#
|
7
|
+
begin
|
8
|
+
require 'rspec/core/rake_task'
|
9
|
+
task :default => :spec
|
10
|
+
|
11
|
+
RSpec::Core::RakeTask.new('spec') do |t|
|
12
|
+
t.pattern = "spec/**/[^_]*_spec.rb"
|
13
|
+
end
|
14
|
+
|
15
|
+
namespace :spec do
|
16
|
+
|
17
|
+
desc "Run RSpec code exapmples in isolated mode (every spec file in another Ruby process)"
|
18
|
+
task :isolated do
|
19
|
+
Dir.glob("spec/**/[^_]*_spec.rb").each do |spec_file|
|
20
|
+
Kernel.system "rspec #{spec_file}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
rescue LoadError
|
25
|
+
task :default do
|
26
|
+
puts "default rake task is :rspec but there's no rspec gem installed, install it first"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
#
|
31
|
+
# project_dir
|
32
|
+
#
|
33
|
+
PROJECT_DIR = (
|
34
|
+
caller.find{|line| line =~ /\/Rakefile\:/} ||
|
35
|
+
raise("You can include the '' file only in Rakefile!")
|
36
|
+
).sub(/\/Rakefile\:.*/, '')
|
37
|
+
def project_dir
|
38
|
+
PROJECT_DIR
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
#
|
43
|
+
# before & after task
|
6
44
|
#
|
7
45
|
def before task_name, &block
|
8
46
|
@task_counter ||= {}
|
@@ -21,53 +59,16 @@ end
|
|
21
59
|
|
22
60
|
|
23
61
|
#
|
24
|
-
#
|
62
|
+
# project
|
25
63
|
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
t.pattern = "spec/**/[^_]*_spec.rb"
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
#
|
35
|
-
# Gem Spec, for sample look at Rakefile
|
36
|
-
#
|
37
|
-
def gem_spec options
|
38
|
-
require 'rake/clean'
|
39
|
-
require 'rake/gempackagetask'
|
40
|
-
require 'tmpdir'
|
41
|
-
|
42
|
-
spec = Gem::Specification.new do |s|
|
43
|
-
(options.delete(:dependencies) || []).each{|d| s.add_dependency d}
|
44
|
-
s.platform = options.delete(:platform) || Gem::Platform::RUBY
|
45
|
-
s.has_rdoc = options.delete(:has_rdoc) == nil ? false : true
|
46
|
-
s.require_path = options.delete(:lib) || "lib"
|
47
|
-
s.files = options.delete(:files) || (%w{Rakefile readme.md} + Dir.glob("{lib,spec}/**/*"))
|
64
|
+
def project options = nil
|
65
|
+
if options
|
66
|
+
@options = {}
|
67
|
+
options.each{|k, v| @options[k.to_sym] = v}
|
48
68
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
options.each{|k, v| s.send "#{k}=", v}
|
54
|
-
end
|
55
|
-
|
56
|
-
package_dir = Dir.tmpdir
|
57
|
-
Rake::GemPackageTask.new(spec) do |p|
|
58
|
-
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
|
59
|
-
p.need_zip = true
|
60
|
-
p.package_dir = package_dir
|
61
|
-
end
|
62
|
-
|
63
|
-
task :push do
|
64
|
-
gem_file = Dir.glob("#{package_dir}/#{options[:name]}*.gem").first
|
65
|
-
system "gem push #{gem_file}"
|
66
|
-
end
|
67
|
-
|
68
|
-
task :clean do
|
69
|
-
system "rm -r #{package_dir}"
|
69
|
+
@options[:name] || raise("project name not defined")
|
70
|
+
|
71
|
+
require 'rake_ext/project'
|
70
72
|
end
|
71
|
-
|
72
|
-
task :release => [:gem, :push, :clean]
|
73
|
+
@options || raise("project not defined!")
|
73
74
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
gem 'facets', '2.9.0'
|
data/lib/ruby_ext.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
require 'ruby_ext/gems'
|
2
|
+
|
1
3
|
core = [
|
2
4
|
'facets/array/indexable', # Array first!, last!
|
3
5
|
'facets/enumerable/every',
|
4
6
|
'facets/enumerable/group_by',
|
5
7
|
'facets/exception/detail', # pretty print
|
6
|
-
'facets/
|
7
|
-
'facets/blank',
|
8
|
+
'facets/object/dup', # false.dup(), false.clone() and so on.
|
9
|
+
'facets/kernel/blank',
|
8
10
|
'facets/numeric/round.rb', # round_at, round_to
|
9
11
|
'facets/hash',
|
10
12
|
'facets/string/interpolate',
|
data/spec/array_spec.rb
CHANGED
data/spec/deep_clone_spec.rb
CHANGED
data/spec/kernel_spec.rb
CHANGED
data/spec/module_spec.rb
CHANGED
data/spec/must_spec.rb
CHANGED
data/spec/observable2_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "
|
1
|
+
require "spec_helper"
|
2
2
|
require "ruby_ext/observable2"
|
3
3
|
|
4
4
|
describe "Observable" do
|
@@ -14,29 +14,29 @@ describe "Observable" do
|
|
14
14
|
obs.notify_observers :update, 2
|
15
15
|
end
|
16
16
|
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
17
|
+
# it "Method without Parameters" do
|
18
|
+
# mock = mock("Observer")
|
19
|
+
# obs = AnObservable.new
|
20
|
+
# obs.add_observer(mock, :method => :custom_update, :filter => lambda{|o| o == 2})
|
21
|
+
# mock.should_receive(:custom_update).with(2)
|
22
|
+
# obs.notify_observers 2
|
23
|
+
# obs.notify_observers 4
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# it "With Block" do
|
27
|
+
# mock = mock("Observer")
|
28
|
+
# mock.should_receive(:got)
|
29
|
+
# obs = AnObservable.new
|
30
|
+
# obs.add_observer{mock.got}
|
31
|
+
# obs.notify_observers
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# it "With Block and Filter" do
|
35
|
+
# mock = mock("Observer")
|
36
|
+
# obs = AnObservable.new
|
37
|
+
# obs.add_observer(:filter => lambda{|o| o == 2}){|o| mock.got o}
|
38
|
+
# mock.should_receive(:got).with(2)
|
39
|
+
# obs.notify_observers 2
|
40
|
+
# obs.notify_observers 4
|
41
|
+
# end
|
42
42
|
end
|
data/spec/open_object_spec.rb
CHANGED
data/spec/should_spec.rb
CHANGED
File without changes
|
data/spec/synchronize_spec.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 9
|
10
|
+
version: 0.4.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alexey Petrushin
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-10-
|
18
|
+
date: 2010-10-14 00:00:00 +04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -24,12 +24,14 @@ dependencies:
|
|
24
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- - "
|
27
|
+
- - "="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 43
|
30
30
|
segments:
|
31
|
+
- 2
|
32
|
+
- 9
|
31
33
|
- 0
|
32
|
-
version:
|
34
|
+
version: 2.9.0
|
33
35
|
type: :runtime
|
34
36
|
version_requirements: *id001
|
35
37
|
description:
|
@@ -43,6 +45,7 @@ extra_rdoc_files: []
|
|
43
45
|
files:
|
44
46
|
- Rakefile
|
45
47
|
- readme.md
|
48
|
+
- lib/rake_ext/project.rb
|
46
49
|
- lib/rake_ext.rb
|
47
50
|
- lib/rspec_ext.rb
|
48
51
|
- lib/ruby_ext/array.rb
|
@@ -52,6 +55,7 @@ files:
|
|
52
55
|
- lib/ruby_ext/deep_clone.rb
|
53
56
|
- lib/ruby_ext/extra_blank_slate.rb
|
54
57
|
- lib/ruby_ext/file.rb
|
58
|
+
- lib/ruby_ext/gems.rb
|
55
59
|
- lib/ruby_ext/hash.rb
|
56
60
|
- lib/ruby_ext/kernel.rb
|
57
61
|
- lib/ruby_ext/micelaneous.rb
|
@@ -76,7 +80,6 @@ files:
|
|
76
80
|
- spec/array_spec.rb
|
77
81
|
- spec/declarative_cache_spec.rb
|
78
82
|
- spec/deep_clone_spec.rb
|
79
|
-
- spec/helper.rb
|
80
83
|
- spec/kernel_spec/another_class.rb
|
81
84
|
- spec/kernel_spec/the_namespace/class_b.rb
|
82
85
|
- spec/kernel_spec/TheNamespace/ClassA.rb
|
@@ -89,6 +92,7 @@ files:
|
|
89
92
|
- spec/open_object_spec.rb
|
90
93
|
- spec/prepare_arguments_spec.rb
|
91
94
|
- spec/should_spec.rb
|
95
|
+
- spec/spec_helper.rb
|
92
96
|
- spec/synchronize_spec.rb
|
93
97
|
has_rdoc: true
|
94
98
|
homepage: http://github.com/alexeypetrushin/ruby_ext
|