Sha256: f9563e2d15ae1360574c3b53ad18db0d1d96bb6f6f57c2420fcc9640473880a7

Contents?: true

Size: 1.46 KB

Versions: 22

Compression:

Stored size: 1.46 KB

Contents

module HaveAPI::GoClient
  class Metadata
    class Type
      # @return [InputOutput, nil]
      attr_reader :input

      # @return [InputOutput, nil]
      attr_reader :output

      def initialize(action, type, desc)
        @input = desc[:input] && InputOutput.new(
          action,
          :"#{type}_meta",
          :input,
          desc[:input],
          prefix: "Meta#{type.to_s.capitalize}"
        )
        @output = desc[:output] && InputOutput.new(
          action,
          :"#{type}_meta",
          :output,
          desc[:output],
          prefix: "Meta#{type.to_s.capitalize}"
        )
      end

      def resolve_associations
        input && input.resolve_associations
        output && output.resolve_associations
      end
    end

    # @return [Type, nil]
    attr_reader :global

    # @return [Type, nil]
    attr_reader :object

    def initialize(action, desc)
      @global = desc[:global] && Type.new(action, :global, desc[:global])
      @object = desc[:object] && Type.new(action, :object, desc[:object])
    end

    def resolve_associations
      global && global.resolve_associations
      object && object.resolve_associations
    end

    %i(global object).each do |type|
      %i(input output).each do |dir|
        define_method(:"has_#{type}_#{dir}?") do
          t = send(type)
          next(false) unless t

          io = t.send(dir)
          next(false) unless io

          io.parameters.any?
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
haveapi-go-client-0.20.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.19.3 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.19.2 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.19.1 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.19.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.18.2 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.18.1 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.18.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.17.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.16.3 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.16.2 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.16.1 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.16.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.15.1 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.15.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.14.2 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.14.1 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.14.0 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.13.3 lib/haveapi/go_client/metadata.rb
haveapi-go-client-0.13.2 lib/haveapi/go_client/metadata.rb