vedeu 0.0.39 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +0 -30
- data/Rakefile +8 -9
- data/bin/log +13 -0
- data/deps.md +11 -95
- data/lib/vedeu.rb +14 -46
- data/lib/vedeu/application.rb +4 -8
- data/lib/vedeu/instrumentation.rb +111 -0
- data/lib/vedeu/launcher.rb +2 -2
- data/lib/vedeu/models/attributes/interface_collection.rb +2 -2
- data/lib/vedeu/models/attributes/line_collection.rb +2 -2
- data/lib/vedeu/models/attributes/stream_collection.rb +2 -2
- data/lib/vedeu/models/colour.rb +1 -1
- data/lib/vedeu/models/composition.rb +1 -1
- data/lib/vedeu/models/interface.rb +18 -10
- data/lib/vedeu/models/line.rb +3 -3
- data/lib/vedeu/models/presentation.rb +1 -1
- data/lib/vedeu/models/stream.rb +2 -2
- data/lib/vedeu/models/style.rb +1 -1
- data/lib/vedeu/output/render_interface.rb +1 -1
- data/lib/vedeu/{support → parsing}/compositor.rb +1 -1
- data/lib/vedeu/parsing/hash_parser.rb +1 -1
- data/lib/vedeu/parsing/parser.rb +6 -10
- data/lib/vedeu/{models/builders → support}/builder.rb +19 -9
- data/lib/vedeu/support/esc.rb +1 -1
- data/lib/vedeu/support/events.rb +15 -19
- data/lib/vedeu/support/geometry.rb +3 -3
- data/lib/vedeu/{input → support}/input.rb +6 -9
- data/lib/vedeu/support/menu.rb +3 -3
- data/lib/vedeu/support/persistence.rb +41 -0
- data/lib/vedeu/support/terminal.rb +1 -1
- data/test/example_app/lib/app.rb +85 -5
- data/test/lib/vedeu/application_test.rb +2 -2
- data/test/lib/vedeu/configuration_test.rb +2 -2
- data/test/lib/vedeu/launcher_test.rb +2 -2
- data/test/lib/vedeu/models/attributes/collection_test.rb +2 -2
- data/test/lib/vedeu/models/attributes/interface_collection_test.rb +4 -4
- data/test/lib/vedeu/models/attributes/line_collection_test.rb +3 -3
- data/test/lib/vedeu/models/attributes/stream_collection_test.rb +3 -3
- data/test/lib/vedeu/models/colour_test.rb +2 -2
- data/test/lib/vedeu/models/composition_test.rb +19 -19
- data/test/lib/vedeu/models/interface_test.rb +46 -34
- data/test/lib/vedeu/models/line_test.rb +2 -2
- data/test/lib/vedeu/models/presentation_test.rb +2 -2
- data/test/lib/vedeu/models/stream_test.rb +2 -2
- data/test/lib/vedeu/models/style_test.rb +31 -31
- data/test/lib/vedeu/output/clear_interface_test.rb +5 -5
- data/test/lib/vedeu/output/render_interface_test.rb +5 -6
- data/test/lib/vedeu/output/template.rb +2 -1
- data/test/lib/vedeu/{support → parsing}/compositor_test.rb +6 -4
- data/test/lib/vedeu/parsing/hash_parser_test.rb +2 -2
- data/test/lib/vedeu/parsing/json_parser_test.rb +2 -2
- data/test/lib/vedeu/parsing/parser_test.rb +6 -5
- data/test/lib/vedeu/parsing/text_adaptor_test.rb +2 -2
- data/test/lib/vedeu/{models/builders/interface_builder_test.rb → support/builder_test.rb} +10 -10
- data/test/lib/vedeu/support/esc_test.rb +2 -2
- data/test/lib/vedeu/support/events_test.rb +2 -2
- data/test/lib/vedeu/support/geometry_test.rb +2 -2
- data/test/lib/vedeu/{input → support}/input_test.rb +6 -7
- data/test/lib/vedeu/support/menu_test.rb +2 -2
- data/test/lib/vedeu/support/persistence_test.rb +55 -0
- data/test/lib/vedeu/support/queue_test.rb +2 -2
- data/test/lib/vedeu/support/terminal_test.rb +2 -2
- data/test/lib/vedeu/support/translator_test.rb +2 -2
- data/test/lib/vedeu/support/wordwrap_test.rb +2 -2
- data/test/lib/vedeu_test.rb +17 -2
- data/test/support/bench.rb +34 -0
- data/test/test_helper.rb +3 -11
- data/vedeu.gemspec +2 -2
- metadata +20 -44
- data/lib/vedeu/models/builders/command_builder.rb +0 -10
- data/lib/vedeu/models/builders/interface_builder.rb +0 -32
- data/lib/vedeu/models/command.rb +0 -23
- data/lib/vedeu/output/output.rb +0 -14
- data/lib/vedeu/process/process.rb +0 -51
- data/lib/vedeu/repository/command_repository.rb +0 -31
- data/lib/vedeu/repository/interface_repository.rb +0 -31
- data/lib/vedeu/repository/repository.rb +0 -41
- data/lib/vedeu/repository/storage.rb +0 -40
- data/lib/vedeu/support/exit.rb +0 -9
- data/test/lib/vedeu/models/builders/builder_test.rb +0 -11
- data/test/lib/vedeu/models/builders/command_builder_test.rb +0 -16
- data/test/lib/vedeu/models/command_test.rb +0 -40
- data/test/lib/vedeu/output/output_test.rb +0 -19
- data/test/lib/vedeu/process/process_test.rb +0 -71
- data/test/lib/vedeu/repository/command_repository_test.rb +0 -55
- data/test/lib/vedeu/repository/interface_repository_test.rb +0 -67
- data/test/lib/vedeu/repository/repository_test.rb +0 -81
- data/test/lib/vedeu/repository/storage_test.rb +0 -70
- data/test/lib/vedeu/support/exit_test.rb +0 -12
- data/test/support/dummy_command.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d50ccc8e12767562af12af4793529e7349194a4
|
4
|
+
data.tar.gz: 3f0eede2555296556c6be6f229f8393d9597a2f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db682960148fc784f0b8dd745a1afd820e1698b0d0ab71d6f29c30a77ad42f159300ebaec49c235228354a1788ab30929c981eaa4d5c6aee843d7467c20c64ff
|
7
|
+
data.tar.gz: c75a838470727f59dba50085130228ff295a7a1fa8f2af34caad8d0f25bfdcfc5dfd5c7939b41e3a0fa37726c4a1440c4f0bd410334d7d4e698b798aeaae49d8
|
data/README.md
CHANGED
@@ -31,12 +31,6 @@ Expect proper documentation soon!
|
|
31
31
|
...
|
32
32
|
end
|
33
33
|
|
34
|
-
command 'thing' do
|
35
|
-
entity SomeClass
|
36
|
-
keypress 't'
|
37
|
-
keyword 'thing'
|
38
|
-
end
|
39
|
-
|
40
34
|
event :some_event do
|
41
35
|
# ...
|
42
36
|
end
|
@@ -76,7 +70,6 @@ To understand how Vedeu works, you need to familiarise yourself with some terms.
|
|
76
70
|
interface 'main' do
|
77
71
|
y 1
|
78
72
|
x 1
|
79
|
-
z 1
|
80
73
|
width 10 # see notes below
|
81
74
|
height 10
|
82
75
|
colour foreground: '#ffffff', background: '#000000'
|
@@ -87,8 +80,6 @@ Referring to the above example, interfaces have a name, and various default attr
|
|
87
80
|
|
88
81
|
`y` sets the starting row point. (See Geometry)
|
89
82
|
`x` sets the starting column point.
|
90
|
-
`z` an integer specifying the z-index of the interface.
|
91
|
-
(See Layers)
|
92
83
|
|
93
84
|
`width` sets character width of the interface
|
94
85
|
`height` sets character height of the interface
|
@@ -100,18 +91,6 @@ Referring to the above example, interfaces have a name, and various default attr
|
|
100
91
|
`cursor` a boolean specifying whether the cursor should show.
|
101
92
|
|
102
93
|
|
103
|
-
### On Defining Commands
|
104
|
-
|
105
|
-
command 'do_something' do
|
106
|
-
entity SomeClass
|
107
|
-
keypress 's'
|
108
|
-
keyword 'start'
|
109
|
-
arguments [:some, { :values => :here }, "etc"]
|
110
|
-
end
|
111
|
-
|
112
|
-
As above, commands have a name, a class which performs the action
|
113
|
-
(you define this), and they can be invoked with a keypress or a keyword. At this time, Vedeu will call the `.dispatch` method on your class, passing any arguments you originally defined in the command. In the future, both the method called and the arguments could be dynamic.
|
114
|
-
|
115
94
|
### On Defining Events
|
116
95
|
|
117
96
|
event :event_name do |arg1, arg2|
|
@@ -149,15 +128,6 @@ Vedeu has a range of symbol styles which are compatible with most terminals whic
|
|
149
128
|
Like colours, they can be defined in either interfaces, for specific lines or within streams. Styles are applied as encountered.
|
150
129
|
|
151
130
|
|
152
|
-
### Layers
|
153
|
-
|
154
|
-
Vedeu allows the overlaying of interfaces. To render these correctly,
|
155
|
-
Vedeu uses two rules.
|
156
|
-
|
157
|
-
1) The :z value. 1 would be default, or bottom. 2 would be placed on top of 1. 3 on top of 2, and so on.
|
158
|
-
2) If two interfaces occupy the same 'space', the interface which was defined last, wins.
|
159
|
-
|
160
|
-
|
161
131
|
## Contributing
|
162
132
|
|
163
133
|
1. Fork it ( http://github.com/gavinlaking/vedeu/fork )
|
data/Rakefile
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "bundler/gem_tasks"
|
2
|
+
require "rake/testtask"
|
3
3
|
|
4
|
-
|
5
|
-
t.libs << 'lib/vedeu'
|
6
|
-
t.test_files = FileList['test/lib/vedeu/*_test.rb',
|
7
|
-
'test/lib/vedeu/**/*_test.rb']
|
8
|
-
# t.options = '-v' # verbose mode
|
9
|
-
end
|
4
|
+
task :default => :test
|
10
5
|
|
11
|
-
|
6
|
+
Rake::TestTask.new do |t|
|
7
|
+
t.libs.push "lib"
|
8
|
+
t.libs.push "test"
|
9
|
+
t.pattern = "test/**/*_test.rb"
|
10
|
+
end
|
data/bin/log
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
|
3
|
+
|
4
|
+
-> { its -> { a } }
|
5
|
+
trap('INT') { exit! }
|
6
|
+
|
7
|
+
require 'vedeu'
|
8
|
+
|
9
|
+
loop do
|
10
|
+
Vedeu.log('-B<-------------------------------------------------------------------')
|
11
|
+
|
12
|
+
sleep 10
|
13
|
+
end
|
data/deps.md
CHANGED
@@ -4,11 +4,13 @@ By class
|
|
4
4
|
|
5
5
|
Application
|
6
6
|
Input
|
7
|
-
Output
|
8
7
|
Process
|
9
8
|
Terminal
|
10
9
|
|
11
10
|
Builder
|
11
|
+
Geometry
|
12
|
+
Interface
|
13
|
+
Persistence
|
12
14
|
|
13
15
|
ClearInterface
|
14
16
|
|
@@ -17,16 +19,6 @@ Collection
|
|
17
19
|
Colour
|
18
20
|
Esc
|
19
21
|
|
20
|
-
Command
|
21
|
-
|
22
|
-
CommandBuilder
|
23
|
-
Builder
|
24
|
-
CommandRepository
|
25
|
-
|
26
|
-
CommandRepository
|
27
|
-
Command
|
28
|
-
Repository
|
29
|
-
|
30
22
|
Composition
|
31
23
|
InterfaceCollection
|
32
24
|
|
@@ -44,8 +36,6 @@ Esc
|
|
44
36
|
|
45
37
|
Events
|
46
38
|
|
47
|
-
Exit
|
48
|
-
|
49
39
|
HashParser
|
50
40
|
TextAdaptor
|
51
41
|
|
@@ -63,17 +53,8 @@ Interface
|
|
63
53
|
Style
|
64
54
|
Terminal
|
65
55
|
|
66
|
-
InterfaceBuilder
|
67
|
-
Builder
|
68
|
-
Geometry
|
69
|
-
InterfaceRepository
|
70
|
-
|
71
56
|
InterfaceCollection
|
72
|
-
|
73
|
-
|
74
|
-
InterfaceRepository
|
75
|
-
Interface
|
76
|
-
Repository
|
57
|
+
Persistence
|
77
58
|
|
78
59
|
JSONParser
|
79
60
|
|
@@ -92,20 +73,18 @@ LineCollection
|
|
92
73
|
|
93
74
|
Menu
|
94
75
|
|
95
|
-
Output
|
96
|
-
InterfaceRepository
|
97
|
-
Terminal
|
98
|
-
|
99
76
|
Parser
|
100
77
|
Compositor
|
101
78
|
HashParser
|
102
79
|
JSONParser
|
103
80
|
|
81
|
+
Persistence
|
82
|
+
Interface
|
83
|
+
|
104
84
|
Presentation
|
105
85
|
Colour
|
106
86
|
|
107
87
|
Process
|
108
|
-
CommandRepository
|
109
88
|
Parser
|
110
89
|
Queue
|
111
90
|
|
@@ -114,11 +93,6 @@ Queue
|
|
114
93
|
RenderInterface
|
115
94
|
ClearInterface
|
116
95
|
|
117
|
-
Repository
|
118
|
-
Storage
|
119
|
-
|
120
|
-
Storage
|
121
|
-
|
122
96
|
Stream
|
123
97
|
Presentation
|
124
98
|
Style
|
@@ -150,19 +124,15 @@ Orphans
|
|
150
124
|
Template - orphaned
|
151
125
|
Wordwrap - orphaned
|
152
126
|
Menu - orphaned
|
153
|
-
Exit - orphaned
|
154
127
|
|
155
128
|
----------------------------------------------------------------------
|
156
129
|
Grouped
|
157
130
|
----------------------------------------------------------------------
|
158
131
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
InterfaceBuilder
|
163
|
-
Builder
|
132
|
+
Builder
|
133
|
+
Interface
|
164
134
|
Geometry
|
165
|
-
|
135
|
+
Persistence
|
166
136
|
|
167
137
|
Launcher
|
168
138
|
Application
|
@@ -171,64 +141,12 @@ Launcher
|
|
171
141
|
Terminal
|
172
142
|
Esc
|
173
143
|
Translator
|
174
|
-
Output
|
175
|
-
InterfaceRepository
|
176
|
-
Interface
|
177
|
-
ClearInterface
|
178
|
-
Geometry
|
179
|
-
Esc
|
180
|
-
Translator
|
181
|
-
Terminal
|
182
|
-
Esc
|
183
|
-
Translator
|
184
|
-
LineCollection
|
185
|
-
Collection
|
186
|
-
Line
|
187
|
-
Presentation
|
188
|
-
Colour
|
189
|
-
Esc
|
190
|
-
Translator
|
191
|
-
StreamCollection
|
192
|
-
Collection
|
193
|
-
Stream
|
194
|
-
Presentation
|
195
|
-
Colour
|
196
|
-
Esc
|
197
|
-
Translator
|
198
|
-
Style
|
199
|
-
Esc
|
200
|
-
Translator
|
201
|
-
Style
|
202
|
-
Esc
|
203
|
-
Translator
|
204
|
-
Presentation
|
205
|
-
Colour
|
206
|
-
Esc
|
207
|
-
Translator
|
208
|
-
Queue
|
209
|
-
RenderInterface
|
210
|
-
ClearInterface
|
211
|
-
Style
|
212
|
-
Esc
|
213
|
-
Translator
|
214
|
-
Terminal
|
215
|
-
Esc
|
216
|
-
Translator
|
217
|
-
Repository
|
218
|
-
Storage
|
219
|
-
Terminal
|
220
|
-
Esc
|
221
|
-
Translator
|
222
144
|
Process
|
223
|
-
CommandRepository
|
224
|
-
Command
|
225
|
-
Repository
|
226
|
-
Storage
|
227
145
|
Parser
|
228
146
|
Compositor
|
229
147
|
Composition
|
230
148
|
InterfaceCollection
|
231
|
-
|
149
|
+
Persistence
|
232
150
|
Interface
|
233
151
|
ClearInterface
|
234
152
|
Geometry
|
@@ -270,8 +188,6 @@ Launcher
|
|
270
188
|
Terminal
|
271
189
|
Esc
|
272
190
|
Translator
|
273
|
-
Repository
|
274
|
-
Storage
|
275
191
|
HashParser
|
276
192
|
TextAdaptor
|
277
193
|
JSONParser
|
data/lib/vedeu.rb
CHANGED
@@ -1,23 +1,17 @@
|
|
1
|
-
require '
|
2
|
-
require '
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require_relative 'vedeu/support/geometry'
|
8
|
-
require_relative 'vedeu/support/menu'
|
9
|
-
require_relative 'vedeu/support/exit'
|
10
|
-
require_relative 'vedeu/launcher'
|
1
|
+
require 'vedeu/instrumentation'
|
2
|
+
require 'vedeu/support/builder'
|
3
|
+
require 'vedeu/support/events'
|
4
|
+
require 'vedeu/support/geometry'
|
5
|
+
require 'vedeu/support/menu'
|
6
|
+
require 'vedeu/launcher'
|
11
7
|
|
12
8
|
module Vedeu
|
9
|
+
# Vedeu::Instrumentation::Trace.call
|
10
|
+
|
13
11
|
# :nocov:
|
14
12
|
module ClassMethods
|
15
|
-
def command(name, &block)
|
16
|
-
CommandBuilder.build(name, &block)
|
17
|
-
end
|
18
|
-
|
19
13
|
def interface(name, &block)
|
20
|
-
|
14
|
+
Builder.build(name, &block)
|
21
15
|
end
|
22
16
|
|
23
17
|
def event(name, &block)
|
@@ -34,49 +28,23 @@ module Vedeu
|
|
34
28
|
def self.events
|
35
29
|
@events ||= Events.new do
|
36
30
|
on(:_exit_) { fail StopIteration }
|
37
|
-
on(:_log_) { |message| Vedeu.
|
31
|
+
on(:_log_) { |message| Vedeu.log(message) }
|
38
32
|
on(:_mode_switch_) { fail ModeSwitch }
|
39
33
|
|
40
34
|
on(:_keypress_) do |key|
|
41
35
|
trigger(:key, key)
|
42
|
-
trigger(:_log_, "key: #{key}")
|
36
|
+
trigger(:_log_, (' ' * 42) + "key: #{key}")
|
43
37
|
trigger(:_mode_switch_) if key == :escape
|
44
38
|
end
|
45
39
|
end
|
46
40
|
end
|
47
41
|
|
48
|
-
def self.
|
49
|
-
|
50
|
-
log.formatter = proc do |_, time, _, msg|
|
51
|
-
"\n#{time.iso8601}: #{msg}\n"
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def self.error(exception)
|
57
|
-
logger.debug "\e[38;5;196mError:\e[38;2;39m\e[48;2;49m " +
|
58
|
-
"#{exception.message}\n\n" +
|
59
|
-
exception.backtrace.join("\n")
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.debug(filename = 'profile.html', &block)
|
63
|
-
require 'ruby-prof'
|
64
|
-
|
65
|
-
RubyProf.start
|
66
|
-
|
67
|
-
yield
|
68
|
-
|
69
|
-
result = RubyProf.stop
|
70
|
-
result.eliminate_methods!([/^Array/, /^Hash/])
|
71
|
-
|
72
|
-
File.open(Vedeu.root_path + '/tmp/' + filename, 'w') do |file|
|
73
|
-
RubyProf::CallStackPrinter.new(result).print(file)
|
74
|
-
# RubyProf::GraphPrinter.new(result).print(file)
|
75
|
-
end
|
42
|
+
def self.log(message)
|
43
|
+
Vedeu::Instrumentation::Log.logger.debug(message)
|
76
44
|
end
|
77
45
|
|
78
46
|
def self.included(receiver)
|
79
|
-
receiver.send
|
47
|
+
receiver.send(:include, ClassMethods)
|
80
48
|
receiver.extend(ClassMethods)
|
81
49
|
end
|
82
50
|
|
data/lib/vedeu/application.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative 'process/process'
|
4
|
-
require_relative 'support/terminal'
|
1
|
+
require 'vedeu/support/input'
|
2
|
+
require 'vedeu/support/terminal'
|
5
3
|
|
6
4
|
module Vedeu
|
7
5
|
ModeSwitch = Class.new(StandardError)
|
@@ -20,7 +18,7 @@ module Vedeu
|
|
20
18
|
Terminal.open(mode) do
|
21
19
|
Terminal.set_cursor_mode
|
22
20
|
|
23
|
-
|
21
|
+
Vedeu.events.trigger(:refresh)
|
24
22
|
|
25
23
|
runner { main_sequence }
|
26
24
|
end
|
@@ -43,9 +41,7 @@ module Vedeu
|
|
43
41
|
def main_sequence
|
44
42
|
Input.capture
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
Output.render
|
44
|
+
Vedeu.events.trigger(:refresh)
|
49
45
|
end
|
50
46
|
|
51
47
|
def interactive?
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'date'
|
2
|
+
require 'logger'
|
3
|
+
require 'ruby-prof'
|
4
|
+
|
5
|
+
require 'vedeu'
|
6
|
+
|
7
|
+
module Vedeu
|
8
|
+
module Instrumentation
|
9
|
+
# :nocov:
|
10
|
+
class Log
|
11
|
+
def self.logger
|
12
|
+
@logger ||= Logger.new(filename).tap do |log|
|
13
|
+
log.formatter = proc do |_, time, _, message|
|
14
|
+
time.utc.iso8601 + ": " + message + "\n"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.error(exception)
|
20
|
+
logger.debug(exception.message + "\n" +
|
21
|
+
exception.backtrace.join("\n"))
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def self.filename
|
27
|
+
Vedeu.root_path + '/logs/vedeu.log'
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Profile
|
32
|
+
def self.call(filename = 'profile.html', &block)
|
33
|
+
new(filename).profile(&block)
|
34
|
+
end
|
35
|
+
|
36
|
+
def initialize(filename)
|
37
|
+
@filename = filename
|
38
|
+
end
|
39
|
+
|
40
|
+
def profile(&block)
|
41
|
+
RubyProf.start
|
42
|
+
|
43
|
+
yield
|
44
|
+
|
45
|
+
result = RubyProf.stop.eliminate_methods!([/^Array/, /^Hash/])
|
46
|
+
|
47
|
+
File.open(filename, 'w') do |file|
|
48
|
+
RubyProf::CallStackPrinter.new(result).print(file)
|
49
|
+
RubyProf::GraphPrinter.new(result).print(file)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def filename
|
56
|
+
Vedeu.root_path + '/tmp/' + @filename
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class Trace
|
61
|
+
def self.call(options = {})
|
62
|
+
new(options).trace
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialize(options = {})
|
66
|
+
@options = options
|
67
|
+
end
|
68
|
+
|
69
|
+
def trace
|
70
|
+
set_trace_func proc { |event, file, line, id, binding, classname|
|
71
|
+
if event == watched && classname.to_s.match(klass)
|
72
|
+
Vedeu.log(sprintf(" %s %-35s #%s", event, classname, id))
|
73
|
+
# binding.eval('local_variables').each do |var|
|
74
|
+
# print("#{var.to_s} = #{binding.local_variable_get(var).inspect}\n")
|
75
|
+
# end
|
76
|
+
end
|
77
|
+
}
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def pretty!(&block)
|
83
|
+
["\e[38;5;#{rand(22..231)}m", yield, "\e[38;2;39m"].join
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
def watched
|
88
|
+
options[:event]
|
89
|
+
end
|
90
|
+
|
91
|
+
def klass
|
92
|
+
options[:klass]
|
93
|
+
end
|
94
|
+
|
95
|
+
def options
|
96
|
+
defaults.merge!(@options)
|
97
|
+
end
|
98
|
+
|
99
|
+
def defaults
|
100
|
+
{
|
101
|
+
event: 'call',
|
102
|
+
klass: /^Vedeu::(?!.*Instrumentation|Line|Stream|Style|Colour|Geometry|Terminal|Esc|Translator).*/
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
# everything except Interface, Geometry and Terminal
|
107
|
+
# klass: /^Vedeu::(?!.*Interface|Geometry|Terminal).*/
|
108
|
+
end
|
109
|
+
# :nocov:
|
110
|
+
end
|
111
|
+
end
|