Sha256: 46dc2679f22e4e5b82f090c688fbb57cbfbe2c89a412a7c43a0b3dcaf9f061ee

Contents?: true

Size: 1.27 KB

Versions: 8

Compression:

Stored size: 1.27 KB

Contents

module Yoda
  module Store
    module Objects
      class Overload
        class << self
          def json_creatable?
            true
          end

          # @param params [Hash]
          def json_create(params)
            new(params.map { |k, v| [k.to_sym, v] }.select { |(k, v)| %i(name tag_list document parameters).include?(k) }.to_h)
          end
        end

        # @return [String]
        attr_reader :name

        # @return [Array<(String, String)>]
        attr_reader :parameters

        # @return [String, nil]
        attr_reader :document

        # @return [Array<Tag>]
        attr_reader :tag_list

        # @param name [String]
        # @param parameters [Array<(String, String)>]
        # @param document [String]
        # @param tag_list [Array<Tag>]
        def initialize(name:, parameters: [], document: '', tag_list: [])
          @name = name
          @parameters = parameters
          @document = document
          @tag_list = tag_list
        end

        # @return [Hash]
        def to_h
          { name: name, parameters: parameters, document: document, tag_list: tag_list }
        end

        # @return [String]
        def to_json(_mode = nil)
          to_h.merge(json_class: self.class.name).to_json
        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/store/objects/overload.rb
yoda-language-server-0.7.1 lib/yoda/store/objects/overload.rb
yoda-language-server-0.7.0 lib/yoda/store/objects/overload.rb
yoda-language-server-0.6.2 lib/yoda/store/objects/overload.rb
yoda-language-server-0.6.1 lib/yoda/store/objects/overload.rb
yoda-language-server-0.6.0 lib/yoda/store/objects/overload.rb
yoda-language-server-0.5.0 lib/yoda/store/objects/overload.rb
yoda-language-server-0.4.0 lib/yoda/store/objects/overload.rb