Sha256: 5164d17ae2b95b23c2410a5558b9d75c6b6b392d74a3d9e5562cd6a1fe3b11f5

Contents?: true

Size: 1.4 KB

Versions: 15

Compression:

Stored size: 1.4 KB

Contents

require 'haveapi/go_client/utils'

module HaveAPI::GoClient
  class Parameters::Base
    include Utils

    # Register the parameter handler
    #
    # The block is called whenever a new parameter is to be instantiated. If
    # this class supports the parameter, the block returns true, else false.
    # The first class to return true is used.
    #
    # @yieldparam role [Symbol]
    # @yieldparam direction [Symbol]
    # @yieldparam name [String]
    # @yieldparam desc [Hash]
    # @yiledreturn [Boolean, nil]
    def self.handle(&block)
      Parameter.register(self, block)
    end

    # @return [InputOutput]
    attr_reader :io

    # Parameter name in the API
    # @return [String]
    attr_reader :name

    # HaveAPI data type
    # @return [String]
    attr_reader :type

    # Parameter name in Go
    # @return [String]
    attr_reader :go_name

    # Go type for action input
    # @return [String]
    attr_reader :go_in_type

    # Go type for action output
    # @return [String]
    attr_reader :go_out_type

    def initialize(io, name, desc)
      @io = io
      @name = name
      @type = desc[:type]
      @desc = desc
      @go_name = camelize(name)
    end

    def resolve
      do_resolve
      @desc = nil
    end

    def nillable?
      false
    end

    def <=>(other)
      go_name <=> other
    end

    protected

    # @return [Hash]
    attr_reader :desc

    def do_resolve; end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
haveapi-go-client-0.26.0 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.25.0 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.24.0 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.7 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.6 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.5 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.4 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.3 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.2 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.1 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.23.0 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.22.1 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.22.0 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.21.1 lib/haveapi/go_client/parameters/base.rb
haveapi-go-client-0.21.0 lib/haveapi/go_client/parameters/base.rb