class RipperRubyParser::CommentingRipperParser
Variant of Ripper's SexpBuilder parser class that inserts comments as Sexps into the built parse tree.
@api private
Constants
- NUMBER_LITERAL_TYPES
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 13 def initialize(*args) super @comment = "" @comment_stack = [] @delimiter_stack = [] @space_before = false @seen_space = false @in_symbol = false end
Public Instance Methods
parse()
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 23 def parse result = super raise "Ripper parse failed." unless result Sexp.from_array(result) end
Private Instance Methods
commentize(_name, exp)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 330 def commentize(_name, exp) (_, _kw, loc), comment = @comment_stack.pop @comment = "" exp.push loc [:comment, comment, exp] end
on_BEGIN(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 302 def on_BEGIN(*args) commentize(:BEGIN, super) end
on_END(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 306 def on_END(*args) commentize(:END, super) end
on_alias_error(message, *)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 318 def on_alias_error(message, *) raise SyntaxError, message end
on_args_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 98 def on_args_add(list, elem) list << elem end
on_args_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 94 def on_args_new [:args] end
on_assign_error(message, *)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 322 def on_assign_error(message, *) raise SyntaxError, message end
on_backtick(delimiter)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 32 def on_backtick(delimiter) @delimiter_stack.push delimiter super end
on_begin(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 37 def on_begin(*args) commentize(:begin, super) end
on_class(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 78 def on_class(*args) commentize(:class, super) end
on_class_name_error(message, *)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 314 def on_class_name_error(message, *) raise SyntaxError, message end
on_comment(tok)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 46 def on_comment(tok) @comment += tok end
on_def(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 86 def on_def(*args) commentize(:def, super) end
on_defs(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 90 def on_defs(*args) commentize(:def, super) end
on_dyna_symbol(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 297 def on_dyna_symbol(*args) @in_symbol = false super end
on_embdoc(tok)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 54 def on_embdoc(tok) @comment += tok end
on_embdoc_beg(tok)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 50 def on_embdoc_beg(tok) @comment += tok end
on_embdoc_end(tok)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 58 def on_embdoc_end(tok) @comment += tok end
on_embexpr_beg(_delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 293 def on_embexpr_beg(_delimiter) @in_symbol = false end
on_float(_token)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 262 def on_float(_token) @space_before = @seen_space super end
on_heredoc_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 102 def on_heredoc_beg(delimiter) @delimiter_stack.push delimiter end
on_heredoc_dedent(val, width)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 106 def on_heredoc_dedent(val, width) next_dedent = true val.map! do |e| if e.is_a?(Array) && e[0] == :@tstring_content e = dedent_element(e, width) if next_dedent next_dedent = e[1].end_with? "\n" end e end val end
on_heredoc_end(_delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 118 def on_heredoc_end(_delimiter) @delimiter_stack.pop end
on_int(_token)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 257 def on_int(_token) @space_before = @seen_space super end
on_kw(tok)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 62 def on_kw(tok) result = super case tok when "class", "def", "module", "BEGIN", "begin", "END" unless @in_symbol @comment_stack.push [result, @comment] @comment = "" end end result end
on_mlhs_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 126 def on_mlhs_add(list, elem) if list.first == :mlhs list << elem else [:mlhs_add_post, list, elem] end end
on_mlhs_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 122 def on_mlhs_new [:mlhs] end
on_module(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 74 def on_module(*args) commentize(:module, super) end
on_mrhs_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 138 def on_mrhs_add(list, elem) list << elem end
on_mrhs_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 134 def on_mrhs_new [:mrhs] end
on_op(token)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 248 def on_op(token) @seen_space = false super end
on_param_error(message, *)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 326 def on_param_error(message, *) raise SyntaxError, message end
on_parse_error(message)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 310 def on_parse_error(message) raise SyntaxError, message end
on_qsymbols_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 150 def on_qsymbols_add(list, elem) list << elem end
on_qsymbols_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 142 def on_qsymbols_beg(delimiter) @delimiter_stack.push delimiter end
on_qsymbols_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 146 def on_qsymbols_new [:qsymbols] end
on_qwords_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 162 def on_qwords_add(list, elem) list << elem end
on_qwords_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 154 def on_qwords_beg(delimiter) @delimiter_stack.push delimiter end
on_qwords_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 158 def on_qwords_new [:qwords] end
on_regexp_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 179 def on_regexp_add(list, elem) list << elem end
on_regexp_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 166 def on_regexp_beg(delimiter) @delimiter_stack.push delimiter end
on_regexp_end(delimiter)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 170 def on_regexp_end(delimiter) @delimiter_stack.pop super end
on_regexp_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 175 def on_regexp_new [:regexp] end
on_sclass(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 82 def on_sclass(*args) commentize(:class, super) end
on_sp(_token)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 253 def on_sp(_token) @seen_space = true end
on_stmts_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 187 def on_stmts_add(list, elem) list << elem end
on_stmts_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 183 def on_stmts_new [:stmts] end
on_string_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 191 def on_string_add(list, elem) list << elem end
on_symbeg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 282 def on_symbeg(delimiter) @delimiter_stack.push delimiter @in_symbol = true end
on_symbol(*args)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 287 def on_symbol(*args) @delimiter_stack.pop @in_symbol = false super end
on_symbols_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 203 def on_symbols_add(list, elem) list << elem end
on_symbols_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 195 def on_symbols_beg(delimiter) @delimiter_stack.push delimiter end
on_symbols_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 199 def on_symbols_new [:symbols] end
on_tstring_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 207 def on_tstring_beg(delimiter) @delimiter_stack.push delimiter end
on_tstring_content(content)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 211 def on_tstring_content(content) super(content) << @delimiter_stack.last end
on_tstring_end(delimiter)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 215 def on_tstring_end(delimiter) @delimiter_stack.pop super end
on_unary(operator, value)
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 269 def on_unary(operator, value) if !@space_before && operator == :-@ && NUMBER_LITERAL_TYPES.include?(value.first) type, literal, lines = value if literal[0] == "-" super else [type, "-#{literal}", lines] end else super end end
on_void_stmt()
click to toggle source
Calls superclass method
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 41 def on_void_stmt result = super result << [lineno, column] end
on_word_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 224 def on_word_add(list, elem) list << elem end
on_word_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 220 def on_word_new [:word] end
on_words_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 236 def on_words_add(list, elem) list << elem end
on_words_beg(delimiter)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 228 def on_words_beg(delimiter) @delimiter_stack.push delimiter end
on_words_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 232 def on_words_new [:words] end
on_xstring_add(list, elem)
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 244 def on_xstring_add(list, elem) list << elem end
on_xstring_new()
click to toggle source
# File lib/ripper_ruby_parser/commenting_ripper_parser.rb, line 240 def on_xstring_new [:xstring] end