configer 1.2.1 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e83c8c8066d1b331fd580ad10a93daf843916fd3
4
- data.tar.gz: d506c31966f7a55c85ba9df953bf552f30811c07
3
+ metadata.gz: bc6e971366b16d5faf5576b7fee7084d473f8092
4
+ data.tar.gz: aa4fbb43a210fe45f0c06f9be4d0610bd459b418
5
5
  SHA512:
6
- metadata.gz: 59144584da6a0bb225495ec00a8dcef9124a7b9950f0c45fa5f0463d6b2d651799388589fcd822e4d4792f7aff4380332d24f0eeb3b14ece14144cdd0021244c
7
- data.tar.gz: 446b47e59535ac19912375f347b7c08c10133963df45aac93759800e710dfefe72c541064cfdf03d2ce368f399b21bc7e9397a96abfd4e82545855dc9d9d44a2
6
+ metadata.gz: df4c63893bfc618cdfc8d639251e47ac057b31f9d83a08472b524c17f5c525706d2747a98ca2cdaef92cada172e64ae101111d5a5c8c7e2701a3c5e0542661ff
7
+ data.tar.gz: 487abd626b7aac75e10590d881a5c368cf2abbfec18dff9c92066f202cc32ecf315a490f2ec77c127befd27176b480a6b0903c41aaf178726e5251154118837f
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.1
1
+ 1.2.3
@@ -0,0 +1,2 @@
1
+ hello: "world"
2
+ test: "no"
@@ -0,0 +1,6 @@
1
+ require "configer"
2
+
3
+ puts __CONFIG__.public_send(:test)
4
+ puts __CONFIG__
5
+
6
+ puts Configer.parse(hello: 'world')
@@ -1,6 +1,6 @@
1
1
  module Configer
2
2
 
3
- class Object < ::Hash
3
+ class Object < Hash
4
4
 
5
5
  self.instance_methods.each do |sym|
6
6
  self.__send__ :protected, sym
@@ -8,24 +8,27 @@ module Configer
8
8
 
9
9
  def method_missing( method_name, *args )
10
10
 
11
- if method_name.to_s[-1] == '='
12
- self[method_name.to_s[0..-2]]= *args
13
- return self[method_name.to_s[0..-2]]
14
- else
11
+ if method_name[-1] == '='
12
+ self[method_name[0..-2]]= *args
13
+ return self[method_name[0..-2]]
15
14
 
15
+ else
16
+ #> respond to method only if no value present
16
17
  if self[method_name.to_s].nil? && self.respond_to?(method_name)
17
18
  return self.__send__(method_name)
19
+
18
20
  else
19
21
  return self[method_name.to_s]
22
+
20
23
  end
21
24
 
22
25
  end
23
26
 
24
27
  end
25
28
 
26
- public :__send__,:respond_to?
29
+ public :__send__,:public_send,:respond_to?
27
30
 
28
- #> allowed Hash methods
31
+ #> some allowed Hash methods
29
32
  public :to_s,:inspect,:delete,:delete_if,
30
33
  :merge!,:merge,:keys,:values,:freeze
31
34
 
@@ -42,26 +45,30 @@ module Configer
42
45
  public
43
46
 
44
47
  def [] key
45
- key = key.to_s
46
- super
48
+ key = key.to_s if key.class <= Symbol
49
+ super || super(key.to_sym)
47
50
  end
48
51
 
49
52
  def []= key,value
50
- key = key.to_s
53
+ key = key.to_s if key.class <= Symbol
51
54
  super
52
55
  end
53
56
 
54
57
  #> parse object
55
- def self.parse obj
56
- raise(ArgumentError,"input must be Hash") unless obj.is_a? ::Hash
58
+ def self.parse(obj)
57
59
 
58
- hash = self.new.merge!(obj)
59
- hash.each_pair do |key,value|
60
- if value.class <= ::Hash
61
- hash[key]= self.parse(value)
62
- end
63
- end
64
- return hash
60
+ return case
61
+
62
+ when obj.class <= Hash
63
+ obj.reduce(self.new){|m,h| m.merge!( (h[0].class <= Symbol ? h[0].to_s : h[0] ) => self.parse(h[1]) ) ;m}
64
+
65
+ when obj.class <= Array
66
+ obj.map{|o| self.parse(o) }
67
+
68
+ else
69
+ obj
70
+
71
+ end
65
72
 
66
73
  end
67
74
 
@@ -81,6 +88,10 @@ module Configer
81
88
 
82
89
  alias :init :new
83
90
 
91
+ def parse(obj)
92
+ self::Object.parse(obj)
93
+ end
94
+
84
95
  end
85
96
 
86
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-07 00:00:00.000000000 Z
11
+ date: 2014-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -51,7 +51,9 @@ files:
51
51
  - README.md
52
52
  - Rakefile
53
53
  - VERSION
54
+ - config/sample.yml
54
55
  - configer.gemspec
56
+ - example/lazy_load.rb
55
57
  - example/sample.rb
56
58
  - lib/configer.rb
57
59
  - lib/configer/dsl.rb