Sha256: 51b38f39d65ab172499db8baa08b2b7f32f2b43d0f4dc1a5bb732cf60b458a9f

Contents?: true

Size: 1.62 KB

Versions: 8

Compression:

Stored size: 1.62 KB

Contents

module Yoda
  module Model
    module FunctionSignatures
      # Constructor provides a signature of `YourClass.new` from `initialize` method of the class.
      class Constructor < Base
        # @type Store::Objects::MethodObject
        attr_reader :initialize_method

        # @param namespace [Store::Objects::NamespaceObject]
        # @param initialize_method [Store::Objects::MethodObject]
        def initialize(namespace, initialize_method)
          @namespace = namespace
          @initialize_method = initialize_method
        end

        def type
          type_builder.type
        end

        def name
          'new'
        end

        def visibility
          :public
        end

        def sep
          '.'
        end

        def namespace_path
          initialize_method.namespace_path
        end

        # @return [String]
        def document
          initialize_method.document
        end

        # @return [Array<(String, Integer, Integer)>]
        def sources
          initialize_method.sources
        end

        # @return [ParameterList]
        def parameters
          @parameters ||= ParameterList.new(initialize_method.parameters)
        end

        # @return [(String, Integer, Integer), nil]
        def primary_source
          initialize_method.primary_source
        end

        # @return [Types::Base, nil]
        def parameter_type_of(param)
          type_builder.type_of(param)
        end

        private

        # @return [TypeBuilder]
        def type_builder
          @type_builder ||= TypeBuilder.new(parameters, initialize_method.tag_list)
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
yoda-language-server-0.7.2 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.7.1 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.7.0 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.6.2 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.6.1 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.6.0 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.5.0 lib/yoda/model/function_signatures/constructor.rb
yoda-language-server-0.4.0 lib/yoda/model/function_signatures/constructor.rb