cuke_fig 0.0.1

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 +15 -0
  2. data/lib/cuke_fig.rb +70 -0
  3. metadata +86 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ N2Y3MzIzMzVlOTdlYTBhMGJhYjBlNjdkMzljYjgwYTQ1MzQ5M2M4Mg==
5
+ data.tar.gz: !binary |-
6
+ NGZiMmYxNjNlNWVkNDlmODIyMDlmNmI3MGIyM2Y3MTUyYzEyMGM4Mw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MzBmM2Q3NzU4ZmM0OTJiZDliM2U2NWM3NjRkOTdkNDk4MmMxZmMzMGZmZGFi
10
+ N2QyMDlmMzk1NWE1MGRlOTMyYmY3MTE2OGEzNWQ5ZDQ2NGI2NDA1ZjJiM2Zh
11
+ YzYxNTBjOGFhODZmNDU5YjBlNTFlNmQ2NzM1ODlhM2YzZmY4ZmE=
12
+ data.tar.gz: !binary |-
13
+ ZDhmYWM2YmIyOWVkOTZmZTE1ZGZmMTZiNjUzYTVhNjYzN2MyODdkOGZlY2Ew
14
+ MWZjNzYyNDIwODdhZWRkZTZjZWMzOWUxYzUwZjIwZmI3MmIzZDJiOTlhZWY2
15
+ MWFiZDJiZmZkNGI2NzcxYTM5NDFmMDU2YzA3YmEzZGUzNzVmMjI=
data/lib/cuke_fig.rb ADDED
@@ -0,0 +1,70 @@
1
+
2
+ module CukeFig
3
+ class Config
4
+ attr_reader :global_config, :methods
5
+
6
+ def self.get
7
+ @global_config ||= Config.new
8
+ end
9
+
10
+ def initialize
11
+ @methods ||= []
12
+ end
13
+
14
+ def clear
15
+ @global_config = Config.new
16
+ end
17
+
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
26
+
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
40
+ end
41
+
42
+ def config
43
+ Config.get
44
+ end
45
+
46
+ def expand_config_files(common, env_config: nil, override: nil)
47
+ expanded = []
48
+ expanded.concat common unless common.nil?
49
+ expanded.concat env_config unless env_config.nil?
50
+ expanded.concat override unless override.nil?
51
+ expanded
52
+ end
53
+
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
64
+ end
65
+ end
66
+
67
+ extend(CukeFig)
68
+ end
69
+
70
+ World(CukeFig)
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cuke_fig
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Anders Åslund
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: cucumber
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-expectations
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Multilevel configuration for cucumber
56
+ email: anders.aslund@teknoir.se
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/cuke_fig.rb
62
+ homepage: http://www.teknoir.se
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.4.5
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: A YAML file config library for cucumber
86
+ test_files: []