module Substance::Objects::Output

Public Instance Methods

ensure_validation_before(method) click to toggle source
Calls superclass method
# File lib/substance/objects/output.rb, line 40
def ensure_validation_before(method)
  around_method method do |*args, **opts|
    raise NotValidatedError unless validated_output?(method)

    # TODO: replace with `super(...)` when <= 2.6 support is dropped
    if RUBY_VERSION < "2.7" && opts.blank?
      super(*args)
    else
      super(*args, **opts)
    end
  end
end
inherited(base) click to toggle source
Calls superclass method
# File lib/substance/objects/output.rb, line 25
def inherited(base)
  base._outputs = _outputs.dup
  super
end
output(output, default: nil, &block) click to toggle source
# File lib/substance/objects/output.rb, line 32
def output(output, default: nil, &block)
  _outputs << output
  define_attribute output
  define_default output, static: default, &block
  ensure_validation_before output
  ensure_validation_before "#{output}=".to_sym
end
output_struct() click to toggle source
# File lib/substance/objects/output.rb, line 60
def output_struct
  Struct.new(*_outputs)
end
outputs() click to toggle source
# File lib/substance/objects/output.rb, line 54
def outputs
  return {} if _outputs.empty?

  output_struct.new(*_outputs.map(&method(:public_send)))
end
validated_output?(method) click to toggle source
# File lib/substance/objects/output.rb, line 64
def validated_output?(method)
  validated? || begin
    attr_name = method.to_s.delete("=").to_sym

    _options.include?(attr_name) || _arguments.include?(attr_name)
  end
end