Sha256: 7104b75afc7e477acf756649439b0fc1d4e55416c34a6dc9c2ffe2045fd07a4d

Contents?: true

Size: 898 Bytes

Versions: 9

Compression:

Stored size: 898 Bytes

Contents

# frozen_string_literal: true

module Leftovers
  class ConfigLoader
    class ValueOrObjectSchema < ObjectSchema
      class << self
        attr_accessor :or_value_schema

        def validate(node)
          if node.hash?
            super(node)
          else
            validate_or_value_schema(node)
          end
        end

        def to_ruby(node)
          if node.hash?
            super
          else
            or_value_schema.to_ruby(node)
          end
        end

        private

        def validate_or_value_schema(node)
          or_value_schema.validate(node)
          return true if node.valid?

          if node.string? && attribute_for_key(node)
            node.error = "#{node.name_}#{node.to_sym} must be a hash key"
          else
            node.error += " or a hash with any of #{suggestions.join(', ')}"
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
leftovers-0.12.2 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.12.1 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.12.0 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.11.2 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.11.1 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.11.0 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.10.0 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.9.0 lib/leftovers/config_loader/value_or_object_schema.rb
leftovers-0.8.0 lib/leftovers/config_loader/value_or_object_schema.rb