rb8-trepanning 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/CHANGES +10 -0
  2. data/ChangeLog +276 -0
  3. data/Makefile +13 -0
  4. data/Rakefile +1 -2
  5. data/app/display.rb +41 -1
  6. data/app/irb.rb +55 -49
  7. data/app/options.rb +3 -2
  8. data/app/run.rb +25 -7
  9. data/app/util.rb +19 -1
  10. data/bin/trepan8 +0 -2
  11. data/data/perldb.bindings +17 -0
  12. data/interface/script.rb +1 -1
  13. data/interface/server.rb +1 -1
  14. data/interface/user.rb +3 -1
  15. data/{interface/base_intf.rb → interface.rb} +1 -1
  16. data/io/input.rb +1 -1
  17. data/io/null_output.rb +1 -1
  18. data/io/string_array.rb +2 -2
  19. data/io/tcpclient.rb +1 -1
  20. data/io/tcpserver.rb +1 -1
  21. data/{io/base_io.rb → io.rb} +0 -0
  22. data/lib/debugger.rb +0 -1
  23. data/lib/trepanning.rb +3 -1
  24. data/processor/command/alias.rb +13 -2
  25. data/processor/command/backtrace.rb +2 -1
  26. data/processor/command/base/subcmd.rb +1 -5
  27. data/processor/command/base/submgr.rb +1 -1
  28. data/processor/command/base/subsubcmd.rb +1 -1
  29. data/processor/command/base/subsubmgr.rb +4 -4
  30. data/processor/command/break.rb +19 -11
  31. data/processor/command/catch.rb +1 -1
  32. data/processor/command/complete.rb +1 -1
  33. data/processor/command/continue.rb +7 -1
  34. data/processor/command/directory.rb +2 -2
  35. data/processor/command/disable.rb +13 -14
  36. data/processor/command/display.rb +3 -1
  37. data/processor/command/down.rb +8 -8
  38. data/processor/command/edit.rb +1 -1
  39. data/processor/command/enable.rb +21 -22
  40. data/processor/command/eval.rb +1 -2
  41. data/processor/command/exit.rb +25 -8
  42. data/processor/command/finish.rb +7 -2
  43. data/processor/command/frame.rb +1 -1
  44. data/processor/command/help.rb +3 -4
  45. data/processor/command/info.rb +2 -0
  46. data/processor/command/info_subcmd/files.rb +2 -2
  47. data/processor/command/info_subcmd/locals.rb +6 -53
  48. data/processor/command/info_subcmd/source.rb +10 -4
  49. data/processor/command/info_subcmd/variables.rb +35 -0
  50. data/processor/command/info_subcmd/variables_subcmd/.gitignore +1 -0
  51. data/processor/command/info_subcmd/variables_subcmd/class.rb +42 -0
  52. data/processor/command/info_subcmd/variables_subcmd/constant.rb +42 -0
  53. data/processor/command/info_subcmd/{globals.rb → variables_subcmd/globals.rb} +22 -17
  54. data/processor/command/info_subcmd/variables_subcmd/instance.rb +42 -0
  55. data/processor/command/info_subcmd/variables_subcmd/locals.rb +80 -0
  56. data/processor/command/kill.rb +8 -7
  57. data/processor/command/list.rb +2 -2
  58. data/processor/command/macro.rb +27 -9
  59. data/processor/command/next.rb +1 -1
  60. data/processor/command/parsetree.rb +1 -1
  61. data/processor/command/pp.rb +1 -1
  62. data/processor/command/pr.rb +1 -1
  63. data/processor/command/ps.rb +1 -1
  64. data/processor/command/restart.rb +1 -1
  65. data/processor/command/save.rb +1 -1
  66. data/processor/command/set_subcmd/auto.rb +7 -1
  67. data/processor/command/set_subcmd/different.rb +1 -1
  68. data/processor/command/set_subcmd/trace.rb +5 -4
  69. data/processor/command/set_subcmd/trace_subcmd/print.rb +4 -3
  70. data/processor/command/shell.rb +5 -4
  71. data/processor/command/show_subcmd/{alias.rb → aliases.rb} +2 -2
  72. data/processor/command/source.rb +1 -1
  73. data/processor/command/step.rb +2 -5
  74. data/processor/command/tbreak.rb +1 -1
  75. data/processor/command/unalias.rb +13 -8
  76. data/processor/command/undisplay.rb +13 -9
  77. data/processor/command/up.rb +12 -14
  78. data/processor/command.rb +138 -230
  79. data/processor/display.rb +46 -10
  80. data/processor/help.rb +5 -3
  81. data/processor/hook.rb +2 -2
  82. data/processor/location.rb +25 -0
  83. data/processor/mock.rb +3 -2
  84. data/processor/msg.rb +55 -42
  85. data/processor/old-command.rb +270 -0
  86. data/processor/{processor.rb → old-processor.rb} +7 -8
  87. data/processor/running.rb +7 -12
  88. data/processor/subcmd.rb +15 -41
  89. data/processor/validate.rb +240 -238
  90. data/{processor/main.rb → processor.rb} +20 -42
  91. data/test/data/trace.cmd +6 -0
  92. data/test/data/trace.right +46 -0
  93. data/test/integration/helper.rb +2 -0
  94. data/test/integration/test-trace.rb +29 -0
  95. data/test/unit/cmd-helper.rb +2 -3
  96. data/test/unit/test-app-options.rb +13 -11
  97. data/test/unit/test-app-run.rb +7 -1
  98. data/test/unit/test-base-cmd.rb +1 -1
  99. data/test/unit/test-cmd-kill.rb +11 -4
  100. data/test/unit/test-io-tcpserver.rb +9 -4
  101. data/test/unit/test-proc-eval.rb +1 -2
  102. data/test/unit/test-proc-location.rb +26 -32
  103. data/test/unit/test-subcmd-help.rb +1 -1
  104. data/trepan8.gemspec +9 -1
  105. metadata +60 -17
  106. data/processor/command/base/cmd.rb +0 -177
@@ -1,177 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Copyright (C) 2010, 2011 Rocky Bernstein <rockyb@rubyforge.net>
3
- # Base class of all commands. Code common to all commands is here.
4
- # Note: don't end classname with Command (capital C) since main
5
- # will think this a command name like QuitCommand
6
- require 'rubygems'; require 'require_relative'
7
- require 'columnize'
8
- require_relative '../../../app/complete'
9
- ## require 'rubygems'; require 'ruby-debug'; Debugger.start
10
-
11
- module Trepan
12
- class Command
13
- attr_accessor :core, :proc
14
-
15
- unless defined?(MIN_ARGS)
16
- MIN_ARGS = 0 # run()'s args array must be at least this many
17
- MAX_ARGS = nil # run()'s args array must be at least this many
18
- NEED_STACK = false # We'll say that commands which need a stack
19
- # to run have to declare that and those that
20
- # don't don't have to mention it.
21
- end
22
-
23
- def initialize(proc)
24
- @name = my_const(:NAME)
25
- @proc = proc
26
- end
27
-
28
- def category
29
- my_const(:CATEGORY)
30
- end
31
-
32
- # List commands arranged in an aligned columns
33
- def columnize_commands(commands)
34
- width = settings[:maxwidth]
35
- Columnize::columnize(commands, width, ' ' * 4,
36
- true, true, ' ' * 2).chomp
37
- end
38
-
39
- def columnize_numbers(commands)
40
- width = settings[:maxwidth]
41
- Columnize::columnize(commands, width, ', ',
42
- false, false, ' ' * 2).chomp
43
- end
44
-
45
- # FIXME: probably there is a way to do the delegation to proc methods
46
- # without having type it all out.
47
-
48
- def confirm(message, default)
49
- @proc.confirm(message, default)
50
- end
51
-
52
- def errmsg(message, opts={})
53
- @proc.errmsg(message, opts)
54
- end
55
-
56
- def obj_const(obj, name)
57
- obj.class.const_get(name)
58
- end
59
-
60
- def msg(message, opts={})
61
- @proc.msg(message, opts)
62
- end
63
-
64
- # Convenience short-hand for @dbgr.intf[-1].msg_nocr
65
- def msg_nocr(msg, opts={})
66
- @proc.msg_nocr(msg, opts)
67
- end
68
-
69
- def my_const(name)
70
- # Set class constant SHORT_HELP to be the first line of HELP
71
- # unless it has been defined in the class already.
72
- # The below was the simplest way I could find to do this since
73
- # we are the super class but want to set the subclass's constant.
74
- # defined? didn't seem to work here.
75
- c = self.class.constants
76
- if (c.member?('HELP') || c.member?(:HELP)) and
77
- !(c.member?('SHORT_HELP') || c.member?(:SHORT_HELP))
78
- help = self.class.const_get(:HELP) || self.class.const_get('HELP')
79
- short_help = help.split("\n")[0].chomp('.')
80
- self.class.const_set(:SHORT_HELP, short_help)
81
- end
82
- self.class.const_get(name)
83
- end
84
-
85
- def name
86
- self.class.const_get(:NAME)
87
- end
88
-
89
- # The method that implements the debugger command.
90
- def run(*args)
91
- raise RuntimeError, 'You need to define this method elsewhere'
92
- end
93
-
94
- def section(message, opts={})
95
- ## debugger
96
- @proc.section(message, opts)
97
- end
98
-
99
- def settings
100
- @proc.settings
101
- end
102
-
103
- def short_help
104
- help_constant_sym = if self.class.constants.member?('SHORT_HELP')
105
- :SHORT_HELP
106
- else :HELP
107
- end
108
- my_const(help_constant_sym)
109
- end
110
-
111
- # Define a method called 'complete' on the singleton class.
112
- def self.completion(ary)
113
- self.send(:define_method,
114
- :complete,
115
- Proc.new {|prefix|
116
- Trepan::Complete.complete_token(ary, prefix) })
117
- end
118
-
119
- # From reference debugger
120
- def run_code(str)
121
- @proc.dbgr.current_frame.run(str)
122
- end
123
-
124
- def current_method
125
- @proc.frame.method
126
- end
127
-
128
- def current_frame
129
- @proc.frame
130
- end
131
-
132
- def variables
133
- @proc.variables
134
- end
135
-
136
- def listen(step=false)
137
- @proc.listen(step)
138
- end
139
-
140
- end
141
- end
142
- if __FILE__ == $0
143
- module Trepan
144
- class CmdProcessor
145
- def initialize(dbgr)
146
- end
147
- def confirm(message, default)
148
- p ['confirm: ', message, default]
149
- end
150
- def errmsg(message, opts)
151
- p ['err:', message, opts]
152
- end
153
- def msg(message, opts)
154
- p [message, opts]
155
- end
156
- def msg_nocr(message, opts)
157
- p ['nocr: ', message, opts]
158
- end
159
- def section(message, opts)
160
- p ['section: ', message, opts]
161
- end
162
- end
163
- class Command::Test < Trepan::Command
164
- NAME = 'test'
165
- CATEGORY = 'testcategory'
166
- completion %w(a aa ab ba aac)
167
- end
168
- end
169
- proc = Trepan::CmdProcessor.new(nil)
170
- cmd = Trepan::Command::Test.new(proc)
171
- %w(confirm errmsg msg msg_nocr section).each do |meth|
172
- cmd.send(meth, 'test', nil)
173
- end
174
- p cmd.complete('aa')
175
- cmd.instance_variable_set('@completions', %w(aardvark apple))
176
- p cmd.complete('aa')
177
- end