class Parser::Source::Comment
A comment in the source code.
@!attribute [r] text
@return [String]
@!attribute [r] location
@return [Parser::Source::Map]
@api public
Attributes
Public Class Methods
Associate `comments` with `ast` nodes by their corresponding node.
@param [Parser::AST::Node] ast @param [Array(Comment
)] comments @return [Hash(Parser::AST::Node
, Array(Comment
))] @see Parser::Source::Comment::Associator#associate
@deprecated Use {associate_locations}.
# File lib/parser/source/comment.rb, line 30 def self.associate(ast, comments) associator = Associator.new(ast, comments) associator.associate end
Associate `comments` with `ast` nodes by their location in the source.
@param [Parser::AST::Node] ast @param [Array(Comment
)] comments @return [Hash(Parser::Source::Map
, Array(Comment
))] @see Parser::Source::Comment::Associator#associate_locations
# File lib/parser/source/comment.rb, line 44 def self.associate_locations(ast, comments) associator = Associator.new(ast, comments) associator.associate_locations end
@param [Parser::Source::Range] range
# File lib/parser/source/comment.rb, line 52 def initialize(range) @location = Parser::Source::Map.new(range) @text = range.source.freeze freeze end
Public Instance Methods
Compares comments. Two comments are equal if they correspond to the same source range.
@param [Object] other @return [Boolean]
# File lib/parser/source/comment.rb, line 106 def ==(other) other.is_a?(Source::Comment) && @location == other.location end
@see type
@return [Boolean] true if this is a block comment.
# File lib/parser/source/comment.rb, line 95 def document? type == :document end
@see type
@return [Boolean] true if this is an inline comment.
# File lib/parser/source/comment.rb, line 87 def inline? type == :inline end
@return [String] a human-readable representation of this comment
# File lib/parser/source/comment.rb, line 114 def inspect "#<Parser::Source::Comment #{@location.expression.to_s} #{text.inspect}>" end
Type of this comment.
* Inline comments correspond to `:inline`: # whatever * Block comments correspond to `:document`: =begin hi i am a document =end
@return [Symbol]
# File lib/parser/source/comment.rb, line 74 def type case text when /^#/ :inline when /^=begin/ :document end end