Class: Debugger::ExpressionInfoCommand
- Inherits:
-
Command
- Object
- SimpleDelegator
- Command
- Debugger::ExpressionInfoCommand
show all
- Defined in:
- lib/ruby-debug-ide/commands/expression_info.rb
Constant Summary
Constants inherited
from Command
Command::DEF_OPTIONS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Command
commands, file_filter_supported?, #find, inherited, #initialize, load_commands, #match, method_missing, options, unescape_incoming
Class Method Details
.help(cmd) ⇒ Object
60
61
62
63
64
65
66
67
|
# File 'lib/ruby-debug-ide/commands/expression_info.rb', line 60
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
|
.help_command ⇒ Object
56
57
58
|
# File 'lib/ruby-debug-ide/commands/expression_info.rb', line 56
def help_command
"expression_info"
end
|
Instance Method Details
#create_io_reader(string_to_parse) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/ruby-debug-ide/commands/expression_info.rb', line 40
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
|
#execute ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/ruby-debug-ide/commands/expression_info.rb', line 11
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
|
#regexp ⇒ Object
7
8
9
|
# File 'lib/ruby-debug-ide/commands/expression_info.rb', line 7
def regexp
/^\s*ex(?:pression_info)?\s+/
end
|