Sha256: dcedaa83fd8092c2cffdbcfe2f8d16049b4cd773fddcdb3b02caf7d8e24972de

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Leftovers
  class ConfigLoader
    class Attribute
      attr_reader(
        :name,
        :aliases, :schema # leftovers:test_only
      )

      attr_accessor :require_group

      def initialize(name, schema, aliases: nil, require_group: nil, suggest: true)
        @name = name
        @schema = schema
        @aliases = aliases
        @require_group = require_group
        @suggest = suggest
      end

      def without_require_group
        new = dup
        new.require_group = nil
        new
      end

      def suggest?
        @suggest
      end

      def attributes
        [self]
      end

      def name?(name)
        name = name.to_sym

        @name == name || Leftovers.each_or_self(@aliases).include?(name)
      end

      def to_ruby(value)
        [key_to_ruby, @schema.to_ruby(value)]
      end

      def validate_value(value)
        @schema.validate(value)
      end

      private

      def key_to_ruby
        name == :unless ? :unless_arg : name
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
leftovers-0.11.1 lib/leftovers/config_loader/attribute.rb
leftovers-0.11.0 lib/leftovers/config_loader/attribute.rb
leftovers-0.10.0 lib/leftovers/config_loader/attribute.rb
leftovers-0.9.0 lib/leftovers/config_loader/attribute.rb
leftovers-0.8.0 lib/leftovers/config_loader/attribute.rb