ruby_patch 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,19 +1,30 @@
1
1
  module RubyPatch
2
2
  module AutoLoad
3
- def const_missing(const_name)
4
- begin
5
- require _file_name(const_name)
6
- self.const_get(const_name)
7
- rescue LoadError
8
- super
3
+
4
+ def const_missing(name)
5
+ require file_name(name)
6
+
7
+ # Consider the case where you try to require ::A::B.
8
+ # If you don't use `full_name', `defined?' will determine whether ::RubyPatch::AutoLoad::B is defined, whereas `self' is ::A.
9
+ if eval "defined? #{full_name(name)}"
10
+ const_get(name)
11
+ else
12
+ $stderr.puts "#{full_name(name)} is not defined in #{file_name(name)}."
13
+ raise super
9
14
  end
10
15
  end
11
16
 
17
+ private
18
+
12
19
  # You should use +module Http; end+ rather than +module HTTP; end+
13
- def _file_name(name)
14
- "#{self}::#{name}".split('::').map{|t|
20
+ def file_name(name)
21
+ full_name(name).split('::').map{|t|
15
22
  t.sub(/\A([A-Z])/){$1.downcase}.gsub(/([A-Z])/){"_#{$1.downcase}"}
16
- }.join('/') + '.rb'
23
+ }.join('/')
24
+ end
25
+
26
+ def full_name(name)
27
+ "#{self}::#{name}"
17
28
  end
18
29
  end
19
30
  end
@@ -6,7 +6,6 @@ module RubyPatch
6
6
  module
7
7
  object
8
8
  class
9
- enumerable
10
9
  string
11
10
  time
12
11
  ).each{|lib| require "ruby_patch/core_ext/#{lib}"}
@@ -1,3 +1,3 @@
1
1
  module RubyPatch
2
- VERSION = '1.1.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -24,18 +24,4 @@ describe ::RubyPatch::AutoLoad do
24
24
  end
25
25
  end
26
26
  end
27
-
28
- describe '#_file_name' do
29
- context Symbol do
30
- it do
31
- ::Dummy._file_name(:'A::B').should == 'dummy/a/b.rb'
32
- end
33
- end
34
-
35
- context String do
36
- it do
37
- ::Dummy._file_name('A::B').should == 'dummy/a/b.rb'
38
- end
39
- end
40
- end
41
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_patch
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0
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-07-02 00:00:00.000000000 Z
12
+ date: 2012-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2157105620 !ruby/object:Gem::Requirement
16
+ requirement: &2152555840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.10'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2157105620
24
+ version_requirements: *2152555840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: simplecov
27
- requirement: &2157104840 !ruby/object:Gem::Requirement
27
+ requirement: &2152555320 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0.6'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2157104840
35
+ version_requirements: *2152555320
36
36
  description: Monkey patches used by kshramt's libraries.
37
37
  email:
38
38
  executables: []
@@ -43,7 +43,6 @@ files:
43
43
  - lib/ruby_patch/auto_load.rb
44
44
  - lib/ruby_patch/core_ext.rb
45
45
  - lib/ruby_patch/core_ext/class.rb
46
- - lib/ruby_patch/core_ext/enumerable.rb
47
46
  - lib/ruby_patch/core_ext/module.rb
48
47
  - lib/ruby_patch/core_ext/object.rb
49
48
  - lib/ruby_patch/core_ext/string.rb
@@ -53,7 +52,6 @@ files:
53
52
  - ruby_patch.gemspec
54
53
  - spec/ruby_patch/auto_load_spec.rb
55
54
  - spec/ruby_patch/core_ext/class_spec.rb
56
- - spec/ruby_patch/core_ext/enumerable_spec.rb
57
55
  - spec/ruby_patch/core_ext/module_spec.rb
58
56
  - spec/ruby_patch/core_ext/object_spec.rb
59
57
  - spec/ruby_patch/core_ext/string_spec.rb
@@ -87,7 +85,6 @@ summary: Monky patches for ruby.
87
85
  test_files:
88
86
  - spec/ruby_patch/auto_load_spec.rb
89
87
  - spec/ruby_patch/core_ext/class_spec.rb
90
- - spec/ruby_patch/core_ext/enumerable_spec.rb
91
88
  - spec/ruby_patch/core_ext/module_spec.rb
92
89
  - spec/ruby_patch/core_ext/object_spec.rb
93
90
  - spec/ruby_patch/core_ext/string_spec.rb
@@ -1,9 +0,0 @@
1
- module Enumerable
2
- new_methods :classify
3
-
4
- def classify(&block)
5
- h = Hash.new{|h, k| h[k] = []}
6
- self.each{|o| h[yield(o)] << o}
7
- h
8
- end
9
- end
@@ -1,20 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Enumerable do
4
- describe 'classify' do
5
- it do
6
- (1..4).classify{|i| i.odd?}.should == {
7
- true => [1, 3],
8
- false => [2, 4],
9
- }
10
- end
11
-
12
- it do
13
- [1, '1', :'1'].classify{|v| v.class}.should == {
14
- Fixnum => [1],
15
- String => ['1'],
16
- Symbol => [:'1'],
17
- }
18
- end
19
- end
20
- end