letters 0.2.7 → 0.3.0
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 +11 -1
- data/lib/letters/config.rb +44 -0
- data/lib/letters/core_ext.rb +9 -10
- data/lib/letters/version.rb +1 -1
- data/spec/letters/config_spec.rb +33 -0
- data/spec/letters/core_ext_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- metadata +19 -16
data/README.md
CHANGED
|
@@ -307,4 +307,14 @@ The `o` method takes options, too, so you can add a prefix message to the output
|
|
|
307
307
|
</tr>
|
|
308
308
|
</table>
|
|
309
309
|
|
|
310
|
-
See full documentation
|
|
310
|
+
See the [full documentation](http://lettersrb.com/api) for examples and more detailed explanations.
|
|
311
|
+
|
|
312
|
+
### Configuration ###
|
|
313
|
+
|
|
314
|
+
Lastly, you can tune and tweak each Letters method to default to your own tastes. Want to name put files somewhere else? No problem. Don't like YAML? Default `f` to use Pretty Print instead! The world of defaults is your oyster.
|
|
315
|
+
|
|
316
|
+
```ruby
|
|
317
|
+
Letters.config do
|
|
318
|
+
f :format => "pp", :name => "my-special-file"
|
|
319
|
+
end
|
|
320
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require "letters/assertion_error"
|
|
2
|
+
|
|
3
|
+
module Letters
|
|
4
|
+
def self.defaults
|
|
5
|
+
defaults = {
|
|
6
|
+
a: { error_class: Letters::AssertionError },
|
|
7
|
+
d1: { dup: false },
|
|
8
|
+
d2: { format: "ap" },
|
|
9
|
+
f: { format: "yaml", name: "log" },
|
|
10
|
+
k: { max: 0 },
|
|
11
|
+
l: { level: "info", format: "yaml" },
|
|
12
|
+
o: { format: "ap", stream: $stdout },
|
|
13
|
+
t: { time_format: "millis" }
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
defaults.tap do |hash|
|
|
17
|
+
hash.default_proc = lambda {|h, k| h[k] = Hash.new }
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.user_defaults
|
|
22
|
+
@user_defaults ||= Hash.new {|h, k| h[k] = Hash.new }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.defaults_with(letter, opts={})
|
|
26
|
+
defaults[letter].merge(user_defaults[letter]).merge(opts)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.reset_config!
|
|
30
|
+
user_defaults.clear
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.config(&block)
|
|
34
|
+
Letters::Config.class_eval(&block)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
module Config
|
|
38
|
+
("a".."z").each do |letter|
|
|
39
|
+
define_singleton_method(letter) do |opts={}|
|
|
40
|
+
Letters.user_defaults[letter.to_sym] = opts
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
data/lib/letters/core_ext.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
require "letters/config"
|
|
1
2
|
require "letters/helpers"
|
|
2
3
|
require "letters/diff"
|
|
3
|
-
require "letters/
|
|
4
|
+
require "letters/time_formats"
|
|
4
5
|
require "letters/empty_error"
|
|
5
6
|
require "letters/kill_error"
|
|
6
7
|
require "letters/nil_error"
|
|
7
|
-
require "letters/time_formats"
|
|
8
8
|
|
|
9
9
|
module Letters
|
|
10
10
|
module CoreExt
|
|
@@ -12,7 +12,7 @@ module Letters
|
|
|
12
12
|
|
|
13
13
|
# Assert
|
|
14
14
|
def a(opts={}, &block)
|
|
15
|
-
opts =
|
|
15
|
+
opts = Letters.defaults_with(:a, opts)
|
|
16
16
|
tap do |o|
|
|
17
17
|
Helpers.message opts
|
|
18
18
|
if block_given? && !o.instance_eval(&block)
|
|
@@ -52,8 +52,7 @@ module Letters
|
|
|
52
52
|
|
|
53
53
|
# Diff 2
|
|
54
54
|
def d2(opts={})
|
|
55
|
-
|
|
56
|
-
opts = { format: "ap" }.merge opts
|
|
55
|
+
opts = Letters.defaults_with(:d2, opts)
|
|
57
56
|
tap do |o|
|
|
58
57
|
diff = Helpers.diff(Letters.object_for_diff, o)
|
|
59
58
|
Helpers.message opts
|
|
@@ -73,7 +72,7 @@ module Letters
|
|
|
73
72
|
|
|
74
73
|
# File
|
|
75
74
|
def f(opts={})
|
|
76
|
-
opts =
|
|
75
|
+
opts = Letters.defaults_with(:f, opts)
|
|
77
76
|
tap do |o|
|
|
78
77
|
suffixes = [""] + (1..50).to_a
|
|
79
78
|
deduper = suffixes.detect {|x| !File.directory? "#{opts[:name]}#{x}" }
|
|
@@ -96,7 +95,7 @@ module Letters
|
|
|
96
95
|
|
|
97
96
|
# Kill
|
|
98
97
|
def k(opts={})
|
|
99
|
-
opts =
|
|
98
|
+
opts = Letters.defaults_with(:k, opts)
|
|
100
99
|
opts.merge! :error_class => KillError
|
|
101
100
|
tap do |o|
|
|
102
101
|
@letters_kill_count ||= 0
|
|
@@ -109,7 +108,7 @@ module Letters
|
|
|
109
108
|
|
|
110
109
|
# Log
|
|
111
110
|
def l(opts={})
|
|
112
|
-
opts =
|
|
111
|
+
opts = Letters.defaults_with(:l, opts)
|
|
113
112
|
tap do |o|
|
|
114
113
|
begin
|
|
115
114
|
logger.send(opts[:level], opts[:message]) if opts[:message]
|
|
@@ -141,7 +140,7 @@ module Letters
|
|
|
141
140
|
|
|
142
141
|
# Print to STDOUT
|
|
143
142
|
def o(opts={}, &block)
|
|
144
|
-
opts =
|
|
143
|
+
opts = Letters.defaults_with(:o, opts)
|
|
145
144
|
tap do |o|
|
|
146
145
|
Helpers.message opts
|
|
147
146
|
obj = block_given? ? o.instance_eval(&block) : o
|
|
@@ -167,7 +166,7 @@ module Letters
|
|
|
167
166
|
|
|
168
167
|
# Timestamp
|
|
169
168
|
def t(opts={})
|
|
170
|
-
opts =
|
|
169
|
+
opts = Letters.defaults_with(:t, opts)
|
|
171
170
|
tap do
|
|
172
171
|
Helpers.message opts
|
|
173
172
|
Helpers.out Time.now.to_s(opts[:time_format].to_sym), opts
|
data/lib/letters/version.rb
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
module Letters
|
|
4
|
+
describe "configuration" do
|
|
5
|
+
let(:hash) { { a: "b" } }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
Letters.config do
|
|
9
|
+
f :format => "pp"
|
|
10
|
+
end
|
|
11
|
+
File.exist?("log").should be_false
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
after do
|
|
15
|
+
FileUtils.rm "log"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe ".config" do
|
|
19
|
+
it "allows default argument configuration" do
|
|
20
|
+
hash.f
|
|
21
|
+
File.read("log").should == hash.pretty_inspect
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe ".reset_config!" do
|
|
26
|
+
it "clears out the config hash" do
|
|
27
|
+
Letters.reset_config!
|
|
28
|
+
hash.f
|
|
29
|
+
File.read("log").should == hash.to_yaml
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -152,7 +152,7 @@ module Letters
|
|
|
152
152
|
end
|
|
153
153
|
|
|
154
154
|
it 'does not raises if number of calls are below max' do
|
|
155
|
-
lambda{ hash.k(max: 1) }.should_not raise_error
|
|
155
|
+
lambda { hash.k(max: 1) }.should_not raise_error
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
it 'raises a KillError if number of calls is above max' do
|
data/spec/spec_helper.rb
CHANGED
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.
|
|
4
|
+
version: 0.3.0
|
|
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-07 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: awesome_print
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &70172816319040 !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: *70172816319040
|
|
25
25
|
- !ruby/object:Gem::Dependency
|
|
26
26
|
name: activesupport
|
|
27
|
-
requirement: &
|
|
27
|
+
requirement: &70172816318600 !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: *70172816318600
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
37
37
|
name: xml-simple
|
|
38
|
-
requirement: &
|
|
38
|
+
requirement: &70172816318180 !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: *70172816318180
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: colorize
|
|
49
|
-
requirement: &
|
|
49
|
+
requirement: &70172816317760 !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: *70172816317760
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
59
|
name: debugger
|
|
60
|
-
requirement: &
|
|
60
|
+
requirement: &70172816317340 !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: *70172816317340
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: timecop
|
|
71
|
-
requirement: &
|
|
71
|
+
requirement: &70172816316920 !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: *70172816316920
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: rspec
|
|
82
|
-
requirement: &
|
|
82
|
+
requirement: &70172816316500 !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: *70172816316500
|
|
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.
|
|
@@ -97,6 +97,7 @@ extensions: []
|
|
|
97
97
|
extra_rdoc_files: []
|
|
98
98
|
files:
|
|
99
99
|
- lib/letters/assertion_error.rb
|
|
100
|
+
- lib/letters/config.rb
|
|
100
101
|
- lib/letters/core_ext.rb
|
|
101
102
|
- lib/letters/diff.rb
|
|
102
103
|
- lib/letters/empty_error.rb
|
|
@@ -113,6 +114,7 @@ files:
|
|
|
113
114
|
- README.md
|
|
114
115
|
- COPYING
|
|
115
116
|
- Gemfile
|
|
117
|
+
- spec/letters/config_spec.rb
|
|
116
118
|
- spec/letters/core_ext_spec.rb
|
|
117
119
|
- spec/letters/helpers_spec.rb
|
|
118
120
|
- spec/letters/patch/core_spec.rb
|
|
@@ -145,6 +147,7 @@ signing_key:
|
|
|
145
147
|
specification_version: 3
|
|
146
148
|
summary: A tiny debugging library for Ruby
|
|
147
149
|
test_files:
|
|
150
|
+
- spec/letters/config_spec.rb
|
|
148
151
|
- spec/letters/core_ext_spec.rb
|
|
149
152
|
- spec/letters/helpers_spec.rb
|
|
150
153
|
- spec/letters/patch/core_spec.rb
|