libis-tools 0.9.3 → 0.9.4
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 +4 -4
- data/lib/libis/tools/deep_struct.rb +15 -0
- data/lib/libis/tools/extend/hash.rb +4 -0
- data/lib/libis/tools/version.rb +1 -1
- data/libis-tools.gemspec +2 -0
- data/spec/deep_struct_spec.rb +82 -0
- metadata +19 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: fa31aed0ec4adc0f57dcca3d2f816261a0ee956b
         | 
| 4 | 
            +
              data.tar.gz: 5d7713ea273850ba3050c6150377d42987a5daea
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 7e6d7eb3379ca0ba55f5730a8e1b96b7170e206ee10b38dcea7ff6a18861b854b4a534ec7ed7069f553be36b7d86b6d6d2ed5923a8c50518057e3386c6a5ee20
         | 
| 7 | 
            +
              data.tar.gz: 8e8d4cb03b0018ed90beb10fe78d538a95aa34455906018b92cfa2b0218296cc8a9d582a1a046f950be818d89ccd36b3caaa59dde30ac6d9a294622b46091c9a
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'libis/tools/extend/ostruct'
         | 
| 2 | 
            +
            require 'recursive-open-struct'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module Libis
         | 
| 5 | 
            +
              module Tools
         | 
| 6 | 
            +
                class DeepStruct < RecursiveOpenStruct
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  def initialize(hash = {}, opts = {})
         | 
| 9 | 
            +
                    hash = {default: hash} unless hash.is_a? Hash
         | 
| 10 | 
            +
                    super(hash, {recurse_over_arrays: true}.merge(opts))
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
            end
         | 
| @@ -34,6 +34,10 @@ class Hash | |
| 34 34 | 
             
                end
         | 
| 35 35 | 
             
              end unless method_defined? :recursive_merge!
         | 
| 36 36 |  | 
| 37 | 
            +
              def key_strings_to_symbols!(opts = {})
         | 
| 38 | 
            +
                self.replace self.key_strings_to_symbols opts
         | 
| 39 | 
            +
              end unless method_defined? :key_strings_to_symbols!
         | 
| 40 | 
            +
             | 
| 37 41 | 
             
              def key_strings_to_symbols(opts = {})
         | 
| 38 42 | 
             
                opts = {resursive: false, upcase: false, downcase: false}.merge opts
         | 
| 39 43 |  | 
    
        data/lib/libis/tools/version.rb
    CHANGED
    
    
    
        data/libis-tools.gemspec
    CHANGED
    
    | @@ -30,10 +30,12 @@ Gem::Specification.new do |spec| | |
| 30 30 | 
             
              spec.add_development_dependency 'simplecov', '~> 0.9'
         | 
| 31 31 | 
             
              spec.add_development_dependency 'equivalent-xml', '~> 0.5'
         | 
| 32 32 |  | 
| 33 | 
            +
             | 
| 33 34 | 
             
              spec.add_runtime_dependency 'backports', '~> 3.6'
         | 
| 34 35 | 
             
              spec.add_runtime_dependency 'savon', '~> 2.0'
         | 
| 35 36 | 
             
              spec.add_runtime_dependency 'nokogiri', '~> 1.6'
         | 
| 36 37 | 
             
              spec.add_runtime_dependency 'gyoku',  '~> 1.2'
         | 
| 37 38 | 
             
              spec.add_runtime_dependency 'nori', '~> 2.4'
         | 
| 39 | 
            +
              spec.add_runtime_dependency 'recursive-open-struct', '~>0.6'
         | 
| 38 40 |  | 
| 39 41 | 
             
            end
         | 
| @@ -0,0 +1,82 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require_relative 'spec_helper'
         | 
| 3 | 
            +
            require 'libis/tools/deep_struct'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe 'DeepStruct' do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              hash = {a: 1, 'b' => '2', c: 3.0}
         | 
| 8 | 
            +
              recursive_hash = {
         | 
| 9 | 
            +
                  a: {x: 0, y: 0, z: 0},
         | 
| 10 | 
            +
                  b: {x: 10, y: -5, z: 2.5},
         | 
| 11 | 
            +
                  c: [
         | 
| 12 | 
            +
                      [
         | 
| 13 | 
            +
                          {a: 1},
         | 
| 14 | 
            +
                          {a: 2}
         | 
| 15 | 
            +
                      ]
         | 
| 16 | 
            +
                  ]
         | 
| 17 | 
            +
              }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it 'should initialize' do
         | 
| 20 | 
            +
                ds = Libis::Tools::DeepStruct.new
         | 
| 21 | 
            +
                expect(ds).not_to eq nil
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              # noinspection RubyResolve
         | 
| 25 | 
            +
              it 'should store Hash values' do
         | 
| 26 | 
            +
                ds = Libis::Tools::DeepStruct.new hash
         | 
| 27 | 
            +
                expect(ds[:a]).to eq 1
         | 
| 28 | 
            +
                expect(ds[:b]).to eq '2'
         | 
| 29 | 
            +
                expect(ds[:c]).to eq 3.0
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it 'should allow access through methods' do
         | 
| 33 | 
            +
                ds = Libis::Tools::DeepStruct.new hash
         | 
| 34 | 
            +
                expect(ds.a).to eq 1
         | 
| 35 | 
            +
                expect(ds.b).to eq '2'
         | 
| 36 | 
            +
                expect(ds.c).to eq 3.0
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              it 'should allow access through methods, key strings and key symbols' do
         | 
| 40 | 
            +
                ds = Libis::Tools::DeepStruct.new hash
         | 
| 41 | 
            +
                expect(ds.a).to eq 1
         | 
| 42 | 
            +
                expect(ds.b).to eq '2'
         | 
| 43 | 
            +
                expect(ds.c).to eq 3.0
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                expect(ds['a']).to eq 1
         | 
| 46 | 
            +
                expect(ds['b']).to eq '2'
         | 
| 47 | 
            +
                expect(ds['c']).to eq 3.0
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                expect(ds[:a]).to eq 1
         | 
| 50 | 
            +
                expect(ds[:b]).to eq '2'
         | 
| 51 | 
            +
                expect(ds[:c]).to eq 3.0
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                expect(ds.b).to be ds[:b]
         | 
| 54 | 
            +
                expect(ds.b).to be ds['b']
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
              it 'should store non-hashes with :default key' do
         | 
| 59 | 
            +
                ds = Libis::Tools::DeepStruct.new 'abc'
         | 
| 60 | 
            +
                expect(ds[:default]).to eq 'abc'
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              it 'should store recursive Hashes as DeepStructs' do
         | 
| 64 | 
            +
                ds = Libis::Tools::DeepStruct.new(recursive_hash)
         | 
| 65 | 
            +
                expect(ds[:a]).to be_a Libis::Tools::DeepStruct
         | 
| 66 | 
            +
                expect(ds.b).to be_a Libis::Tools::DeepStruct
         | 
| 67 | 
            +
              end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              it 'should recurse over arrays by default' do
         | 
| 70 | 
            +
                ds = Libis::Tools::DeepStruct.new(recursive_hash)
         | 
| 71 | 
            +
                expect(ds.c[0][0]).to be_a Libis::Tools::DeepStruct
         | 
| 72 | 
            +
                expect(ds.c.first.first.a).to eq 1
         | 
| 73 | 
            +
                expect(ds.c.first[1].a).to eq 2
         | 
| 74 | 
            +
              end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              it 'should deliver hashes if asked' do
         | 
| 77 | 
            +
                ds = Libis::Tools::DeepStruct.new(recursive_hash)
         | 
| 78 | 
            +
                expect(ds.to_h).to eq recursive_hash
         | 
| 79 | 
            +
                expect(ds.b.to_h).to eq recursive_hash[:b]
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: libis-tools
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Kris Dekeyser
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-05-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -150,6 +150,20 @@ dependencies: | |
| 150 150 | 
             
                - - "~>"
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 152 | 
             
                    version: '2.4'
         | 
| 153 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 154 | 
            +
              name: recursive-open-struct
         | 
| 155 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 | 
            +
                requirements:
         | 
| 157 | 
            +
                - - "~>"
         | 
| 158 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            +
                    version: '0.6'
         | 
| 160 | 
            +
              type: :runtime
         | 
| 161 | 
            +
              prerelease: false
         | 
| 162 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 | 
            +
                requirements:
         | 
| 164 | 
            +
                - - "~>"
         | 
| 165 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            +
                    version: '0.6'
         | 
| 153 167 | 
             
            description: Some tool classes for other LIBIS gems.
         | 
| 154 168 | 
             
            email:
         | 
| 155 169 | 
             
            - kris.dekeyser@libis.be
         | 
| @@ -172,6 +186,7 @@ files: | |
| 172 186 | 
             
            - lib/libis/tools/command.rb
         | 
| 173 187 | 
             
            - lib/libis/tools/config.rb
         | 
| 174 188 | 
             
            - lib/libis/tools/dc_record.rb
         | 
| 189 | 
            +
            - lib/libis/tools/deep_struct.rb
         | 
| 175 190 | 
             
            - lib/libis/tools/extend/empty.rb
         | 
| 176 191 | 
             
            - lib/libis/tools/extend/hash.rb
         | 
| 177 192 | 
             
            - lib/libis/tools/extend/ostruct.rb
         | 
| @@ -192,6 +207,7 @@ files: | |
| 192 207 | 
             
            - spec/data/test.data
         | 
| 193 208 | 
             
            - spec/data/test.xml
         | 
| 194 209 | 
             
            - spec/data/test.yml
         | 
| 210 | 
            +
            - spec/deep_struct_spec.rb
         | 
| 195 211 | 
             
            - spec/logger_spec.rb
         | 
| 196 212 | 
             
            - spec/parameter_container_spec.rb
         | 
| 197 213 | 
             
            - spec/parameter_spec.rb
         | 
| @@ -233,6 +249,7 @@ test_files: | |
| 233 249 | 
             
            - spec/data/test.data
         | 
| 234 250 | 
             
            - spec/data/test.xml
         | 
| 235 251 | 
             
            - spec/data/test.yml
         | 
| 252 | 
            +
            - spec/deep_struct_spec.rb
         | 
| 236 253 | 
             
            - spec/logger_spec.rb
         | 
| 237 254 | 
             
            - spec/parameter_container_spec.rb
         | 
| 238 255 | 
             
            - spec/parameter_spec.rb
         |