Sha256: a1e18edc5fbb6375acec29e6ac89f7cf2a55bef70545232ab46f852a96b4019a

Contents?: true

Size: 854 Bytes

Versions: 40

Compression:

Stored size: 854 Bytes

Contents

# frozen_string_literal: true

module Playbook
  module Props
    class Error < StandardError; end

    class Base
      attr_reader :default, :required, :name, :kit

      def initialize(default: nil, required: false, name:, kit:)
        @default = default
        @required = required
        @name = name
        @kit = kit
      end

      def value(value)
        value.nil? ? @default : value
      end

      def validate!(input_value)
        raise(Playbook::Props::Error, "#{kit} prop '#{name}' of type #{inspect.class} is required and needs a value") if required && input_value.nil?

        validate(value(input_value)) ||
          raise(Playbook::Props::Error, "#{kit} has invalid value of '#{input_value.inspect}' for prop '#{name}' of type #{inspect.class}")
      end

      def validate(_value)
        true
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
playbook_ui-7.10.0 lib/playbook/props/base.rb
playbook_ui-7.9.0 app/pb_kits/playbook/props/base.rb
playbook_ui-7.8.4 app/pb_kits/playbook/props/base.rb
playbook_ui-7.8.3 app/pb_kits/playbook/props/base.rb
playbook_ui-7.8.2 app/pb_kits/playbook/props/base.rb
playbook_ui-7.8.1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.8.0 app/pb_kits/playbook/props/base.rb
playbook_ui-7.7.0.pre.alpha1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.7.0 app/pb_kits/playbook/props/base.rb
playbook_ui-7.6.2.pre.alpha1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.6.2 app/pb_kits/playbook/props/base.rb
playbook_ui-7.6.1.pre.alpha1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.6.1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.6.0 app/pb_kits/playbook/props/base.rb
playbook_ui-7.5.1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.5.0 app/pb_kits/playbook/props/base.rb
playbook_ui-7.4.2 app/pb_kits/playbook/props/base.rb
playbook_ui-7.4.1 app/pb_kits/playbook/props/base.rb
playbook_ui-7.4.0.pre.alpha6 app/pb_kits/playbook/props/base.rb
playbook_ui-7.4.0.pre.alpha5 app/pb_kits/playbook/props/base.rb