Sha256: f47007e5e6750551431dd3c0be5a68467fee3d51b1b8042a9f1c961abb7db56d
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
require 'stringio' require 'irb/ruby-lex' module Debugger class ExpressionInfoCommand < Command def regexp /^\s*ex(?:pression_info)?\s+/ end def execute string_to_parse = Command.unescape_incoming(@match.post_match) + " \n \n\n" total_lines = string_to_parse.count("\n") + 1 lexer = RubyLex.new lexer.set_input(create_io_reader(string_to_parse)) last_statement = '' last_prompt = '' last_indent = 0 lexer.set_prompt do |ltype, indent, continue, lineno| next if (lineno >= total_lines) last_prompt = ltype || '' last_indent = indent end lexer.each_top_level_statement do |line, line_no| last_statement = line end incomplete = true if /\A\s*\Z/m =~ last_statement incomplete = false end @printer.print_expression_info(incomplete, last_prompt, last_indent) end def create_io_reader(string_to_parse) io = StringIO.new(string_to_parse) if string_to_parse.respond_to?(:encoding) io.instance_exec(string_to_parse.encoding) do |string_encoding| @my_encoding = string_encoding def self.encoding @my_encoding end end end io end class << self def help_command "expression_info" end def help(cmd) %{ ex[pression_info] <expression>\t returns parser-related information for the expression given\t\t 'incomplete'=true|false\tindicates whether expression is a complete ruby expression and can be evaluated without getting syntax errors } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ruby-debug-ide22-0.7.4 | lib/ruby-debug-ide/commands/expression_info.rb |