foundry 0.6.0 → 0.6.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.
- checksums.yaml +5 -5
- data/.travis.yml +7 -4
- data/Gemfile +5 -0
- data/README.md +23 -12
- data/TODO +1 -1
- data/foundry.gemspec +4 -7
- data/lib/foundry/parsers/json.rb +8 -7
- data/lib/foundry/parsers/xml.rb +20 -0
- data/lib/foundry/parsers/yaml.rb +8 -7
- data/lib/foundry/parsers.rb +1 -0
- data/lib/foundry/template_engines/erb.rb +8 -7
- data/lib/foundry/version.rb +1 -1
- data/lib/foundry.rb +6 -0
- data/spec/parsers/xml_spec.rb +16 -0
- metadata +14 -39
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 32c2e6183d6b17e9968202223f0c6ced2fb3519eefe3fbac7f345bc2dacb59f1
         | 
| 4 | 
            +
              data.tar.gz: 78db0b54f78f4ba2e8c851c5f8bcb2079b11e38b2e43f1f2a1899a0bf8453739
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 65210d7d6ce90722a51561460ee375de0d4e4b08443aaa3d4e87584b6067bd5631cf549f214922fe48988b699b364faababcb2b0328a7ea40d3803d744e78443
         | 
| 7 | 
            +
              data.tar.gz: c33f6c2ea16c068065fc25ed0aed92bfc402eff7ea882946be5d29b91b6d407ce5ddc1d06b98f26ce1686ac5a1bb8d16ceada1939a8ce5273503e28e6afd2f63
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -11,8 +11,8 @@ This gem aims to keep it simple and fully decouple the two concerns. | |
| 11 11 |  | 
| 12 12 | 
             
            Features:
         | 
| 13 13 |  | 
| 14 | 
            -
            * Can load JSON or YAML from a local-file
         | 
| 15 | 
            -
            * Can load JSON or YAML from a HTTP/HTTPS endpoint
         | 
| 14 | 
            +
            * Can load JSON, XML or YAML from a local-file
         | 
| 15 | 
            +
            * Can load JSON, XML or YAML from a HTTP/HTTPS endpoint
         | 
| 16 16 | 
             
            * Supports Basic Authentication for HTTP{,S} endpoints
         | 
| 17 17 | 
             
            * Supports ERB interpolation
         | 
| 18 18 | 
             
            * Returns an easy to navigate object-graph
         | 
| @@ -95,7 +95,27 @@ Inheritance support: | |
| 95 95 | 
             
            # The examples below assume that there are two files available, relative to the
         | 
| 96 96 | 
             
            # `root_path`, named "file1.yml" and "file2.yml" (and that "file2.yml" inherits
         | 
| 97 97 | 
             
            # from "file1.yml" -- it is immaterial at this point whether the file-format is
         | 
| 98 | 
            -
            # JSON or YAML).
         | 
| 98 | 
            +
            # JSON, XML or YAML).
         | 
| 99 | 
            +
            #
         | 
| 100 | 
            +
            # When using the JSON parser, the file contents would be as follows:
         | 
| 101 | 
            +
            #
         | 
| 102 | 
            +
            # === file1.json ===
         | 
| 103 | 
            +
            #
         | 
| 104 | 
            +
            # { "value1": "value" }
         | 
| 105 | 
            +
            #
         | 
| 106 | 
            +
            # === file2.json ===
         | 
| 107 | 
            +
            #
         | 
| 108 | 
            +
            # { "inherit": "file1.json", "value2": "value" }
         | 
| 109 | 
            +
            #
         | 
| 110 | 
            +
            # When using the XML parser, the file contents would be as follows:
         | 
| 111 | 
            +
            #
         | 
| 112 | 
            +
            # === file1.xml ===
         | 
| 113 | 
            +
            #
         | 
| 114 | 
            +
            # <config><value1>value</value1></config>
         | 
| 115 | 
            +
            #
         | 
| 116 | 
            +
            # === file2.json ===
         | 
| 117 | 
            +
            #
         | 
| 118 | 
            +
            # <config inherit="file1.xml"><value2>value</value2></config>
         | 
| 99 119 | 
             
            #
         | 
| 100 120 | 
             
            # When using the YAML parser, the file contents would be as follows:
         | 
| 101 121 | 
             
            #
         | 
| @@ -110,15 +130,6 @@ Inheritance support: | |
| 110 130 | 
             
            # value2: value
         | 
| 111 131 | 
             
            # inherit: file1.yml
         | 
| 112 132 | 
             
            #
         | 
| 113 | 
            -
            # When using the JSON parser, the file contents would be as follows:
         | 
| 114 | 
            -
            #
         | 
| 115 | 
            -
            # === file1.json ===
         | 
| 116 | 
            -
            #
         | 
| 117 | 
            -
            # { "value1": "value" }
         | 
| 118 | 
            -
            #
         | 
| 119 | 
            -
            # === file2.json ===
         | 
| 120 | 
            -
            #
         | 
| 121 | 
            -
            # { "inherit": "file1.json", "value2": "value" }
         | 
| 122 133 | 
             
            #
         | 
| 123 134 | 
             
            # It is also assumed that the files have already been loaded and processed by a
         | 
| 124 135 | 
             
            # call to `Foundry::Configurator.configure` (into a variable named `config`).
         | 
    
        data/TODO
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            63b761d7-11d7-11e8-9f1a-8c85909b0be6	00000000-0000-0000-0000-000000000000	jzaleski	jzaleski	1518647742	1518647742	a	Add support for additional source-file types (e.g XML)
         | 
    
        data/foundry.gemspec
    CHANGED
    
    | @@ -25,11 +25,8 @@ Gem::Specification.new do |gem| | |
| 25 25 |  | 
| 26 26 | 
             
              gem.required_ruby_version = '>= 2.1.0'
         | 
| 27 27 |  | 
| 28 | 
            -
              gem. | 
| 29 | 
            -
             | 
| 30 | 
            -
              gem.add_development_dependency ' | 
| 31 | 
            -
              gem.add_development_dependency ' | 
| 32 | 
            -
              gem.add_development_dependency 'rake', '~> 12.0'
         | 
| 33 | 
            -
              gem.add_development_dependency 'rspec', '~> 3.6'
         | 
| 34 | 
            -
              gem.add_development_dependency 'webmock', '~> 3.0'
         | 
| 28 | 
            +
              gem.add_development_dependency 'pry', '~> 0.11'
         | 
| 29 | 
            +
              gem.add_development_dependency 'rake', '~> 12.3'
         | 
| 30 | 
            +
              gem.add_development_dependency 'rspec', '~> 3.7'
         | 
| 31 | 
            +
              gem.add_development_dependency 'webmock', '~> 3.3'
         | 
| 35 32 | 
             
            end
         | 
    
        data/lib/foundry/parsers/json.rb
    CHANGED
    
    | @@ -1,11 +1,12 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            safe_require('json')
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Foundry
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 3 | 
            +
            if defined?(JSON)
         | 
| 4 | 
            +
              module Foundry
         | 
| 5 | 
            +
                module Parsers
         | 
| 6 | 
            +
                  class JSON
         | 
| 7 | 
            +
                    def parse(str)
         | 
| 8 | 
            +
                      ::JSON.parse(str)
         | 
| 9 | 
            +
                    end
         | 
| 9 10 | 
             
                  end
         | 
| 10 11 | 
             
                end
         | 
| 11 12 | 
             
              end
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            safe_require('rexml/document')
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            if defined?(REXML::Document)
         | 
| 4 | 
            +
              module Foundry
         | 
| 5 | 
            +
                module Parsers
         | 
| 6 | 
            +
                  class XML
         | 
| 7 | 
            +
                    def parse(str)
         | 
| 8 | 
            +
                      raise TypeError if str.nil?
         | 
| 9 | 
            +
                      root_node = REXML::Document.new(str).first
         | 
| 10 | 
            +
                      raise ArgumentError unless root_node.name == 'config'
         | 
| 11 | 
            +
                      result = {}
         | 
| 12 | 
            +
                      root_node.children.each { |node| result[node.name] = node.text }
         | 
| 13 | 
            +
                      inherit = root_node.attributes['inherit']
         | 
| 14 | 
            +
                      result['inherit'] = inherit unless inherit.nil?
         | 
| 15 | 
            +
                      result
         | 
| 16 | 
            +
                    end
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
            end
         | 
    
        data/lib/foundry/parsers/yaml.rb
    CHANGED
    
    | @@ -1,11 +1,12 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            safe_require('yaml')
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Foundry
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 3 | 
            +
            if defined?(YAML)
         | 
| 4 | 
            +
              module Foundry
         | 
| 5 | 
            +
                module Parsers
         | 
| 6 | 
            +
                  class YAML
         | 
| 7 | 
            +
                    def parse(str)
         | 
| 8 | 
            +
                      ::YAML.load(str)
         | 
| 9 | 
            +
                    end
         | 
| 9 10 | 
             
                  end
         | 
| 10 11 | 
             
                end
         | 
| 11 12 | 
             
              end
         | 
    
        data/lib/foundry/parsers.rb
    CHANGED
    
    
| @@ -1,11 +1,12 @@ | |
| 1 | 
            -
             | 
| 1 | 
            +
            safe_require('erb')
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Foundry
         | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 3 | 
            +
            if defined?(ERB)
         | 
| 4 | 
            +
              module Foundry
         | 
| 5 | 
            +
                module TemplateEngines
         | 
| 6 | 
            +
                  class ERB
         | 
| 7 | 
            +
                    def evaluate(str)
         | 
| 8 | 
            +
                      ::ERB.new(str).result
         | 
| 9 | 
            +
                    end
         | 
| 9 10 | 
             
                  end
         | 
| 10 11 | 
             
                end
         | 
| 11 12 | 
             
              end
         | 
    
        data/lib/foundry/version.rb
    CHANGED
    
    
    
        data/lib/foundry.rb
    CHANGED
    
    
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe Foundry::Parsers::XML do
         | 
| 4 | 
            +
              it 'can parse XML' do
         | 
| 5 | 
            +
                expect(subject.parse('<config><foo>bar</foo></config>')).to \
         | 
| 6 | 
            +
                  eq({ 'foo' => 'bar' })
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              it 'will raise an error if the XML is not in the correct format' do
         | 
| 10 | 
            +
                expect { subject.parse('<foo>bar</foo>') }.to raise_error ArgumentError
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it 'will raise an error if the XML is unparseable' do
         | 
| 14 | 
            +
                expect { subject.parse(nil) }.to raise_error TypeError
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,99 +1,71 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: foundry
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.6. | 
| 4 | 
            +
              version: 0.6.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jonathan W. Zaleski
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-02-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name: json
         | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - "~>"
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '2.1'
         | 
| 20 | 
            -
              type: :runtime
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - "~>"
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '2.1'
         | 
| 27 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: bundler
         | 
| 29 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            -
                requirements:
         | 
| 31 | 
            -
                - - "~>"
         | 
| 32 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '1.4'
         | 
| 34 | 
            -
              type: :development
         | 
| 35 | 
            -
              prerelease: false
         | 
| 36 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            -
                requirements:
         | 
| 38 | 
            -
                - - "~>"
         | 
| 39 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '1.4'
         | 
| 41 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 14 | 
             
              name: pry
         | 
| 43 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 16 | 
             
                requirements:
         | 
| 45 17 | 
             
                - - "~>"
         | 
| 46 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: '0. | 
| 19 | 
            +
                    version: '0.11'
         | 
| 48 20 | 
             
              type: :development
         | 
| 49 21 | 
             
              prerelease: false
         | 
| 50 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 23 | 
             
                requirements:
         | 
| 52 24 | 
             
                - - "~>"
         | 
| 53 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: '0. | 
| 26 | 
            +
                    version: '0.11'
         | 
| 55 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 28 | 
             
              name: rake
         | 
| 57 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 30 | 
             
                requirements:
         | 
| 59 31 | 
             
                - - "~>"
         | 
| 60 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '12. | 
| 33 | 
            +
                    version: '12.3'
         | 
| 62 34 | 
             
              type: :development
         | 
| 63 35 | 
             
              prerelease: false
         | 
| 64 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 37 | 
             
                requirements:
         | 
| 66 38 | 
             
                - - "~>"
         | 
| 67 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '12. | 
| 40 | 
            +
                    version: '12.3'
         | 
| 69 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 42 | 
             
              name: rspec
         | 
| 71 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 44 | 
             
                requirements:
         | 
| 73 45 | 
             
                - - "~>"
         | 
| 74 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '3. | 
| 47 | 
            +
                    version: '3.7'
         | 
| 76 48 | 
             
              type: :development
         | 
| 77 49 | 
             
              prerelease: false
         | 
| 78 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 51 | 
             
                requirements:
         | 
| 80 52 | 
             
                - - "~>"
         | 
| 81 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '3. | 
| 54 | 
            +
                    version: '3.7'
         | 
| 83 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 56 | 
             
              name: webmock
         | 
| 85 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 58 | 
             
                requirements:
         | 
| 87 59 | 
             
                - - "~>"
         | 
| 88 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '3. | 
| 61 | 
            +
                    version: '3.3'
         | 
| 90 62 | 
             
              type: :development
         | 
| 91 63 | 
             
              prerelease: false
         | 
| 92 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 65 | 
             
                requirements:
         | 
| 94 66 | 
             
                - - "~>"
         | 
| 95 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '3. | 
| 68 | 
            +
                    version: '3.3'
         | 
| 97 69 | 
             
            description: |2
         | 
| 98 70 | 
             
                Let's face it, there are a number of problems when application/environment
         | 
| 99 71 | 
             
                configuration logic is too tightly coupled with the configuration-data itself.
         | 
| @@ -116,6 +88,7 @@ files: | |
| 116 88 | 
             
            - lib/foundry/configurator.rb
         | 
| 117 89 | 
             
            - lib/foundry/parsers.rb
         | 
| 118 90 | 
             
            - lib/foundry/parsers/json.rb
         | 
| 91 | 
            +
            - lib/foundry/parsers/xml.rb
         | 
| 119 92 | 
             
            - lib/foundry/parsers/yaml.rb
         | 
| 120 93 | 
             
            - lib/foundry/refinements.rb
         | 
| 121 94 | 
             
            - lib/foundry/refinements/hash.rb
         | 
| @@ -127,6 +100,7 @@ files: | |
| 127 100 | 
             
            - lib/foundry/version.rb
         | 
| 128 101 | 
             
            - spec/configurator_spec.rb
         | 
| 129 102 | 
             
            - spec/parsers/json_spec.rb
         | 
| 103 | 
            +
            - spec/parsers/xml_spec.rb
         | 
| 130 104 | 
             
            - spec/parsers/yaml_spec.rb
         | 
| 131 105 | 
             
            - spec/refinements/hash_spec.rb
         | 
| 132 106 | 
             
            - spec/sources/file_spec.rb
         | 
| @@ -153,13 +127,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 153 127 | 
             
                  version: '0'
         | 
| 154 128 | 
             
            requirements: []
         | 
| 155 129 | 
             
            rubyforge_project: 
         | 
| 156 | 
            -
            rubygems_version: 2. | 
| 130 | 
            +
            rubygems_version: 2.7.3
         | 
| 157 131 | 
             
            signing_key: 
         | 
| 158 132 | 
             
            specification_version: 4
         | 
| 159 133 | 
             
            summary: An application configuration gem that aims to keep it simple
         | 
| 160 134 | 
             
            test_files:
         | 
| 161 135 | 
             
            - spec/configurator_spec.rb
         | 
| 162 136 | 
             
            - spec/parsers/json_spec.rb
         | 
| 137 | 
            +
            - spec/parsers/xml_spec.rb
         | 
| 163 138 | 
             
            - spec/parsers/yaml_spec.rb
         | 
| 164 139 | 
             
            - spec/refinements/hash_spec.rb
         | 
| 165 140 | 
             
            - spec/sources/file_spec.rb
         |