Sha256: 0181ee69ff2d78c579c6e0c197ba80a750324dfea688852f732e4c85bd16b30d

Contents?: true

Size: 1.61 KB

Versions: 25

Compression:

Stored size: 1.61 KB

Contents

# frozen_string_literal: true
module Dynflow

  # Input/output format validation logic calling
  # input_format/output_format with block acts as a setter for
  # specifying the format. Without a block it acts as a getter
  module Action::Format

    # we don't evaluate tbe block immediatelly, but postpone it till all the
    # action classes are loaded, because we can use them to reference output format
    def input_format(&block)
      case
      when block && !@input_format_block
        @input_format_block = block
      when !block && @input_format_block
        return @input_format ||= Apipie::Params::Description.define(&@input_format_block)
      when block && @input_format_block
        raise "The input_format has already been defined in #{self.class}"
      when !block && !@input_format_block
        if superclass.respond_to? :input_format
          superclass.input_format
        else
          raise "The input_format has not been defined yet in #{self.class}"
        end
      end
    end

    def output_format(&block)
      case
      when block && !@output_format_block
        @output_format_block = block
      when !block && @output_format_block
        return @output_format ||= Apipie::Params::Description.define(&@output_format_block)
      when block && @output_format_block
        raise "The output_format has already been defined in #{self.class}"
      when !block && !@output_format_block
        if superclass.respond_to? :output_format
          superclass.output_format
        else
          raise "The output_format has not been defined yet in #{self.class}"
        end
      end
    end

  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
dynflow-1.8.2 lib/dynflow/action/format.rb
dynflow-1.8.1 lib/dynflow/action/format.rb
dynflow-1.8.0 lib/dynflow/action/format.rb
dynflow-1.7.0 lib/dynflow/action/format.rb
dynflow-1.6.11 lib/dynflow/action/format.rb
dynflow-1.6.10 lib/dynflow/action/format.rb
dynflow-1.6.8 lib/dynflow/action/format.rb
dynflow-1.6.7 lib/dynflow/action/format.rb
dynflow-1.6.6 lib/dynflow/action/format.rb
dynflow-1.6.5 lib/dynflow/action/format.rb
dynflow-1.6.4 lib/dynflow/action/format.rb
dynflow-1.6.3 lib/dynflow/action/format.rb
dynflow-1.6.2 lib/dynflow/action/format.rb
dynflow-1.6.1 lib/dynflow/action/format.rb
dynflow-1.4.9 lib/dynflow/action/format.rb
dynflow-1.4.8 lib/dynflow/action/format.rb
dynflow-1.5.0 lib/dynflow/action/format.rb
dynflow-1.4.7 lib/dynflow/action/format.rb
dynflow-1.4.6 lib/dynflow/action/format.rb
dynflow-1.4.5 lib/dynflow/action/format.rb