cuke_fig 0.0.1

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.
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: []