class Playbook::Props::Base

Attributes

default[R]
deprecated[R]
kit[R]
name[R]
required[R]

Public Class Methods

new(default: nil, deprecated: false, required: false, name:, kit:) click to toggle source
# File lib/playbook/props/base.rb, line 10
def initialize(default: nil, deprecated: false, required: false, name:, kit:)
  @default = default
  @deprecated = deprecated
  @required = required
  @name = name
  @kit = kit
end

Public Instance Methods

validate(_value) click to toggle source
# File lib/playbook/props/base.rb, line 31
def validate(_value)
  true
end
validate!(input_value) click to toggle source
# File lib/playbook/props/base.rb, line 22
def validate!(input_value)
  warn("#{kit} Kit: The prop '#{name}' is deprecated and will be removed in a future release!") if deprecated && input_value # TODO: add some color for pop

  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
value(value) click to toggle source
# File lib/playbook/props/base.rb, line 18
def value(value)
  value.nil? ? @default : value
end

Private Instance Methods

log(message) click to toggle source
# File lib/playbook/props/base.rb, line 41
def log(message)
  logger = ActiveSupport::Logger.new(STDOUT)
  @logger ||= ActiveSupport::TaggedLogging.new(logger)
  @logger.log(0, message)
end
warn(message) click to toggle source
# File lib/playbook/props/base.rb, line 37
def warn(message)
  log("Prop Warning: #{message}")
end