From c856e4aa6d7459171fa4013d72de6b9a524841dc Mon Sep 17 00:00:00 2001 From: William Fish Date: Wed, 26 Nov 2014 14:21:22 +0000 Subject: [PATCH 01/11] Render ERB before YAML. --- lib/simple_config.rb | 3 ++- test/yaml_parser_test.rb | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/simple_config.rb b/lib/simple_config.rb index 67db1c1..c8e2d03 100644 --- a/lib/simple_config.rb +++ b/lib/simple_config.rb @@ -163,7 +163,8 @@ class << self class YAMLParser def initialize(raw_yaml_data) require 'yaml' - @data = YAML.load(raw_yaml_data) + require 'erb' + @data = YAML.load(ERB.new(raw_yaml_data).result(binding)) end def self.parse_contents_of_file(yaml_file) diff --git a/test/yaml_parser_test.rb b/test/yaml_parser_test.rb index d1f416a..be39a1a 100644 --- a/test/yaml_parser_test.rb +++ b/test/yaml_parser_test.rb @@ -43,6 +43,17 @@ def test_parsing_of_a_nested_group assert_equal 'bar', @config.group1.group2.foo end + + def test_parsing_of_erb + parser = YAMLParser.new(template.to_yaml) + x = y = 1666 + template = ERB.new <<-EOF + x: <%= x %> + y: <%= y / 4 %> + EOF + assert_equal 1666, @config.x + assert_equal 416, @config.y + end end class YAMLParserFromContentsOfFile < Test::Unit::TestCase From 27587ed0780fe1332440660575956bdefa55e414 Mon Sep 17 00:00:00 2001 From: Michael Hefferan Date: Wed, 26 Nov 2014 15:39:44 +0000 Subject: [PATCH 02/11] Downgrade mocha required version to latest 0.x --- simpleconfig.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simpleconfig.gemspec b/simpleconfig.gemspec index e4592e3..69dd69e 100644 --- a/simpleconfig.gemspec +++ b/simpleconfig.gemspec @@ -22,7 +22,7 @@ Gem::Specification.new do |s| if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_development_dependency(%q, [">= 0"]) s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, [">= 0"]) + s.add_development_dependency(%q, ["~> 0.14"]) else s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) From 2f8bd4e9738ea1cac5635624d628891edc09fdd5 Mon Sep 17 00:00:00 2001 From: William Fish Date: Wed, 26 Nov 2014 15:50:16 +0000 Subject: [PATCH 03/11] Correct ordering. --- test/yaml_parser_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/yaml_parser_test.rb b/test/yaml_parser_test.rb index be39a1a..bb3540c 100644 --- a/test/yaml_parser_test.rb +++ b/test/yaml_parser_test.rb @@ -45,12 +45,12 @@ def test_parsing_of_a_nested_group end def test_parsing_of_erb - parser = YAMLParser.new(template.to_yaml) x = y = 1666 template = ERB.new <<-EOF x: <%= x %> y: <%= y / 4 %> EOF + parser = YAMLParser.new(template.to_yaml) assert_equal 1666, @config.x assert_equal 416, @config.y end From 7a5a68c655ca09c57b02a674059a1a34b68ebb19 Mon Sep 17 00:00:00 2001 From: William Fish Date: Wed, 26 Nov 2014 16:30:57 +0000 Subject: [PATCH 04/11] Make tests pass. --- .ruby-version | 1 + test/yaml_parser_test.rb | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..92b2213 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +1.8.7-p374 diff --git a/test/yaml_parser_test.rb b/test/yaml_parser_test.rb index bb3540c..873c2b8 100644 --- a/test/yaml_parser_test.rb +++ b/test/yaml_parser_test.rb @@ -45,14 +45,14 @@ def test_parsing_of_a_nested_group end def test_parsing_of_erb - x = y = 1666 - template = ERB.new <<-EOF - x: <%= x %> - y: <%= y / 4 %> + raw_data = <<-EOF + a_test: <%= 6 / 3 %> + b_test: <%= 5 * 5 %> EOF - parser = YAMLParser.new(template.to_yaml) - assert_equal 1666, @config.x - assert_equal 416, @config.y + parser = YAMLParser.new(raw_data) + parser.parse_into(@config) + assert_equal 2, @config.a_test + assert_equal 25, @config.b_test end end From 77417bbfd48870794307718c75f3678377d4e674 Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 08:59:17 +0100 Subject: [PATCH 05/11] Update gemspec to include test-unit dev dependency --- simpleconfig.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/simpleconfig.gemspec b/simpleconfig.gemspec index 69dd69e..d3ee1ef 100644 --- a/simpleconfig.gemspec +++ b/simpleconfig.gemspec @@ -23,6 +23,7 @@ Gem::Specification.new do |s| s.add_development_dependency(%q, [">= 0"]) s.add_development_dependency(%q, [">= 0"]) s.add_development_dependency(%q, ["~> 0.14"]) + s.add_development_dependency(%q, [">= 0"]) else s.add_dependency(%q, [">= 0"]) s.add_dependency(%q, [">= 0"]) From 78b0cdc8d573ca60d886192c047dcc0613be1841 Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 08:59:32 +0100 Subject: [PATCH 06/11] Remove locking version to ruby 1.8 O_o --- .ruby-version | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 92b2213..0000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -1.8.7-p374 From a50f6fd56a5d53453067dff1a1aa6b19b9d6bbde Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 09:20:25 +0100 Subject: [PATCH 07/11] Fix unset so that groups are correctly removed. --- lib/simple_config.rb | 5 ++++- test/simple_config_test.rb | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/simple_config.rb b/lib/simple_config.rb index c8e2d03..3775aa5 100644 --- a/lib/simple_config.rb +++ b/lib/simple_config.rb @@ -75,7 +75,10 @@ def get(key) # @return The current value for +:key+. def unset(key) singleton_class.send(:remove_method, key) - @settings.delete(key) + setting = @settings.delete(key) + # If there was a setting return that, otherwise continue to try and remove a group which may exist + return setting if setting + @groups.delete(key) end # Returns whether a variable with given +key+ is set. diff --git a/test/simple_config_test.rb b/test/simple_config_test.rb index 9e4ad53..0c092b8 100644 --- a/test/simple_config_test.rb +++ b/test/simple_config_test.rb @@ -51,6 +51,24 @@ def test_unset_should_return_deleted_value assert_equal('bar', @config.unset(:foo)) end + def test_unset_should_delete_group + assert(!@config.to_hash.key?(:foo)) + @config.group :foo do + set :bar, 'baz' + end + assert(@config.to_hash.key?(:foo)) + @config.unset(:foo) + assert(!@config.to_hash.key?(:foo)) + end + + def test_unset_should_return_deleted_group + assert(!@config.to_hash.key?(:foo)) + @config.group :foo do + set :bar, 'baz' + end + assert_equal(@config.foo, @config.unset(:foo)) + end + def test_exists_should_return_whether_variable_isset assert(!@config.exists?(:foo)) @config.set(:foo, 'bar') From b33adb158b02502d60fd46867cb1e68887757bb1 Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 09:20:53 +0100 Subject: [PATCH 08/11] Fix exists so it returns true if a group or setting exists. --- lib/simple_config.rb | 2 +- test/simple_config_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/simple_config.rb b/lib/simple_config.rb index 3775aa5..4886cfa 100644 --- a/lib/simple_config.rb +++ b/lib/simple_config.rb @@ -105,7 +105,7 @@ def unset(key) # @param [Symbol] The key to check. # @return [Boolean] True if the key is set. def exists?(key) - @settings.key?(key) + @settings.key?(key) || @groups.key?(key) end def set?(key) diff --git a/test/simple_config_test.rb b/test/simple_config_test.rb index 0c092b8..17c6240 100644 --- a/test/simple_config_test.rb +++ b/test/simple_config_test.rb @@ -77,6 +77,16 @@ def test_exists_should_return_whether_variable_isset assert(!@config.exists?(:foo)) end + def test_exists_should_return_whether_group_exists + assert(!@config.exists?(:foo)) + @config.group :foo do + set :bar, 'baz' + end + assert(@config.exists?(:foo)) + @config.unset(:foo) + assert(!@config.exists?(:foo)) + end + def test_exists_should_consider_empty_values_as_set [nil, 0, ''].each do |empty_value| @config.set(:foo, empty_value) From 9aaad9fef2908e708568bb8cea7e9a94835ea277 Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 09:25:50 +0100 Subject: [PATCH 09/11] Fix returning nil where the value should be false from unset --- lib/simple_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/simple_config.rb b/lib/simple_config.rb index 4886cfa..8945c11 100644 --- a/lib/simple_config.rb +++ b/lib/simple_config.rb @@ -77,7 +77,7 @@ def unset(key) singleton_class.send(:remove_method, key) setting = @settings.delete(key) # If there was a setting return that, otherwise continue to try and remove a group which may exist - return setting if setting + return setting if setting.nil? @groups.delete(key) end From d1f6a4f9061eeb99aebbaa8e0df89e7404afa3ff Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 09:28:01 +0100 Subject: [PATCH 10/11] UNLESS setting.nil? not IF setting.nil? --- lib/simple_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/simple_config.rb b/lib/simple_config.rb index 8945c11..90a6af7 100644 --- a/lib/simple_config.rb +++ b/lib/simple_config.rb @@ -77,7 +77,7 @@ def unset(key) singleton_class.send(:remove_method, key) setting = @settings.delete(key) # If there was a setting return that, otherwise continue to try and remove a group which may exist - return setting if setting.nil? + return setting unless setting.nil? @groups.delete(key) end From da21a79bd90d5dfa4c7ccdc558c46d806026e9de Mon Sep 17 00:00:00 2001 From: Jonathan Harden Date: Thu, 20 Apr 2017 09:41:26 +0100 Subject: [PATCH 11/11] Bump patch version --- simpleconfig.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simpleconfig.gemspec b/simpleconfig.gemspec index d3ee1ef..b8cfa3f 100644 --- a/simpleconfig.gemspec +++ b/simpleconfig.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |s| s.name = "simpleconfig" - s.version = "2.0.1" + s.version = "2.0.2" s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= s.authors = ["Luke Redpath", "Simone Carletti"]