Sha256: c5fa03a90ffbfe5e4d375ba4046ca6355c4dded0405dab7ca0c3ad3716d893de

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require 'unparser'

module Yoda
  module Model
    module Descriptions
      class NodeDescription < Base
        # @return [::Parser::AST::Node]
        attr_reader :node

        # @return [TypeExpressions::Base]
        attr_reader :type

        # @param node  [AST::Vnode]
        # @param type [TypeExpressions::Base]
        def initialize(node, type)
          @node = node
          @type = type
        end

        # @return [String]
        def title
          node_body
        end

        # @return [String]
        def sort_text
          node_body
        end

        # @return [String]
        def to_markdown
          <<~EOS
          #{node_body.gsub("\n", ";")}: #{type}
          EOS
        end

        def markup_content
          {
            language: 'ruby',
            value: "#{node_body.gsub("\n", ";")} # #{type}",
          }
        end

        private

        # @return [String]
        def node_body
          @node_body ||= begin
            if node.respond_to?(:node)
              Unparser.unparse(node.node)
            end
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/model/descriptions/node_description.rb
yoda-language-server-0.10.0 lib/yoda/model/descriptions/node_description.rb
yoda-language-server-0.9.0 lib/yoda/model/descriptions/node_description.rb
yoda-language-server-0.8.0 lib/yoda/model/descriptions/node_description.rb