letters 0.2.6 → 0.2.7
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.
- data/README.md +254 -0
- data/lib/letters/core_ext.rb +14 -0
- data/lib/letters/kill_error.rb +4 -0
- data/lib/letters/version.rb +1 -1
- data/spec/letters/core_ext_spec.rb +23 -2
- metadata +17 -16
data/README.md
CHANGED
@@ -54,3 +54,257 @@ This is significantly easier than breaking apart the pipeline using variable ass
|
|
54
54
|
|
55
55
|
The `o` method takes options, too, so you can add a prefix message to the output or choose another output format -- like [YAML]() or [pretty print]().
|
56
56
|
|
57
|
+
### The methods ###
|
58
|
+
<table>
|
59
|
+
<tr>
|
60
|
+
<th>Letter</th>
|
61
|
+
<th>Command</th>
|
62
|
+
<th>Options</th>
|
63
|
+
<th>Description</th>
|
64
|
+
</tr>
|
65
|
+
|
66
|
+
<tr>
|
67
|
+
<td>
|
68
|
+
<a href="http://lettersrb.com/api#a">a</a>
|
69
|
+
</td>
|
70
|
+
<td>
|
71
|
+
Assert
|
72
|
+
</td>
|
73
|
+
<td>
|
74
|
+
:message,
|
75
|
+
:error_class
|
76
|
+
</td>
|
77
|
+
<td>
|
78
|
+
asserts in the context of its receiver or Letters::AssertionError
|
79
|
+
</td>
|
80
|
+
</tr>
|
81
|
+
|
82
|
+
<tr>
|
83
|
+
<td>
|
84
|
+
<a href="http://lettersrb.com/api#b">b</a>
|
85
|
+
</td>
|
86
|
+
<td>
|
87
|
+
Beep
|
88
|
+
</td>
|
89
|
+
<td>
|
90
|
+
</td>
|
91
|
+
<td>
|
92
|
+
causes your terminal to beep
|
93
|
+
</td>
|
94
|
+
</tr>
|
95
|
+
|
96
|
+
<tr>
|
97
|
+
<td>
|
98
|
+
<a href="http://lettersrb.com/api#c">c</a>
|
99
|
+
</td>
|
100
|
+
<td>
|
101
|
+
Callstack
|
102
|
+
</td>
|
103
|
+
<td>
|
104
|
+
:message
|
105
|
+
</td>
|
106
|
+
<td>
|
107
|
+
prints the current callstack
|
108
|
+
</td>
|
109
|
+
</tr>
|
110
|
+
|
111
|
+
<tr>
|
112
|
+
<td>
|
113
|
+
<a href="http://lettersrb.com/api#d">d</a>
|
114
|
+
</td>
|
115
|
+
<td>
|
116
|
+
Debugger
|
117
|
+
</td>
|
118
|
+
<td>
|
119
|
+
|
120
|
+
</td>
|
121
|
+
<td>
|
122
|
+
passes control to the debugger
|
123
|
+
</td>
|
124
|
+
</tr>
|
125
|
+
|
126
|
+
<tr>
|
127
|
+
<td>
|
128
|
+
<a href="http://lettersrb.com/api#d1/d2">d1/d2</a>
|
129
|
+
</td>
|
130
|
+
<td>
|
131
|
+
Diff
|
132
|
+
</td>
|
133
|
+
<td>
|
134
|
+
:message,
|
135
|
+
:format,
|
136
|
+
:stream
|
137
|
+
</td>
|
138
|
+
<td>
|
139
|
+
prints a diff between first and second receivers
|
140
|
+
</td>
|
141
|
+
</tr>
|
142
|
+
|
143
|
+
<tr>
|
144
|
+
<td>
|
145
|
+
<a href="http://lettersrb.com/api#e">e</a>
|
146
|
+
</td>
|
147
|
+
<td>
|
148
|
+
Empty
|
149
|
+
</td>
|
150
|
+
<td>
|
151
|
+
:message
|
152
|
+
</td>
|
153
|
+
<td>
|
154
|
+
raises a Letters::EmptyError if its receiver is empty
|
155
|
+
</td>
|
156
|
+
</tr>
|
157
|
+
|
158
|
+
<tr>
|
159
|
+
<td>
|
160
|
+
<a href="http://lettersrb.com/api#f">f</a>
|
161
|
+
</td>
|
162
|
+
<td>
|
163
|
+
File
|
164
|
+
</td>
|
165
|
+
<td>
|
166
|
+
:format, :name
|
167
|
+
</td>
|
168
|
+
<td>
|
169
|
+
writes its receiver into a file in a given format
|
170
|
+
</td>
|
171
|
+
</tr>
|
172
|
+
|
173
|
+
<tr>
|
174
|
+
<td>
|
175
|
+
<a href="http://lettersrb.com/api#j">j</a>
|
176
|
+
</td>
|
177
|
+
<td>
|
178
|
+
Jump
|
179
|
+
</td>
|
180
|
+
<td>
|
181
|
+
(&block)
|
182
|
+
</td>
|
183
|
+
<td>
|
184
|
+
executes its block in the context of its receiver
|
185
|
+
</td>
|
186
|
+
</tr>
|
187
|
+
|
188
|
+
<tr>
|
189
|
+
<td>
|
190
|
+
<a href="http://lettersrb.com/api#k">k</a>
|
191
|
+
</td>
|
192
|
+
<td>
|
193
|
+
Kill
|
194
|
+
</td>
|
195
|
+
<td>
|
196
|
+
:max
|
197
|
+
</td>
|
198
|
+
<td>
|
199
|
+
raises Letters::KillError after a maximum number of calls
|
200
|
+
</td>
|
201
|
+
</tr>
|
202
|
+
|
203
|
+
<tr>
|
204
|
+
<td>
|
205
|
+
<a href="http://lettersrb.com/api#l">l</a>
|
206
|
+
</td>
|
207
|
+
<td>
|
208
|
+
Logger
|
209
|
+
</td>
|
210
|
+
<td>
|
211
|
+
:format, :level
|
212
|
+
</td>
|
213
|
+
<td>
|
214
|
+
logs its receivers on the available logger instance
|
215
|
+
</td>
|
216
|
+
</tr>
|
217
|
+
|
218
|
+
<tr>
|
219
|
+
<td>
|
220
|
+
<a href="http://lettersrb.com/api#m">m</a>
|
221
|
+
</td>
|
222
|
+
<td>
|
223
|
+
Mark as tainted
|
224
|
+
</td>
|
225
|
+
<td>
|
226
|
+
(true|false)
|
227
|
+
</td>
|
228
|
+
<td>
|
229
|
+
taints (or untaints) its receiver
|
230
|
+
</td>
|
231
|
+
</tr>
|
232
|
+
|
233
|
+
<tr>
|
234
|
+
<td>
|
235
|
+
<a href="http://lettersrb.com/api#n">n</a>
|
236
|
+
</td>
|
237
|
+
<td>
|
238
|
+
Nil
|
239
|
+
</td>
|
240
|
+
<td>
|
241
|
+
|
242
|
+
</td>
|
243
|
+
<td>
|
244
|
+
raises a Letters::NilError if its receiver is nil
|
245
|
+
</td>
|
246
|
+
</tr>
|
247
|
+
|
248
|
+
<tr>
|
249
|
+
<td>
|
250
|
+
<a href="http://lettersrb.com/api#o">o</a>
|
251
|
+
</td>
|
252
|
+
<td>
|
253
|
+
Output
|
254
|
+
</td>
|
255
|
+
<td>
|
256
|
+
:format,
|
257
|
+
:stream
|
258
|
+
</td>
|
259
|
+
<td>
|
260
|
+
prints its receiver to standard output
|
261
|
+
</td>
|
262
|
+
</tr>
|
263
|
+
|
264
|
+
<tr>
|
265
|
+
<td>
|
266
|
+
<a href="http://lettersrb.com/api#r">r</a>
|
267
|
+
</td>
|
268
|
+
<td>
|
269
|
+
Ri
|
270
|
+
</td>
|
271
|
+
<td>
|
272
|
+
(method name as symbol)
|
273
|
+
</td>
|
274
|
+
<td>
|
275
|
+
prints RI documentation of its receiver class
|
276
|
+
</td>
|
277
|
+
</tr>
|
278
|
+
|
279
|
+
<tr>
|
280
|
+
<td>
|
281
|
+
<a href="http://lettersrb.com/api#s">s</a>
|
282
|
+
</td>
|
283
|
+
<td>
|
284
|
+
Safety
|
285
|
+
</td>
|
286
|
+
<td>
|
287
|
+
(level number)
|
288
|
+
</td>
|
289
|
+
<td>
|
290
|
+
bumps the safety level (by one or as specified)
|
291
|
+
</td>
|
292
|
+
</tr>
|
293
|
+
|
294
|
+
<tr>
|
295
|
+
<td>
|
296
|
+
<a href="http://lettersrb.com/api#t">t</a>
|
297
|
+
</td>
|
298
|
+
<td>
|
299
|
+
Timestamp
|
300
|
+
</td>
|
301
|
+
<td>
|
302
|
+
:time_format
|
303
|
+
</td>
|
304
|
+
<td>
|
305
|
+
prints out the current timestamp
|
306
|
+
</td>
|
307
|
+
</tr>
|
308
|
+
</table>
|
309
|
+
|
310
|
+
See full documentation at http://lettersrb.com/api
|
data/lib/letters/core_ext.rb
CHANGED
@@ -2,6 +2,7 @@ require "letters/helpers"
|
|
2
2
|
require "letters/diff"
|
3
3
|
require "letters/assertion_error"
|
4
4
|
require "letters/empty_error"
|
5
|
+
require "letters/kill_error"
|
5
6
|
require "letters/nil_error"
|
6
7
|
require "letters/time_formats"
|
7
8
|
|
@@ -93,6 +94,19 @@ module Letters
|
|
93
94
|
end
|
94
95
|
end
|
95
96
|
|
97
|
+
# Kill
|
98
|
+
def k(opts={})
|
99
|
+
opts = { max: 0 }.merge(opts)
|
100
|
+
opts.merge! :error_class => KillError
|
101
|
+
tap do |o|
|
102
|
+
@letters_kill_count ||= 0
|
103
|
+
if @letters_kill_count >= opts[:max]
|
104
|
+
raise opts[:error_class]
|
105
|
+
end
|
106
|
+
@letters_kill_count += 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
96
110
|
# Log
|
97
111
|
def l(opts={})
|
98
112
|
opts = { level: "info", format: "yaml" }.merge opts
|
data/lib/letters/version.rb
CHANGED
@@ -15,7 +15,7 @@ module Letters
|
|
15
15
|
FileUtils.rm_rf "tmp"
|
16
16
|
end
|
17
17
|
|
18
|
-
it "all letter methods but #e and #n return the original object" do
|
18
|
+
it "all letter methods but #e, #k and #n return the original object" do
|
19
19
|
# Prevent output and debugging
|
20
20
|
Helpers.should_receive(:call_debugger).any_number_of_times
|
21
21
|
$stdout.should_receive(:puts).any_number_of_times
|
@@ -23,7 +23,7 @@ module Letters
|
|
23
23
|
Helpers.should_receive(:change_safety).any_number_of_times
|
24
24
|
|
25
25
|
("a".."z").to_a.reject do |letter|
|
26
|
-
letter =~ /[
|
26
|
+
letter =~ /[ekjn]/
|
27
27
|
end.select do |letter|
|
28
28
|
hash.respond_to? letter
|
29
29
|
end.each do |letter|
|
@@ -146,6 +146,27 @@ module Letters
|
|
146
146
|
end
|
147
147
|
end
|
148
148
|
|
149
|
+
describe "#k (kill)" do
|
150
|
+
it 'raises a KillError immediately by default' do
|
151
|
+
lambda { hash.k }.should raise_error(KillError)
|
152
|
+
end
|
153
|
+
|
154
|
+
it 'does not raises if number of calls are below max' do
|
155
|
+
lambda{ hash.k(max: 1) }.should_not raise_error
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'raises a KillError if number of calls is above max' do
|
159
|
+
count = 0
|
160
|
+
lambda do
|
161
|
+
10.times do
|
162
|
+
hash.k(max: 5)
|
163
|
+
count += 1
|
164
|
+
end
|
165
|
+
end.should raise_error(KillError)
|
166
|
+
count.should eq(5)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
149
170
|
describe "#l (log)" do
|
150
171
|
it "logs the object if a logger is present and then returns the object" do
|
151
172
|
logger = double 'logger'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: letters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: awesome_print
|
16
|
-
requirement: &
|
16
|
+
requirement: &70220468145960 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70220468145960
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &70220468145520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70220468145520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: xml-simple
|
38
|
-
requirement: &
|
38
|
+
requirement: &70220468145100 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70220468145100
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: colorize
|
49
|
-
requirement: &
|
49
|
+
requirement: &70220468144680 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70220468144680
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: debugger
|
60
|
-
requirement: &
|
60
|
+
requirement: &70220468144260 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70220468144260
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: timecop
|
71
|
-
requirement: &
|
71
|
+
requirement: &70220468143840 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70220468143840
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70220468143420 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70220468143420
|
91
91
|
description: Letters brings Ruby debugging into the 21st century. It leverages print,
|
92
92
|
the debugger, control transfer, even computer beeps to let you see into your code's
|
93
93
|
state.
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/letters/diff.rb
|
102
102
|
- lib/letters/empty_error.rb
|
103
103
|
- lib/letters/helpers.rb
|
104
|
+
- lib/letters/kill_error.rb
|
104
105
|
- lib/letters/nil_error.rb
|
105
106
|
- lib/letters/patch/core.rb
|
106
107
|
- lib/letters/patch/object.rb
|