class Playbook::Props::Base

def initialize(default: nil, required: false)

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

def validate(_value)

def validate(_value)
  true
end

def validate!(input_value)

def validate!(input_value)
  raise(Playbook::Props::Error, "#{inspect} is a required prop and needs to be provided a value") if required && input_value.nil?
  validate(value(input_value)) ||
    raise(Playbook::Props::Error, "Invalid value (#{input_value.inspect}) for prop (#{inspect})")
end

def value(value)

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