consty 1.0.1 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 926acc6ca18532a6b5f3ef26e0151d61174087a1
4
- data.tar.gz: 02409837cc9e2104b199c20c9ed61ce5e1fe9728
3
+ metadata.gz: cb8304245d869a4725cb9b53a4ae2c3e49b27bbb
4
+ data.tar.gz: a059822f1637544aa861b912be6addc2f652af3f
5
5
  SHA512:
6
- metadata.gz: 217ee655ebf09c96b40ab060e4b4b0adde8383a8264289759903a28f220def9ef3b37233a296c0628c630641791820f983cdeeb46cb7e40dd6fa772b9bcd0641
7
- data.tar.gz: 7ce26f3464a3389650bba4c6dcb0cfd37239631cc8809179bef9ebd2400c07eea6c080664a651495a7798ebfff0a0e8207a5b4aab11bb5b0c4359b2a9ff825db
6
+ metadata.gz: 0f48761cae2c858322e302667c7a9450ee38202fdd570ef378a884e2b3f3b61c67881fe0e975bab657b843f8f1a1fdb364f724a07a0309a6e14781fdb29cd2de
7
+ data.tar.gz: 5eb9355d2629433ba8b88d2de15280766b102d21ac12abd347448046d50309f1dcb85d3acc9e0dca1879cab550e99456508cca1f296c42369ad6fbe4f9043406
@@ -7,11 +7,17 @@ class Consty
7
7
  def get(name, namespace=Object)
8
8
  current_namespace = namespace
9
9
  while current_namespace do
10
- begin
11
- return secuential_get name, current_namespace
12
- rescue NameError
13
- namespace_name = current_namespace.name.split('::')[0..-2].join('::')
14
- current_namespace = namespace_name.empty? ? nil : secuential_get(namespace_name)
10
+ begin
11
+ return secuential_get name, current_namespace
12
+ rescue NameError
13
+ namespace_name = current_namespace.name.split('::')[0..-2].join('::')
14
+ if !namespace_name.empty?
15
+ current_namespace = secuential_get namespace_name
16
+ elsif current_namespace != Object
17
+ current_namespace = Object
18
+ else
19
+ current_namespace = nil
20
+ end
15
21
  end
16
22
  end
17
23
  namespace.const_missing name
@@ -27,11 +33,11 @@ class Consty
27
33
  name_sections = name_sections[1..-1]
28
34
  end
29
35
 
30
- name_sections.inject(namespace) do |namespace, section|
31
- if namespace.constants.include?(section.to_sym)
32
- namespace.const_get section
36
+ name_sections.inject(namespace) do |scope, section|
37
+ if scope.constants.include?(section.to_sym)
38
+ scope.const_get section
33
39
  else
34
- namespace.const_missing section
40
+ scope.const_missing section
35
41
  end
36
42
  end
37
43
 
@@ -1,3 +1,3 @@
1
1
  class Consty
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'minitest_helper'
2
2
 
3
+ ROOT = 0
3
4
  VAL = 1
4
5
 
5
6
  module Foo
@@ -28,6 +29,7 @@ describe Consty do
28
29
  describe 'Unscoped' do
29
30
 
30
31
  it 'Get from string' do
32
+ Consty.get('ROOT').must_equal ROOT
31
33
  Consty.get('VAL').must_equal VAL
32
34
  Consty.get('Foo').must_equal Foo
33
35
  Consty.get('Foo::VAL').must_equal Foo::VAL
@@ -37,6 +39,7 @@ describe Consty do
37
39
  end
38
40
 
39
41
  it 'Get from symbol' do
42
+ Consty.get('ROOT'.to_sym).must_equal ROOT
40
43
  Consty.get('VAL'.to_sym).must_equal VAL
41
44
  Consty.get('Foo'.to_sym).must_equal Foo
42
45
  Consty.get('Foo::VAL'.to_sym).must_equal Foo::VAL
@@ -46,6 +49,8 @@ describe Consty do
46
49
  end
47
50
 
48
51
  it 'Explicit :: prefix (::SomeClass)' do
52
+ Consty.get('::ROOT').must_equal ROOT
53
+ Consty.get('::VAL').must_equal VAL
49
54
  Consty.get('::Foo').must_equal Foo
50
55
  Consty.get('::Foo::Bar').must_equal Foo::Bar
51
56
  Consty.get('::Foo::Bar::VAL').must_equal Foo::Bar::VAL
@@ -65,17 +70,20 @@ describe Consty do
65
70
  describe 'Namespace scoped' do
66
71
 
67
72
  it 'Get closest constant' do
73
+ Consty.get('ROOT', Foo).must_equal ROOT
68
74
  Consty.get('VAL', Foo).must_equal Foo::VAL
69
75
  Consty.get('Bar', Foo).must_equal Foo::Bar
70
76
  Consty.get('Bar::VAL', Foo).must_equal Foo::Bar::VAL
71
77
  Consty.get('Baz::VAL', Foo).must_equal Foo::Bar::VAL
72
78
  Consty.get('VAL', Foo::Bar).must_equal Foo::Bar::VAL
79
+ Consty.get('VAL', Foo::Baz).must_equal Foo::Bar::VAL
73
80
  Consty.get('Bar', Foo::Baz).must_equal Foo::Bar
74
81
  Consty.get('VAL', Foo::Bar::Qux).must_equal Foo::Bar::VAL
75
82
  Consty.get('VAL', Foo::Baz::Qux).must_equal Foo::Bar::VAL
76
83
  end
77
84
 
78
85
  it 'Explicit :: prefix (::SomeClass)' do
86
+ Consty.get('::ROOT', Foo).must_equal ROOT
79
87
  Consty.get('::VAL', Foo).must_equal VAL
80
88
  Consty.get('::VAL', Foo::Bar).must_equal VAL
81
89
  end
@@ -92,6 +100,7 @@ describe Consty do
92
100
  end
93
101
 
94
102
  it 'Ignore top level defined constant' do
103
+ proc { Consty.get('Foo::ROOT') }.must_raise NameError
95
104
  proc { Consty.get('Foo::Bar::Qux::VAL') }.must_raise NameError
96
105
  proc { Consty.get('Foo::Baz::Qux::VAL') }.must_raise NameError
97
106
  proc { Consty.get('Bar::Qux::VAL', Foo) }.must_raise NameError
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: consty
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-03 00:00:00.000000000 Z
11
+ date: 2017-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler