Class: Parser::Source::Comment
- Inherits:
- 
      Object
      
        - Object
- Parser::Source::Comment
 
- Defined in:
- lib/parser/source/comment.rb
Overview
A comment in the source code.
Defined Under Namespace
Classes: Associator
Instance Attribute Summary (collapse)
- 
  
    
      - (Parser::Source::Map) location 
    
    
      (also: #loc)
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
- 
  
    
      - (String) text 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Class Method Summary (collapse)
- + (Hash(Parser::AST::Node, Array(Comment))) associate(ast, comments) deprecated Deprecated.
- 
  
    
      + (Hash(Parser::Source::Map, Array(Comment))) associate_locations(ast, comments) 
    
    
  
  
  
  
  
  
  
  
  
    Associate commentswithastnodes by their location in the source.
Instance Method Summary (collapse)
- 
  
    
      - (Boolean) ==(other) 
    
    
  
  
  
  
  
  
  
  
  
    Compares comments. 
- 
  
    
      - (Boolean) document? 
    
    
  
  
  
  
  
  
  
  
  
    True if this is a block comment. 
- 
  
    
      - (Comment) initialize(range) 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Comment. 
- 
  
    
      - (Boolean) inline? 
    
    
  
  
  
  
  
  
  
  
  
    True if this is an inline comment. 
- 
  
    
      - (String) inspect 
    
    
  
  
  
  
  
  
  
  
  
    A human-readable representation of this comment. 
- 
  
    
      - (Symbol) type 
    
    
  
  
  
  
  
  
  
  
  
    Type of this comment. 
Constructor Details
- (Comment) initialize(range)
Returns a new instance of Comment
| 52 53 54 55 56 57 | # File 'lib/parser/source/comment.rb', line 52 def initialize(range) @location = Parser::Source::Map.new(range) @text = range.source.freeze freeze end | 
Instance Attribute Details
- (Parser::Source::Map) location (readonly) Also known as: loc
| 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | # File 'lib/parser/source/comment.rb', line 15 class Comment attr_reader :text attr_reader :location alias_method :loc, :location ## # 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}. # 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 # def self.associate_locations(ast, comments) associator = Associator.new(ast, comments) associator.associate_locations end ## # @param [Parser::Source::Range] range # def initialize(range) @location = Parser::Source::Map.new(range) @text = range.source.freeze freeze 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] # def type case text when /^#/ :inline when /^=begin/ :document end end ## # @see #type # @return [Boolean] true if this is an inline comment. # def inline? type == :inline end ## # @see #type # @return [Boolean] true if this is a block comment. # def document? type == :document end ## # Compares comments. Two comments are equal if they # correspond to the same source range. # # @param [Object] other # @return [Boolean] # def ==(other) other.is_a?(Source::Comment) && @location == other.location end ## # @return [String] a human-readable representation of this comment # def inspect "#<Parser::Source::Comment #{@location.expression.to_s} #{text.inspect}>" end end | 
- (String) text (readonly)
| 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | # File 'lib/parser/source/comment.rb', line 15 class Comment attr_reader :text attr_reader :location alias_method :loc, :location ## # 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}. # 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 # def self.associate_locations(ast, comments) associator = Associator.new(ast, comments) associator.associate_locations end ## # @param [Parser::Source::Range] range # def initialize(range) @location = Parser::Source::Map.new(range) @text = range.source.freeze freeze 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] # def type case text when /^#/ :inline when /^=begin/ :document end end ## # @see #type # @return [Boolean] true if this is an inline comment. # def inline? type == :inline end ## # @see #type # @return [Boolean] true if this is a block comment. # def document? type == :document end ## # Compares comments. Two comments are equal if they # correspond to the same source range. # # @param [Object] other # @return [Boolean] # def ==(other) other.is_a?(Source::Comment) && @location == other.location end ## # @return [String] a human-readable representation of this comment # def inspect "#<Parser::Source::Comment #{@location.expression.to_s} #{text.inspect}>" end end | 
Class Method Details
+ (Hash(Parser::AST::Node, Array(Comment))) associate(ast, comments)
Use associate_locations.
Associate comments with ast nodes by their corresponding node.
| 30 31 32 33 | # File 'lib/parser/source/comment.rb', line 30 def self.associate(ast, comments) associator = Associator.new(ast, comments) associator.associate end | 
+ (Hash(Parser::Source::Map, Array(Comment))) associate_locations(ast, comments)
Associate comments with ast nodes by their location in the
source.
| 44 45 46 47 | # File 'lib/parser/source/comment.rb', line 44 def self.associate_locations(ast, comments) associator = Associator.new(ast, comments) associator.associate_locations end | 
Instance Method Details
- (Boolean) ==(other)
Compares comments. Two comments are equal if they correspond to the same source range.
| 106 107 108 109 | # File 'lib/parser/source/comment.rb', line 106 def ==(other) other.is_a?(Source::Comment) && @location == other.location end | 
- (Boolean) document?
Returns true if this is a block comment.
| 95 96 97 | # File 'lib/parser/source/comment.rb', line 95 def document? type == :document end | 
- (Boolean) inline?
Returns true if this is an inline comment.
| 87 88 89 | # File 'lib/parser/source/comment.rb', line 87 def inline? type == :inline end | 
- (String) inspect
Returns a human-readable representation of this comment
| 114 115 116 | # File 'lib/parser/source/comment.rb', line 114 def inspect "#<Parser::Source::Comment #{@location.expression.to_s} #{text.inspect}>" end | 
- (Symbol) type
Type of this comment.
- 
    Inline comments correspond to :inline:# whatever
- 
    Block comments correspond to :document:=begin hi i am a document =end
| 74 75 76 77 78 79 80 81 | # File 'lib/parser/source/comment.rb', line 74 def type case text when /^#/ :inline when /^=begin/ :document end end |