Sha256: 3e358be8831aa38171f1a86935033b45cd1f8e3740ed84c6ed2a68b8debf05dd

Contents?: true

Size: 674 Bytes

Versions: 26

Compression:

Stored size: 674 Bytes

Contents

module Foobara
  module BuiltinTypes
    module Attributes
      module Casters
        class Hash < Value::Caster
          def applicable?(value)
            value.is_a?(::Hash) && value.keys.all? { |key| key.is_a?(::Symbol) || key.is_a?(::String) }
          end

          def applies_message
            "be a hash with symbolizable keys"
          end

          def cast(hash)
            keys = hash.keys
            non_symbolic_keys = keys.reject { |key| key.is_a?(::Symbol) }

            if non_symbolic_keys.empty?
              hash
            else
              Util.symbolize_keys(hash)
            end
          end
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
foobara-0.0.26 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.25 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.24 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.23 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.22 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.21 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.20 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.19 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.18 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.17 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.16 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.15 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.14 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.13 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.12 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.11 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.10 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.9 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.8 projects/builtin_types/src/attributes/casters/hash.rb
foobara-0.0.7 projects/builtin_types/src/attributes/casters/hash.rb