configoro 1.0.0 → 1.1.0
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.
- data/README.textile +1 -1
- data/VERSION +1 -1
- data/configoro.gemspec +6 -6
- data/lib/configoro/hash.rb +19 -1
- data/spec/configoro/hash_spec.rb +17 -1
- metadata +4 -4
    
        data/README.textile
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            1. | 
| 1 | 
            +
            1.1.0
         | 
    
        data/configoro.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{configoro}
         | 
| 8 | 
            -
              s.version = "1. | 
| 8 | 
            +
              s.version = "1.1.0"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 | 
            -
              s.authors = [ | 
| 12 | 
            -
              s.date = %q{2011-05- | 
| 11 | 
            +
              s.authors = [%q{Tim Morgan}]
         | 
| 12 | 
            +
              s.date = %q{2011-05-09}
         | 
| 13 13 | 
             
              s.description = %q{Creates a YourApp::Configuration object whose methods are generated from environment-specific YAML files.}
         | 
| 14 14 | 
             
              s.email = %q{git@timothymorgan.info}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
| @@ -41,9 +41,9 @@ Gem::Specification.new do |s| | |
| 41 41 | 
             
                "spec/spec_helper.rb"
         | 
| 42 42 | 
             
              ]
         | 
| 43 43 | 
             
              s.homepage = %q{http://github.com/RISCfuture/configoro}
         | 
| 44 | 
            -
              s.licenses = [ | 
| 45 | 
            -
              s.require_paths = [ | 
| 46 | 
            -
              s.rubygems_version = %q{1. | 
| 44 | 
            +
              s.licenses = [%q{MIT}]
         | 
| 45 | 
            +
              s.require_paths = [%q{lib}]
         | 
| 46 | 
            +
              s.rubygems_version = %q{1.8.1}
         | 
| 47 47 | 
             
              s.summary = %q{Configuration object and YAML-based storage for Rails apps}
         | 
| 48 48 |  | 
| 49 49 | 
             
              if s.respond_to? :specification_version then
         | 
    
        data/lib/configoro/hash.rb
    CHANGED
    
    | @@ -79,6 +79,12 @@ class Configoro::Hash < HashWithIndifferentAccess | |
| 79 79 | 
             
                  else
         | 
| 80 80 | 
             
                    raise ArgumentError, "wrong number of arguments (#{args.size} for 0)"
         | 
| 81 81 | 
             
                  end
         | 
| 82 | 
            +
                elsif meth.to_s =~ /^(.+)\?$/ and include?(root_meth = $1) then
         | 
| 83 | 
            +
                  if args.empty? then
         | 
| 84 | 
            +
                    !! create_getter(root_meth) #TODO duplication of logic
         | 
| 85 | 
            +
                  else
         | 
| 86 | 
            +
                    raise ArgumentError, "wrong number of arguments (#{args.size} for 0)"
         | 
| 87 | 
            +
                  end
         | 
| 82 88 | 
             
                else
         | 
| 83 89 | 
             
                  super
         | 
| 84 90 | 
             
                end
         | 
| @@ -117,7 +123,15 @@ class Configoro::Hash < HashWithIndifferentAccess | |
| 117 123 | 
             
                    remove_getter meth
         | 
| 118 124 | 
             
                  end
         | 
| 119 125 | 
             
                end
         | 
| 120 | 
            -
             | 
| 126 | 
            +
                
         | 
| 127 | 
            +
                singleton_class.send(:define_method, :"#{meth}?") do
         | 
| 128 | 
            +
                  if include?(meth.to_s) then
         | 
| 129 | 
            +
                    !! self[meth.to_s]
         | 
| 130 | 
            +
                  else
         | 
| 131 | 
            +
                    remove_getter meth
         | 
| 132 | 
            +
                  end
         | 
| 133 | 
            +
                end
         | 
| 134 | 
            +
                
         | 
| 121 135 | 
             
                self[meth.to_s]
         | 
| 122 136 | 
             
              end
         | 
| 123 137 |  | 
| @@ -125,6 +139,10 @@ class Configoro::Hash < HashWithIndifferentAccess | |
| 125 139 | 
             
                if methods.include?(meth.to_sym) then
         | 
| 126 140 | 
             
                  instance_eval "undef #{meth.to_sym.inspect}"
         | 
| 127 141 | 
             
                end
         | 
| 142 | 
            +
                
         | 
| 143 | 
            +
                if methods.include?(:"#{meth}?") then
         | 
| 144 | 
            +
                  instance_eval "undef #{:"#{meth}?".inspect}"
         | 
| 145 | 
            +
                end
         | 
| 128 146 |  | 
| 129 147 | 
             
                raise NameError, "undefined local variable or method `#{meth}' for #{self.inspect}"
         | 
| 130 148 | 
             
              end
         | 
    
        data/spec/configoro/hash_spec.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Configoro::Hash do
         | 
| 4 | 
            -
              subject { Configoro::Hash.new(:string => 'value', :fixnum => 123, :hash => { :foo => 'bar' }, :array => [ 1, 2, 3 ]) }
         | 
| 4 | 
            +
              subject { Configoro::Hash.new(:string => 'value', :fixnum => 123, :hash => { :foo => 'bar' }, :array => [ 1, 2, 3 ], :nilval => nil) }
         | 
| 5 5 |  | 
| 6 6 | 
             
              context "[getters]" do
         | 
| 7 7 | 
             
                it "should allow access by symbol" do
         | 
| @@ -14,27 +14,43 @@ describe Configoro::Hash do | |
| 14 14 |  | 
| 15 15 | 
             
                it "should allow access by method" do
         | 
| 16 16 | 
             
                  subject.array.should eql([ 1, 2, 3 ])
         | 
| 17 | 
            +
                  subject.array.should eql([ 1, 2, 3 ])
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
                
         | 
| 20 | 
            +
                it "should allow access by predicate method" do
         | 
| 21 | 
            +
                  subject.string?.should eql(true)
         | 
| 22 | 
            +
                  subject.string?.should eql(true)
         | 
| 23 | 
            +
                  subject.nilval?.should eql(false)
         | 
| 24 | 
            +
                  subject.nilval?.should eql(false)
         | 
| 17 25 | 
             
                end
         | 
| 26 | 
            +
                
         | 
| 27 | 
            +
                # We try the above methods twice: Once for creating the method, the other
         | 
| 28 | 
            +
                # for accessing it
         | 
| 18 29 | 
             
              end
         | 
| 19 30 |  | 
| 20 31 | 
             
              context "[accessor methods]" do
         | 
| 21 32 | 
             
                it "should define an accessor method upon first access" do
         | 
| 22 33 | 
             
                  subject.methods.should_not include(:string)
         | 
| 34 | 
            +
                  subject.methods.should_not include(:string?)
         | 
| 23 35 | 
             
                  subject.string
         | 
| 24 36 | 
             
                  subject.methods.should include(:string)
         | 
| 37 | 
            +
                  subject.methods.should include(:string?)
         | 
| 25 38 | 
             
                end
         | 
| 26 39 |  | 
| 27 40 | 
             
                it "should remove the accessor method if the key is removed from the hash" do
         | 
| 28 41 | 
             
                  subject.string
         | 
| 29 42 | 
             
                  subject.methods.should include(:string)
         | 
| 43 | 
            +
                  subject.methods.should include(:string?)
         | 
| 30 44 | 
             
                  subject.delete 'string'
         | 
| 31 45 | 
             
                  proc { subject.string }.should raise_error(NameError)
         | 
| 32 46 | 
             
                  subject.methods.should_not include(:string)
         | 
| 47 | 
            +
                  subject.methods.should_not include(:string?)
         | 
| 33 48 | 
             
                end
         | 
| 34 49 |  | 
| 35 50 | 
             
                it "should not override existing methods" do
         | 
| 36 51 | 
             
                  subject['inspect'] = 'wrong!'
         | 
| 37 52 | 
             
                  subject.inspect.should_not eql('wrong!')
         | 
| 53 | 
            +
                  subject.methods.should_not include(:inspect?)
         | 
| 38 54 | 
             
                end
         | 
| 39 55 | 
             
              end
         | 
| 40 56 |  | 
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: configoro
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 1. | 
| 5 | 
            +
              version: 1.1.0
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - Tim Morgan
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2011-05- | 
| 13 | 
            +
            date: 2011-05-09 00:00:00 Z
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 16 16 | 
             
              name: rails
         | 
| @@ -123,7 +123,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 123 123 | 
             
              requirements: 
         | 
| 124 124 | 
             
              - - ">="
         | 
| 125 125 | 
             
                - !ruby/object:Gem::Version 
         | 
| 126 | 
            -
                  hash:  | 
| 126 | 
            +
                  hash: 3499907636224046396
         | 
| 127 127 | 
             
                  segments: 
         | 
| 128 128 | 
             
                  - 0
         | 
| 129 129 | 
             
                  version: "0"
         | 
| @@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 136 136 | 
             
            requirements: []
         | 
| 137 137 |  | 
| 138 138 | 
             
            rubyforge_project: 
         | 
| 139 | 
            -
            rubygems_version: 1. | 
| 139 | 
            +
            rubygems_version: 1.8.1
         | 
| 140 140 | 
             
            signing_key: 
         | 
| 141 141 | 
             
            specification_version: 3
         | 
| 142 142 | 
             
            summary: Configuration object and YAML-based storage for Rails apps
         |