attribute_struct 0.4.4 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/CONTRIBUTING.md +10 -14
- data/LICENSE +2 -2
- data/attribute_struct.gemspec +1 -2
- data/lib/attribute_struct/attribute_hash.rb +0 -2
- data/lib/attribute_struct/attribute_struct.rb +8 -6
- data/lib/attribute_struct/augmented.rb +0 -2
- data/lib/attribute_struct/irb_compat.rb +10 -8
- data/lib/attribute_struct/monkey_camels.rb +19 -10
- data/lib/attribute_struct/version.rb +1 -1
- data/lib/attribute_struct.rb +1 -5
- metadata +5 -20
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a88c87931988bfa2b2e576583dbfb8ee6a8b1c5091cb1c62b58f39dddf7f89ec
         | 
| 4 | 
            +
              data.tar.gz: 743c6adaaa2992229bcc42e5daf0cebd9a59c91a12f3f83c06a7a4eba672e02f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: c8df0dcb1c017726e1a2a3b698979fb1e257df3b18e02a7812a27ba7c7e7cfb50fe1fdbdc20625497d4b6eab339ef793d086c70504cc4ec3b7051cac9b75cdb1
         | 
| 7 | 
            +
              data.tar.gz: fa93e5e6850bd7d3cb516b6d6e6ca770a6660b561a13c5abf0da15df5b86a3c81ca7c0644c84fcc07cea100225b80c686002a00d5051057da9981633fb5c4c53
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/CONTRIBUTING.md
    CHANGED
    
    | @@ -1,22 +1,18 @@ | |
| 1 1 | 
             
            # Contributing
         | 
| 2 2 |  | 
| 3 | 
            -
            ##  | 
| 3 | 
            +
            ## Fixes
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 5 | 
            +
            Have a fix to some bug you want to submit? Well you're
         | 
| 6 | 
            +
            awesome. Please just include a description of the bug
         | 
| 7 | 
            +
            (or link to originating issue) and test coverage on the
         | 
| 8 | 
            +
            modifications.
         | 
| 6 9 |  | 
| 7 | 
            -
             | 
| 10 | 
            +
            ## New Features
         | 
| 8 11 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 12 | 
            -
             | 
| 13 | 
            -
            ## Pull requests
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            * https://github.com/chrisroberts/attribute_struct/pulls
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            Please base all pull requests off the `develop` branch. Merges to
         | 
| 18 | 
            -
            `master` only occur through the `develop` branch. Pull requests
         | 
| 19 | 
            -
            based on `master` will likely be cherry picked.
         | 
| 12 | 
            +
            Have a new feature you want to add? Well you're awesome
         | 
| 13 | 
            +
            too! It may be a good idea to submit an issue first to
         | 
| 14 | 
            +
            describe the desired feature and get any feedback. Please
         | 
| 15 | 
            +
            be sure to include tests.
         | 
| 20 16 |  | 
| 21 17 | 
             
            ## Issues
         | 
| 22 18 |  | 
    
        data/LICENSE
    CHANGED
    
    | @@ -1,4 +1,4 @@ | |
| 1 | 
            -
               Copyright  | 
| 1 | 
            +
               Copyright 2022 Chris Roberts
         | 
| 2 2 |  | 
| 3 3 | 
             
               Licensed under the Apache License, Version 2.0 (the "License");
         | 
| 4 4 | 
             
               you may not use this file except in compliance with the License.
         | 
| @@ -10,4 +10,4 @@ | |
| 10 10 | 
             
               distributed under the License is distributed on an "AS IS" BASIS,
         | 
| 11 11 | 
             
               WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         | 
| 12 12 | 
             
               See the License for the specific language governing permissions and
         | 
| 13 | 
            -
               limitations under the License.
         | 
| 13 | 
            +
               limitations under the License.
         | 
    
        data/attribute_struct.gemspec
    CHANGED
    
    | @@ -12,8 +12,7 @@ Gem::Specification.new do |s| | |
| 12 12 | 
             
              s.require_path = "lib"
         | 
| 13 13 | 
             
              s.add_runtime_dependency "bogo", ">= 0.1.31", "< 0.3.0"
         | 
| 14 14 | 
             
              s.add_development_dependency "rspec", "~> 3.5"
         | 
| 15 | 
            -
              s.add_development_dependency "rake", "~>  | 
| 16 | 
            -
              s.add_development_dependency "rufo", "~> 0.3.0"
         | 
| 15 | 
            +
              s.add_development_dependency "rake", "~> 13"
         | 
| 17 16 | 
             
              s.add_development_dependency "minitest"
         | 
| 18 17 | 
             
              s.files = Dir["lib/**/*"] + %w(attribute_struct.gemspec README.md CHANGELOG.md CONTRIBUTING.md LICENSE)
         | 
| 19 18 | 
             
            end
         | 
| @@ -1,9 +1,8 @@ | |
| 1 | 
            -
            require "attribute_struct"
         | 
| 1 | 
            +
            require "attribute_struct/attribute_hash"
         | 
| 2 | 
            +
            require "attribute_struct/augmented"
         | 
| 3 | 
            +
            require "attribute_struct/monkey_camels"
         | 
| 2 4 |  | 
| 3 5 | 
             
            class AttributeStruct < BasicObject
         | 
| 4 | 
            -
              autoload :Augmented, "attribute_struct/augmented"
         | 
| 5 | 
            -
              autoload :Mash, "attribute_struct/attribute_hash"
         | 
| 6 | 
            -
             | 
| 7 6 | 
             
              class << self
         | 
| 8 7 |  | 
| 9 8 | 
             
                # @return [Hash] valid styles and mapped value
         | 
| @@ -56,7 +55,7 @@ class AttributeStruct < BasicObject | |
| 56 55 |  | 
| 57 56 | 
             
                # Loads helpers for camel casing
         | 
| 58 57 | 
             
                def load_the_camels
         | 
| 59 | 
            -
                  unless (@camels_loaded)
         | 
| 58 | 
            +
                  unless defined?(@camels_loaded)
         | 
| 60 59 | 
             
                    require "attribute_struct/monkey_camels"
         | 
| 61 60 | 
             
                    @camels_loaded = true
         | 
| 62 61 | 
             
                  end
         | 
| @@ -105,7 +104,10 @@ class AttributeStruct < BasicObject | |
| 105 104 | 
             
              # @yield block to execute within struct context
         | 
| 106 105 | 
             
              def initialize(init_hash = nil, &block)
         | 
| 107 106 | 
             
                @_camel_keys = _klass.camel_keys
         | 
| 107 | 
            +
                @_camel_keys_set = nil
         | 
| 108 | 
            +
                @_parent = nil
         | 
| 108 109 | 
             
                @_arg_state = __hashish.new
         | 
| 110 | 
            +
                @_kernelified = false
         | 
| 109 111 | 
             
                @_objectified = false
         | 
| 110 112 | 
             
                @table = __hashish.new
         | 
| 111 113 | 
             
                if (init_hash)
         | 
| @@ -516,7 +518,7 @@ class AttributeStruct < BasicObject | |
| 516 518 | 
             
              # @return [String, Symbol]
         | 
| 517 519 | 
             
              def _process_key(key, *args)
         | 
| 518 520 | 
             
                if (key.is_a?(::String) || key.is_a?(::Symbol))
         | 
| 519 | 
            -
                  key =  | 
| 521 | 
            +
                  key = CamelString.new(key.to_s)
         | 
| 520 522 | 
             
                  if (_camel_keys && _camel_keys_action && !key._hump_format_requested?)
         | 
| 521 523 | 
             
                    case _camel_keys_action
         | 
| 522 524 | 
             
                    when :auto_disable
         | 
| @@ -1,13 +1,15 @@ | |
| 1 1 | 
             
            # Helper methods for IRB interactions
         | 
| 2 | 
            -
            module  | 
| 2 | 
            +
            module AttributeStruct
         | 
| 3 | 
            +
              module IrbCompat
         | 
| 3 4 |  | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 5 | 
            +
                # @return [String] object inspection
         | 
| 6 | 
            +
                def inspect
         | 
| 7 | 
            +
                  "<[#{self._klass}:#{@table.object_id}] - table: #{@table.inspect}>"
         | 
| 8 | 
            +
                end
         | 
| 8 9 |  | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 10 | 
            +
                # @return [String] string of instance
         | 
| 11 | 
            +
                def to_s
         | 
| 12 | 
            +
                  "<#{self._klass}:#{@table.object_id}>"
         | 
| 13 | 
            +
                end
         | 
| 12 14 | 
             
              end
         | 
| 13 15 | 
             
            end
         | 
| @@ -1,6 +1,4 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            unless (defined?(MonkeyCamels))
         | 
| 1 | 
            +
            class AttributeStruct
         | 
| 4 2 | 
             
              module MonkeyCamels
         | 
| 5 3 | 
             
                class << self
         | 
| 6 4 | 
             
                  def included(klass)
         | 
| @@ -36,15 +34,22 @@ unless (defined?(MonkeyCamels)) | |
| 36 34 | 
             
                end
         | 
| 37 35 |  | 
| 38 36 | 
             
                module Humps
         | 
| 39 | 
            -
             | 
| 40 37 | 
             
                  # @return [TrueClass, FalseClass] specific style requested
         | 
| 41 38 | 
             
                  def _hump_format_requested?
         | 
| 42 | 
            -
                    @__not_camel | 
| 39 | 
            +
                    if defined?(@__not_camel)
         | 
| 40 | 
            +
                      @__not_camel != nil
         | 
| 41 | 
            +
                    else
         | 
| 42 | 
            +
                      false
         | 
| 43 | 
            +
                    end
         | 
| 43 44 | 
             
                  end
         | 
| 44 45 |  | 
| 45 46 | 
             
                  # @return [TrueClass, FalseClass] camelized
         | 
| 46 47 | 
             
                  def _camel?
         | 
| 47 | 
            -
                     | 
| 48 | 
            +
                    if defined?(@__not_camel)
         | 
| 49 | 
            +
                      !@__not_camel
         | 
| 50 | 
            +
                    else
         | 
| 51 | 
            +
                      true
         | 
| 52 | 
            +
                    end
         | 
| 48 53 | 
             
                  end
         | 
| 49 54 |  | 
| 50 55 | 
             
                  # @return [self] disable camelizing
         | 
| @@ -65,7 +70,9 @@ unless (defined?(MonkeyCamels)) | |
| 65 70 |  | 
| 66 71 | 
             
                  # @return [Symbol, NilClass] style of hump
         | 
| 67 72 | 
             
                  def _hump_style
         | 
| 68 | 
            -
                    @__hump_style
         | 
| 73 | 
            +
                    if defined?(@__hump_style)
         | 
| 74 | 
            +
                      @__hump_style
         | 
| 75 | 
            +
                    end
         | 
| 69 76 | 
             
                  end
         | 
| 70 77 |  | 
| 71 78 | 
             
                  alias_method :hump_style!, :_hump_style
         | 
| @@ -97,16 +104,18 @@ unless (defined?(MonkeyCamels)) | |
| 97 104 | 
             
              end
         | 
| 98 105 |  | 
| 99 106 | 
             
              # Force some monkeys around
         | 
| 100 | 
            -
              String.send(:include, MonkeyCamels)
         | 
| 101 | 
            -
              Symbol.send(:include, MonkeyCamels)
         | 
| 107 | 
            +
              ::String.send(:include, MonkeyCamels)
         | 
| 108 | 
            +
              ::Symbol.send(:include, MonkeyCamels)
         | 
| 102 109 |  | 
| 103 110 | 
             
              # Specialized String type
         | 
| 104 | 
            -
              class CamelString < String
         | 
| 111 | 
            +
              class CamelString < ::String
         | 
| 105 112 | 
             
                def initialize(val = nil)
         | 
| 106 113 | 
             
                  super
         | 
| 107 114 | 
             
                  if (val.respond_to?(:_camel?))
         | 
| 108 115 | 
             
                    _no_hump unless val._camel?
         | 
| 109 116 | 
             
                    @__hump_style = val._hump_style
         | 
| 117 | 
            +
                  else
         | 
| 118 | 
            +
                    @__hump_style = nil
         | 
| 110 119 | 
             
                  end
         | 
| 111 120 | 
             
                end
         | 
| 112 121 | 
             
              end
         | 
    
        data/lib/attribute_struct.rb
    CHANGED
    
    | @@ -1,8 +1,4 @@ | |
| 1 1 | 
             
            require "bogo"
         | 
| 2 | 
            -
            require "attribute_struct/attribute_struct"
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            autoload :MonkeyCamels, "attribute_struct/monkey_camels"
         | 
| 5 | 
            -
            autoload :CamelString, "attribute_struct/monkey_camels"
         | 
| 6 | 
            -
            autoload :IrbCompat, "attribute_struct/irb_compat"
         | 
| 7 2 |  | 
| 3 | 
            +
            require "attribute_struct/attribute_struct"
         | 
| 8 4 | 
             
            require "attribute_struct/version"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: attribute_struct
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Chris Roberts
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-10-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bogo
         | 
| @@ -50,28 +50,14 @@ dependencies: | |
| 50 50 | 
             
                requirements:
         | 
| 51 51 | 
             
                - - "~>"
         | 
| 52 52 | 
             
                  - !ruby/object:Gem::Version
         | 
| 53 | 
            -
                    version: ' | 
| 53 | 
            +
                    version: '13'
         | 
| 54 54 | 
             
              type: :development
         | 
| 55 55 | 
             
              prerelease: false
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 57 | 
             
                requirements:
         | 
| 58 58 | 
             
                - - "~>"
         | 
| 59 59 | 
             
                  - !ruby/object:Gem::Version
         | 
| 60 | 
            -
                    version: ' | 
| 61 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 62 | 
            -
              name: rufo
         | 
| 63 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 64 | 
            -
                requirements:
         | 
| 65 | 
            -
                - - "~>"
         | 
| 66 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 67 | 
            -
                    version: 0.3.0
         | 
| 68 | 
            -
              type: :development
         | 
| 69 | 
            -
              prerelease: false
         | 
| 70 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 71 | 
            -
                requirements:
         | 
| 72 | 
            -
                - - "~>"
         | 
| 73 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 74 | 
            -
                    version: 0.3.0
         | 
| 60 | 
            +
                    version: '13'
         | 
| 75 61 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 76 62 | 
             
              name: minitest
         | 
| 77 63 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -123,8 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 123 109 | 
             
                - !ruby/object:Gem::Version
         | 
| 124 110 | 
             
                  version: '0'
         | 
| 125 111 | 
             
            requirements: []
         | 
| 126 | 
            -
             | 
| 127 | 
            -
            rubygems_version: 2.7.6
         | 
| 112 | 
            +
            rubygems_version: 3.4.0.dev
         | 
| 128 113 | 
             
            signing_key: 
         | 
| 129 114 | 
             
            specification_version: 4
         | 
| 130 115 | 
             
            summary: Attribute structures
         |