class TrustyCms::ResourceResponses::Response

def default(&block)

def default(&block)
  if block_given?
    @default = block
  end
  @default
end

def each_format

def each_format
  @block_order.each do |format|
    yield format, @blocks[format] if block_given?
  end
end

def each_published

def each_published
  publish_formats.each do |format|
    yield format, publish_block if block_given?
  end
end

def initialize

def initialize
  @publish_formats = []
  @blocks = {}
  @block_order = []
end

def initialize_copy(orig)

def initialize_copy(orig)
  @publish_formats = orig.publish_formats.dup
  @blocks = orig.blocks.dup
  @block_order = orig.block_order.dup
  @publish_block = orig.publish_block.dup if orig.publish_block
  @default = orig.default.dup if orig.default
end

def method_missing(method, *args, &block)

def method_missing(method, *args, &block)
  if block_given?
    @blocks[method] = block
    @block_order << method unless @block_order.include?(method)
  elsif args.empty?
    @block_order << method
  else
    super
  end
end

def publish(*formats, &block)

def publish(*formats, &block)
  @publish_formats.concat(formats)
  if block_given?
    @publish_block = block
  else
    raise ArgumentError, "Block required to publish" unless @publish_block
  end
end