cuke_fig 0.0.2 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/cuke_fig.rb +44 -48
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ODM2OTFmNjk2ZTU4NTgxZWVmODQ5NDVkODdlOGM0YTM4ZTc5NzBiYQ==
4
+ YTViNjVkNDA5ODI1MzJlMTU2ZWNkYjc4NTY3M2UzMDJjZmJjZWJlNg==
5
5
  data.tar.gz: !binary |-
6
- MTgwN2I4YzFjNWMzNGIyYjk2YmJjNmMwNTQ1MjYzMTQwZjk3OWI5Nw==
6
+ YWRhOGI5YWU5YTEzZDQ1OWRkMjg1ZmE1ZjNlY2YwZWE2MTZjYTQ2Ng==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MGYyN2JhY2M3MDQyYWYyZjgyNTNkNzc4NWY1ZTI2MGFjNzVlODJhM2UzYmJh
10
- ZDdmZmM4YWIwNmFkOTU2OWRmOTg4MTNmYTBlNmRjYTQ1MTcxZTExMDNjZjAz
11
- Y2M2MjIxZGFjN2NmZTlkMGE2ZmEzNDEwNzY5MWMyMzcyYWEzNjI=
9
+ MWVkZTE0NDE4NzRlN2FhZjQwNjUzY2ZmZjkyZjM1YjQwN2NjYjI3MDg1NTg2
10
+ NWNiNjBjMjhhNzcxYzNhNzdmN2NmYjA4MzFjZTEwMDUxZWMzMjkwYmQ1NTg0
11
+ OGE5NDAxZmVkNGE2MDJkYjAyZTYwZTIyMjQ1Yjk2MGUwZDgwNzU=
12
12
  data.tar.gz: !binary |-
13
- NzVlYmNiZDkxZWZkMTA5MzU0NWI5ZGIyOTUzZWI1ZGNiMzI1ZTJkYjNkZTA2
14
- YzlhYThhOWJmMmYyYWNiOWVhYzUxNTRiZTFjOTU0ZGU4ZWZiYjEwYmM0YmRk
15
- YjJlNmYwNTBhZmYxM2NmZmUzNjE2N2FhZjA4ZTYxMTVlODEyYTE=
13
+ ODVmYTg0NzcyYTRhYjViNzBiN2E4ZmUzYTAyNDMzMGUwZjRiODdhNzlmMGJm
14
+ YzhhYzQzNzU1YjNjMzhhMThlZDAyMTc4ZDk1NjhhNmE2ZTc5ODZjYmQ2MzQy
15
+ YmVjNzBlOGRiMDc3MzY0ZTdhNzIyNGJkZmQ5NGEwYWE1MWY1ZmU=
data/lib/cuke_fig.rb CHANGED
@@ -1,48 +1,49 @@
1
+ require "yaml"
2
+ require "ostruct"
1
3
 
2
- module CukeFig
3
- class Config
4
- attr_reader :global_config, :methods
4
+ class Object
5
+ def to_openstruct
6
+ self
7
+ end
8
+ end
5
9
 
6
- def self.get
7
- @global_config ||= Config.new
8
- end
10
+ class Array
11
+ def to_openstruct
12
+ map{ |el| el.to_openstruct }
13
+ end
14
+ end
9
15
 
10
- def initialize
11
- @methods ||= []
12
- end
16
+ class Hash
17
+ def to_openstruct
18
+ mapped = {}
19
+ each{ |key,value| mapped[key] = value.to_openstruct }
20
+ OpenStruct.new(mapped)
21
+ end
22
+ end
13
23
 
14
- def clear
15
- @global_config = Config.new
16
- end
24
+ module YAML
25
+ def self.load_openstruct(source)
26
+ self.load(source).to_openstruct
27
+ end
28
+ end
17
29
 
18
- def load(conf_files)
19
- conf_files = [conf_files] unless conf_files.is_a? Array
20
- conf_files.each do |conf|
21
- attr_name = File.basename(conf, '.yml').gsub('-', '_')
22
- attr_value = YAML.load_file conf
23
- set attr_name, attr_value
24
- end
25
- end
30
+ class CukeFig < OpenStruct
31
+ def config
32
+ self
33
+ end
26
34
 
27
- def set(attr_name, attr_value)
28
- var_name = ('@' + attr_name.to_s).to_sym
29
- if instance_variable_defined?(var_name) && attr_value.is_a?(Hash)
30
- # Get and merge. Keep merging if hash values are hashes
31
- merger = proc { |_key, v1, v2| v1.is_a?(Hash) && v2.is_a?(Hash) ? v1.merge(v2, &merger) : (v2.nil? ? v1 : v2) }
32
- instance_variable_get(var_name).merge! attr_value, &merger
33
- else
34
- # Create
35
- instance_variable_set(var_name, attr_value)
36
- singleton_class.class_eval { attr_reader attr_name }
37
- @methods << attr_name.to_s
38
- end
39
- end
35
+ def setup(common, environment: nil, env_configs: nil, override: nil)
36
+ env_config = env_configs[environment] unless env_configs.nil? || environment.nil?
37
+ config_files = expand_config_files common, env_config: env_config, override: override
38
+ load(config_files)
40
39
  end
41
40
 
42
- def config
43
- Config.get
41
+ def method_missing(mid, *args)
42
+ @global_config.send(mid, *args)
44
43
  end
45
44
 
45
+ private
46
+
46
47
  def expand_config_files(common, env_config: nil, override: nil)
47
48
  expanded = []
48
49
  expanded.concat Dir.glob(File.join(Dir.pwd, common)) unless common.nil?
@@ -51,20 +52,15 @@ module CukeFig
51
52
  expanded
52
53
  end
53
54
 
54
- def setup(common, environment: nil, env_configs: nil, override: nil)
55
- config.clear
56
- env_config = env_configs[environment] unless env_configs.nil? || environment.nil?
57
- config_files = expand_config_files common, env_config: env_config, override: override
58
- config.set(:env, environment)
59
- config.load(config_files)
60
- config.methods.each do |method|
61
- define_method method do |*args, &block|
62
- config.send method, *args, &block
63
- end
55
+ def load(conf_files)
56
+ conf_files = [conf_files] unless conf_files.is_a? Array
57
+ conf_hash = Hash.new
58
+ conf_files.each do |conf|
59
+ new_hash = { File.basename(conf, '.yml').gsub('-', '_').to_sym => YAML.load_file(conf) }
60
+ conf_hash.merge!(new_hash)
64
61
  end
62
+ @global_config = conf_hash.to_openstruct
65
63
  end
66
-
67
- extend(CukeFig)
68
64
  end
69
65
 
70
- World(CukeFig)
66
+ World{ CukeFig.new }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuke_fig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anders Åslund