trick_bag 0.41.0 → 0.42.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OWFkZGQzZWE1N2RmY2RhNTNiZmMyZTMyODEzNWRlYjkzNTcwNDNmOA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWVmNTRlYzRhOTA3MWY1YWZmNWYxN2EzM2FjZmVkZDM4OTNmYjQ5Zg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MTNjZjZlYzA3N2YyZDA1ZWNjODdiZWIwOThjNjk0MTkxMzljMDA4MGY1NTQ0
|
10
|
+
NjBjMWVlNDkwOGU3ZjkzODdhZTE1NTc2NzNmYzIyMGQ4ZWFlNjkxOGU4YmJh
|
11
|
+
NDIxZDk4NTUzNTAzZjc0MGEyNjhiOGMwYjJmY2Y5ZWZkMjFjOGY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MGFhMDBjZWQ2MTVmNDIzYTY1YzY4ODE1ZjRiMzZlMWRmNWM2ZDg2OGQzMjgy
|
14
|
+
ZGRhYWUyNDE0MGU2YzYxZTkxZDZiNDAzMGM0NDM2ZjNlNDRkMjIzY2UwNzU0
|
15
|
+
OGIxODhmODA1MThkNzRiYjY0YWJkZWMwMmI3NTc3NDVmMDI1YmM=
|
data/RELEASE_NOTES.md
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module TrickBag
|
2
|
+
|
3
|
+
# ERB requires a binding from which it gets its values for substituting
|
4
|
+
# in its generated output. Often the current binding is used,
|
5
|
+
# but this often exposes far more to the template than it needs,
|
6
|
+
# and can potentially expose the running program to security risks.
|
7
|
+
#
|
8
|
+
# Please see the unit tests for examples.
|
9
|
+
#
|
10
|
+
# This class functions as a bag of values that can be passed to ERB
|
11
|
+
# for its substitutions. It subclasses OpenStruct,
|
12
|
+
# so it can be instantiated with a hash, and arbitrary new
|
13
|
+
# setter methods can be called to add new values.
|
14
|
+
#
|
15
|
+
# In the template, these values can be accessed by their method/attribute names.
|
16
|
+
#
|
17
|
+
# The 'keys' method is added as a convenience, so that you can see the
|
18
|
+
# names of the attributes in the 'bag'. It is unfortunate the OpenStruct
|
19
|
+
# doesn't have something like this already...or does it?
|
20
|
+
#
|
21
|
+
# A 'render' method is provided that calls ERB and passes the instance's binding,
|
22
|
+
# which will contain the attributes.
|
23
|
+
|
24
|
+
# Render strategy taken from
|
25
|
+
# http://stackoverflow.com/questions/8954706/render-an-erb-template-with-values-from-a-hash
|
26
|
+
class ErbRenderer < OpenStruct
|
27
|
+
|
28
|
+
def render(template)
|
29
|
+
ERB.new(template).result(binding)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Useful for seeing what values are stored in the OpenStruct.
|
33
|
+
def keys
|
34
|
+
@table.keys.clone
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -52,13 +52,13 @@ module Timing
|
|
52
52
|
# Returns the passed block's return value.
|
53
53
|
#
|
54
54
|
# e.g. benchmark('time to loop 1,000,000 times') { 1_000_000.times { 42 }; 'hi' }
|
55
|
-
# outputs
|
55
|
+
# outputs the following string:
|
56
56
|
# 0.050000 0.000000 0.050000 ( 0.042376): time to loop 1,000,000 times
|
57
57
|
# and returns: 42
|
58
58
|
#
|
59
59
|
# @param caption the text fragment to print after the timing data
|
60
60
|
# @param out_stream object responding to << that will get the output string
|
61
|
-
#
|
61
|
+
# defaults to $stdout
|
62
62
|
# @block the block to execute and benchmark
|
63
63
|
def benchmark(caption, out_stream = $stdout, &block)
|
64
64
|
return_value = nil
|
data/lib/trick_bag/version.rb
CHANGED
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative '../../spec_helper'
|
2
|
+
|
3
|
+
require 'trick_bag/formatters/erb_renderer'
|
4
|
+
|
5
|
+
module TrickBag
|
6
|
+
|
7
|
+
describe ErbRenderer do
|
8
|
+
|
9
|
+
specify 'it can be instantiated with a hash' do
|
10
|
+
expect(TrickBag::ErbRenderer.new(color: 'blue').color).to eq('blue')
|
11
|
+
end
|
12
|
+
|
13
|
+
specify 'it can substitute a simple value' do
|
14
|
+
expect(TrickBag::ErbRenderer.new(x: 3).render("[<%= x %>]")).to eq('[3]')
|
15
|
+
end
|
16
|
+
|
17
|
+
specify 'the template cannot see local variables' do
|
18
|
+
x = 3
|
19
|
+
expect(TrickBag::ErbRenderer.new.render("<%= x %>")).to be_empty
|
20
|
+
end
|
21
|
+
|
22
|
+
specify 'the template cannot see instance variables of other classes' do
|
23
|
+
@x = 3
|
24
|
+
expect(TrickBag::ErbRenderer.new.render("<%= @x %>")).to be_empty
|
25
|
+
end
|
26
|
+
|
27
|
+
specify 'it works when a value is added after instantiation' do
|
28
|
+
renderer = ErbRenderer.new
|
29
|
+
renderer.fruit = 'mango'
|
30
|
+
expect(renderer.render("<%= fruit %>")).to eq('mango')
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trick_bag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.42.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Bennett
|
@@ -116,6 +116,7 @@ files:
|
|
116
116
|
- lib/trick_bag/enumerables/endless_last_enumerable.rb
|
117
117
|
- lib/trick_bag/enumerables/file_line_reader.rb
|
118
118
|
- lib/trick_bag/enumerables/filtered_enumerable.rb
|
119
|
+
- lib/trick_bag/formatters/erb_renderer.rb
|
119
120
|
- lib/trick_bag/formatters/formatters.rb
|
120
121
|
- lib/trick_bag/io/temp_files.rb
|
121
122
|
- lib/trick_bag/io/text_mode_status_updater.rb
|
@@ -138,6 +139,7 @@ files:
|
|
138
139
|
- spec/trick_bag/enumerables/endless_last_enumerable_spec.rb
|
139
140
|
- spec/trick_bag/enumerables/file_line_reader_spec.rb
|
140
141
|
- spec/trick_bag/enumerables/filtered_enumerable_spec.rb
|
142
|
+
- spec/trick_bag/formatters/erb_renderer_spec.rb
|
141
143
|
- spec/trick_bag/formatters/formatters_spec.rb
|
142
144
|
- spec/trick_bag/io/temp_files_spec.rb
|
143
145
|
- spec/trick_bag/io/text_mode_status_updater_spec.rb
|
@@ -185,6 +187,7 @@ test_files:
|
|
185
187
|
- spec/trick_bag/enumerables/endless_last_enumerable_spec.rb
|
186
188
|
- spec/trick_bag/enumerables/file_line_reader_spec.rb
|
187
189
|
- spec/trick_bag/enumerables/filtered_enumerable_spec.rb
|
190
|
+
- spec/trick_bag/formatters/erb_renderer_spec.rb
|
188
191
|
- spec/trick_bag/formatters/formatters_spec.rb
|
189
192
|
- spec/trick_bag/io/temp_files_spec.rb
|
190
193
|
- spec/trick_bag/io/text_mode_status_updater_spec.rb
|