docile 1.1.0 → 1.1.1
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/.ruby-version +1 -1
- data/.travis.yml +1 -2
- data/Gemfile +10 -4
- data/HISTORY.md +5 -0
- data/README.md +21 -15
- data/Rakefile +4 -4
- data/docile.gemspec +17 -17
- data/lib/docile.rb +6 -6
- data/lib/docile/chaining_fallback_context_proxy.rb +2 -2
- data/lib/docile/execution.rb +5 -6
- data/lib/docile/fallback_context_proxy.rb +2 -2
- data/lib/docile/version.rb +1 -1
- data/spec/docile_spec.rb +34 -34
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb7581d7fa7a2ace7257cb7d0fac9732c80480a5
|
4
|
+
data.tar.gz: 1fab351868ad13d87ceb0882460aa059428b29f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 762a98e99139ca515bd787e794be284c1a3a4dd1be805869736ce8f19bb6cadbcedf6a35b9fb72f71bce5806b45171190cf63b58b02754ebaf400b705971e338
|
7
|
+
data.tar.gz: 5825352e7d6d819b557909f296e2d23ba8bb8807a212bb24781d758f2c59ab030f977bf9f2cb7af5dae7709d86fde8e306a77e1f56f0accb5b5c5b939427a215
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.0.0
|
1
|
+
ruby-2.0.0
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,11 +1,17 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Specify gem's dependencies in docile.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
# Explicitly require test gems for Travis CI, since we're excluding dev dependencies
|
7
7
|
group :test do
|
8
|
-
gem
|
9
|
-
gem
|
10
|
-
gem
|
8
|
+
gem 'rake', '~> 0.9.2'
|
9
|
+
gem 'rspec', '~> 2.11.0'
|
10
|
+
gem 'mime-types', '~> 1.25.1'
|
11
|
+
gem 'coveralls', :require => false
|
12
|
+
|
13
|
+
platform :rbx do
|
14
|
+
gem 'rubysl' # Since 2.2.0, Rubinius needs Ruby standard lib as gem
|
15
|
+
gem 'rubinius-coverage' # Coverage tooling for SimpleCov on Rubinius
|
16
|
+
end
|
11
17
|
end
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# HISTORY
|
2
2
|
|
3
|
+
## [v1.1.1 (Nov 26, 2013)](http://github.com/ms-ati/docile/compare/v1.1.0...v1.1.1)
|
4
|
+
|
5
|
+
- documentation updates and corrections
|
6
|
+
- fix Rubinius build in Travis CI
|
7
|
+
|
3
8
|
## [v1.1.0 (Jul 29, 2013)](http://github.com/ms-ati/docile/compare/v1.0.5...v1.1.0)
|
4
9
|
|
5
10
|
- add functional-style DSL objects via `Docile#dsl_eval_immutable`
|
data/README.md
CHANGED
@@ -16,7 +16,9 @@ coding a bit more docile...
|
|
16
16
|
|
17
17
|
[1]: http://www.google.com/search?q=docile+definition "Google"
|
18
18
|
|
19
|
-
##
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
### Basic
|
20
22
|
|
21
23
|
Let's say that we want to make a DSL for modifying Array objects.
|
22
24
|
Wouldn't it be great if we could just treat the methods of Array as a DSL?
|
@@ -41,7 +43,7 @@ end
|
|
41
43
|
|
42
44
|
Easy!
|
43
45
|
|
44
|
-
|
46
|
+
### Advanced
|
45
47
|
|
46
48
|
Mutating (changing) an Array instance is fine, but what usually makes a good DSL is a [Builder Pattern][2].
|
47
49
|
|
@@ -64,10 +66,10 @@ And let's say we have a PizzaBuilder, which builds a Pizza like this:
|
|
64
66
|
Pizza = Struct.new(:cheese, :pepperoni, :bacon, :sauce)
|
65
67
|
|
66
68
|
class PizzaBuilder
|
67
|
-
def cheese(v=true); @cheese = v; end
|
68
|
-
def pepperoni(v=true); @pepperoni = v; end
|
69
|
-
def bacon(v=true); @bacon = v; end
|
70
|
-
def sauce(v=nil); @sauce = v; end
|
69
|
+
def cheese(v=true); @cheese = v; self; end
|
70
|
+
def pepperoni(v=true); @pepperoni = v; self; end
|
71
|
+
def bacon(v=true); @bacon = v; self; end
|
72
|
+
def sauce(v=nil); @sauce = v; self; end
|
71
73
|
def build
|
72
74
|
Pizza.new(!!@cheese, !!@pepperoni, !!@bacon, @sauce)
|
73
75
|
end
|
@@ -89,7 +91,7 @@ It's just that easy!
|
|
89
91
|
|
90
92
|
[2]: http://stackoverflow.com/questions/328496/when-would-you-use-the-builder-pattern "Builder Pattern"
|
91
93
|
|
92
|
-
|
94
|
+
### Block parameters
|
93
95
|
|
94
96
|
Parameters can be passed to the DSL block.
|
95
97
|
|
@@ -149,7 +151,7 @@ end
|
|
149
151
|
|
150
152
|
[3]: http://www.sinatrarb.com "Sinatra"
|
151
153
|
|
152
|
-
|
154
|
+
### Functional-Style DSL Objects
|
153
155
|
|
154
156
|
Sometimes, you want to use an object as a DSL, but it doesn't quite fit the
|
155
157
|
[imperative](http://en.wikipedia.org/wiki/Imperative_programming) pattern shown
|
@@ -166,11 +168,16 @@ order to enforce [immutability](http://en.wikipedia.org/wiki/Immutable_object).
|
|
166
168
|
Wouldn't it be great if we could just treat these methods as a DSL as well?
|
167
169
|
|
168
170
|
```ruby
|
169
|
-
|
171
|
+
s = "I'm immutable!".freeze
|
172
|
+
|
173
|
+
with_immutable_string(s) do
|
170
174
|
reverse
|
171
175
|
upcase
|
172
176
|
end
|
173
177
|
#=> "!ELBATUMMI M'I"
|
178
|
+
|
179
|
+
s
|
180
|
+
#=> "I'm immutable!"
|
174
181
|
```
|
175
182
|
|
176
183
|
No problem, just define the method `with_immutable_string` like this:
|
@@ -199,15 +206,14 @@ All set!
|
|
199
206
|
$ gem install docile
|
200
207
|
```
|
201
208
|
|
202
|
-
##
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
Or, read the code hosted on *github.com*: [Docile Code](https://github.com/ms-ati/docile)
|
209
|
+
## Links
|
210
|
+
* [Source](https://github.com/ms-ati/docile)
|
211
|
+
* [Documentation](http://rubydoc.info/gems/docile)
|
212
|
+
* [Bug Tracker](https://github.com/ms-ati/docile/issues)
|
207
213
|
|
208
214
|
## Status
|
209
215
|
|
210
|
-
|
216
|
+
Works on [all ruby versions since 1.8.7](https://github.com/ms-ati/docile/blob/master/.travis.yml).
|
211
217
|
|
212
218
|
## Note on Patches/Pull Requests
|
213
219
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require 'rake/clean'
|
2
|
+
require 'bundler/gem_tasks'
|
3
|
+
require 'rspec/core/rake_task'
|
4
4
|
|
5
5
|
# Default task for `rake` is to run rspec
|
6
6
|
task :default => [:spec]
|
@@ -9,7 +9,7 @@ task :default => [:spec]
|
|
9
9
|
RSpec::Core::RakeTask.new
|
10
10
|
|
11
11
|
# Configure `rake clobber` to delete all generated files
|
12
|
-
CLOBBER.include(
|
12
|
+
CLOBBER.include('pkg', 'doc', 'coverage')
|
13
13
|
|
14
14
|
# Only configure yard doc generation when *not* on Travis
|
15
15
|
if ENV['CI'] != 'true'
|
data/docile.gemspec
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require "docile/version"
|
1
|
+
$:.push File.expand_path('../lib', __FILE__)
|
2
|
+
require 'docile/version'
|
4
3
|
|
5
4
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
5
|
+
s.name = 'docile'
|
7
6
|
s.version = Docile::VERSION
|
8
|
-
s.authors = [
|
9
|
-
s.email =
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
7
|
+
s.authors = ['Marc Siegel']
|
8
|
+
s.email = %w(msiegel@usainnov.com)
|
9
|
+
s.homepage = 'http://ms-ati.github.com/docile/'
|
10
|
+
s.summary = 'Docile keeps your Ruby DSLs tame and well-behaved'
|
11
|
+
s.description = 'Docile turns any Ruby object into a DSL. Especially useful with the Builder pattern.'
|
12
|
+
s.license = 'MIT'
|
13
13
|
|
14
|
-
s.rubyforge_project =
|
14
|
+
s.rubyforge_project = 'docile'
|
15
15
|
|
16
16
|
s.files = `git ls-files`.split("\n")
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths =
|
19
|
+
s.require_paths = %w(lib)
|
20
20
|
|
21
21
|
# Running rspec tests from rake
|
22
|
-
s.add_development_dependency
|
23
|
-
s.add_development_dependency
|
22
|
+
s.add_development_dependency 'rake', '~> 0.9.2'
|
23
|
+
s.add_development_dependency 'rspec', '~> 2.11.0'
|
24
24
|
|
25
25
|
# Github flavored markdown in YARD documentation
|
26
26
|
# http://blog.nikosd.com/2011/11/github-flavored-markdown-in-yard.html
|
27
|
-
s.add_development_dependency
|
28
|
-
s.add_development_dependency
|
29
|
-
s.add_development_dependency
|
27
|
+
s.add_development_dependency 'yard'
|
28
|
+
s.add_development_dependency 'redcarpet'
|
29
|
+
s.add_development_dependency 'github-markup'
|
30
30
|
|
31
31
|
# Coveralls test coverage tool
|
32
|
-
s.add_development_dependency
|
32
|
+
s.add_development_dependency 'coveralls'
|
33
33
|
end
|
data/lib/docile.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require 'docile/version'
|
2
|
+
require 'docile/execution'
|
3
|
+
require 'docile/fallback_context_proxy'
|
4
|
+
require 'docile/chaining_fallback_context_proxy'
|
5
5
|
|
6
6
|
# Docile keeps your Ruby DSLs tame and well-behaved.
|
7
7
|
module Docile
|
@@ -36,7 +36,7 @@ module Docile
|
|
36
36
|
#
|
37
37
|
# @param dsl [Object] context object whose methods make up the DSL
|
38
38
|
# @param args [Array] arguments to be passed to the block
|
39
|
-
# @
|
39
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
40
40
|
# `dsl` context object
|
41
41
|
# @return [Object] the `dsl` context object after executing the block
|
42
42
|
def dsl_eval(dsl, *args, &block)
|
@@ -74,7 +74,7 @@ module Docile
|
|
74
74
|
# @param dsl [Object] immutable context object whose methods make up the
|
75
75
|
# initial DSL
|
76
76
|
# @param args [Array] arguments to be passed to the block
|
77
|
-
# @
|
77
|
+
# @param block [Proc] the block of DSL commands to be executed against the
|
78
78
|
# `dsl` context object and successor return values
|
79
79
|
# @return [Object] the return value of the final command in the block
|
80
80
|
def dsl_eval_immutable(dsl, *args, &block)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'docile/fallback_context_proxy'
|
2
2
|
|
3
3
|
module Docile
|
4
4
|
# @api private
|
@@ -9,7 +9,7 @@ module Docile
|
|
9
9
|
# This is useful for implementing DSL evaluation for immutable context
|
10
10
|
# objects.
|
11
11
|
#
|
12
|
-
# @see Docile
|
12
|
+
# @see Docile.dsl_eval_immutable
|
13
13
|
class ChainingFallbackContextProxy < FallbackContextProxy
|
14
14
|
# Proxy methods as in {FallbackContextProxy#method_missing}, replacing
|
15
15
|
# `receiver` with the returned value.
|
data/lib/docile/execution.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Docile
|
2
2
|
# @api private
|
3
3
|
#
|
4
|
-
# A namespace for functions relating to the execution of a block
|
4
|
+
# A namespace for functions relating to the execution of a block against a
|
5
5
|
# proxy object.
|
6
6
|
module Execution
|
7
7
|
# Execute a block in the context of an object whose methods represent the
|
@@ -9,14 +9,13 @@ module Docile
|
|
9
9
|
#
|
10
10
|
# @param dsl [Object] context object whose methods make up the
|
11
11
|
# (initial) DSL
|
12
|
-
# @param proxy_type [FallbackContextProxy,
|
13
|
-
#
|
14
|
-
# class to instantiate as the proxy context
|
12
|
+
# @param proxy_type [FallbackContextProxy, ChainingFallbackContextProxy]
|
13
|
+
# which class to instantiate as proxy context
|
15
14
|
# @param args [Array] arguments to be passed to the block
|
16
|
-
# @
|
15
|
+
# @param block [Proc] the block of DSL commands to be executed
|
17
16
|
# @return [Object] the return value of the block
|
18
17
|
def exec_in_proxy_context(dsl, proxy_type, *args, &block)
|
19
|
-
block_context = eval(
|
18
|
+
block_context = eval('self', block.binding)
|
20
19
|
proxy_context = proxy_type.new(dsl, proxy_type.new(dsl, block_context))
|
21
20
|
begin
|
22
21
|
block_context.instance_variables.each do |ivar|
|
@@ -12,12 +12,12 @@ module Docile
|
|
12
12
|
#
|
13
13
|
# This is useful for implementing DSL evaluation in the context of an object.
|
14
14
|
#
|
15
|
-
# @see Docile
|
15
|
+
# @see Docile.dsl_eval
|
16
16
|
class FallbackContextProxy
|
17
17
|
# The set of methods which will **not** be proxied, but instead answered
|
18
18
|
# by this object directly.
|
19
19
|
NON_PROXIED_METHODS = Set[:__send__, :object_id, :__id__, :==, :equal?,
|
20
|
-
:
|
20
|
+
:'!', :'!=', :instance_exec, :instance_variables,
|
21
21
|
:instance_variable_get, :instance_variable_set,
|
22
22
|
:remove_instance_variable]
|
23
23
|
|
data/lib/docile/version.rb
CHANGED
data/spec/docile_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Docile do
|
4
4
|
|
5
|
-
describe
|
5
|
+
describe '.dsl_eval' do
|
6
6
|
|
7
|
-
context
|
7
|
+
context 'when DSL context object is an Array' do
|
8
8
|
let(:array) { [] }
|
9
9
|
let!(:result) { execute_dsl_against_array }
|
10
10
|
|
@@ -17,15 +17,15 @@ describe Docile do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
20
|
+
it 'executes the block against the DSL context object' do
|
21
21
|
array.should == [1, 3]
|
22
22
|
end
|
23
23
|
|
24
|
-
it
|
24
|
+
it 'returns the DSL object after executing block against it' do
|
25
25
|
result.should == array
|
26
26
|
end
|
27
27
|
|
28
|
-
it "doesn't proxy #__id__"
|
28
|
+
it "doesn't proxy #__id__" do
|
29
29
|
Docile.dsl_eval(array) { __id__.should_not == array.__id__ }
|
30
30
|
end
|
31
31
|
|
@@ -46,7 +46,7 @@ describe Docile do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
-
context
|
49
|
+
context 'when DSL context object is a Builder pattern' do
|
50
50
|
let(:builder) { PizzaBuilder.new }
|
51
51
|
let(:result) { execute_dsl_against_builder_and_call_build }
|
52
52
|
|
@@ -59,7 +59,7 @@ describe Docile do
|
|
59
59
|
end.build
|
60
60
|
end
|
61
61
|
|
62
|
-
it
|
62
|
+
it 'returns correctly built object' do
|
63
63
|
result.should == Pizza.new(true, false, true, :extra)
|
64
64
|
end
|
65
65
|
end
|
@@ -86,12 +86,12 @@ describe Docile do
|
|
86
86
|
Docile.dsl_eval(OuterDSL.new, &block)
|
87
87
|
end
|
88
88
|
|
89
|
-
context
|
89
|
+
context 'when given parameters for the DSL block' do
|
90
90
|
def parameterized(*args, &block)
|
91
91
|
Docile.dsl_eval(OuterDSL.new, *args, &block)
|
92
92
|
end
|
93
93
|
|
94
|
-
it
|
94
|
+
it 'passes parameters to the block' do
|
95
95
|
parameterized(1,2,3) do |x,y,z|
|
96
96
|
x.should == 1
|
97
97
|
y.should == 2
|
@@ -99,11 +99,11 @@ describe Docile do
|
|
99
99
|
end
|
100
100
|
end
|
101
101
|
|
102
|
-
it
|
102
|
+
it 'finds parameters before methods' do
|
103
103
|
parameterized(1) { |a| a.should == 1 }
|
104
104
|
end
|
105
105
|
|
106
|
-
it
|
106
|
+
it 'find outer dsl parameters in inner dsl scope' do
|
107
107
|
parameterized(1,2,3) do |a,b,c|
|
108
108
|
inner_with_params(c) do |d,e|
|
109
109
|
a.should == 1
|
@@ -116,18 +116,18 @@ describe Docile do
|
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
-
context
|
119
|
+
context 'when DSL blocks are nested' do
|
120
120
|
|
121
|
-
context
|
122
|
-
it
|
121
|
+
context 'method lookup' do
|
122
|
+
it 'finds method of outer dsl in outer dsl scope' do
|
123
123
|
outer { a.should == 'a' }
|
124
124
|
end
|
125
125
|
|
126
|
-
it
|
126
|
+
it 'finds method of inner dsl in inner dsl scope' do
|
127
127
|
outer { inner { b.should == 'b' } }
|
128
128
|
end
|
129
129
|
|
130
|
-
it
|
130
|
+
it 'finds method of outer dsl in inner dsl scope' do
|
131
131
|
outer { inner { a.should == 'a' } }
|
132
132
|
end
|
133
133
|
|
@@ -141,27 +141,27 @@ describe Docile do
|
|
141
141
|
outer { inner { c.should == 'c' } }
|
142
142
|
end
|
143
143
|
|
144
|
-
it
|
144
|
+
it 'finds method of outer dsl in preference to block context' do
|
145
145
|
def a; 'not a'; end
|
146
146
|
outer { a.should == 'a' }
|
147
147
|
outer { inner { a.should == 'a' } }
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
context
|
152
|
-
it
|
151
|
+
context 'local variable lookup' do
|
152
|
+
it 'finds local variable from block context in outer dsl scope' do
|
153
153
|
foo = 'foo'
|
154
154
|
outer { foo.should == 'foo' }
|
155
155
|
end
|
156
156
|
|
157
|
-
it
|
157
|
+
it 'finds local variable from block definition in inner dsl scope' do
|
158
158
|
bar = 'bar'
|
159
159
|
outer { inner { bar.should == 'bar' } }
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
163
|
-
context
|
164
|
-
it
|
163
|
+
context 'instance variable lookup' do
|
164
|
+
it 'finds instance variable from block definition in outer dsl scope' do
|
165
165
|
@iv1 = 'iv1'; outer { @iv1.should == 'iv1' }
|
166
166
|
end
|
167
167
|
|
@@ -169,7 +169,7 @@ describe Docile do
|
|
169
169
|
@iv1 = 'foo'; outer { @iv1 = 'bar' }; @iv1.should == 'bar'
|
170
170
|
end
|
171
171
|
|
172
|
-
it
|
172
|
+
it 'finds instance variable from block definition in inner dsl scope' do
|
173
173
|
@iv2 = 'iv2'; outer { inner { @iv2.should == 'iv2' } }
|
174
174
|
end
|
175
175
|
|
@@ -180,7 +180,7 @@ describe Docile do
|
|
180
180
|
|
181
181
|
end
|
182
182
|
|
183
|
-
context
|
183
|
+
context 'when DSL context object is a Dispatch pattern' do
|
184
184
|
class DispatchScope
|
185
185
|
def params
|
186
186
|
{ :a => 1, :b => 2, :c => 3 }
|
@@ -211,7 +211,7 @@ describe Docile do
|
|
211
211
|
MessageDispatch.instance.dispatch(path, request)
|
212
212
|
end
|
213
213
|
|
214
|
-
it
|
214
|
+
it 'dispatches correctly' do
|
215
215
|
@first = @second = nil
|
216
216
|
|
217
217
|
respond '/path' do |request|
|
@@ -246,9 +246,9 @@ describe Docile do
|
|
246
246
|
|
247
247
|
end
|
248
248
|
|
249
|
-
describe
|
249
|
+
describe '.dsl_eval_immutable' do
|
250
250
|
|
251
|
-
context
|
251
|
+
context 'when DSL context object is a frozen String' do
|
252
252
|
let(:original) { "I'm immutable!".freeze }
|
253
253
|
let!(:result) { execute_non_mutating_dsl_against_string }
|
254
254
|
|
@@ -263,12 +263,12 @@ describe Docile do
|
|
263
263
|
original.should == "I'm immutable!"
|
264
264
|
end
|
265
265
|
|
266
|
-
it
|
266
|
+
it 'chains the commands in the block against the DSL context object' do
|
267
267
|
result.should == "!ELBATUMMI M'I"
|
268
268
|
end
|
269
269
|
end
|
270
270
|
|
271
|
-
context
|
271
|
+
context 'when DSL context object is a number' do
|
272
272
|
let(:original) { 84.5 }
|
273
273
|
let!(:result) { execute_non_mutating_dsl_against_number }
|
274
274
|
|
@@ -279,7 +279,7 @@ describe Docile do
|
|
279
279
|
end
|
280
280
|
end
|
281
281
|
|
282
|
-
it
|
282
|
+
it 'chains the commands in the block against the DSL context object' do
|
283
283
|
result.should == 42
|
284
284
|
end
|
285
285
|
end
|
@@ -297,7 +297,7 @@ describe Docile::FallbackContextProxy do
|
|
297
297
|
|
298
298
|
def create_fcp_and_set_one_instance_variable
|
299
299
|
fcp = Docile::FallbackContextProxy.new(nil, nil)
|
300
|
-
fcp.instance_variable_set(:@foo,
|
300
|
+
fcp.instance_variable_set(:@foo, 'foo')
|
301
301
|
fcp
|
302
302
|
end
|
303
303
|
|
@@ -306,7 +306,7 @@ describe Docile::FallbackContextProxy do
|
|
306
306
|
instance_variables.first.class
|
307
307
|
end
|
308
308
|
|
309
|
-
it
|
309
|
+
it 'returns proxied instance variables' do
|
310
310
|
subject.map(&:to_sym).should include(:@foo)
|
311
311
|
end
|
312
312
|
|
@@ -314,7 +314,7 @@ describe Docile::FallbackContextProxy do
|
|
314
314
|
subject.map(&:to_sym).should_not include(*excluded)
|
315
315
|
end
|
316
316
|
|
317
|
-
it
|
317
|
+
it 'preserves the type (String or Symbol) of names on this ruby version' do
|
318
318
|
actual_type_of_names.should == expected_type_of_names
|
319
319
|
end
|
320
320
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marc Siegel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.9.2
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.9.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 2.11.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 2.11.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -123,7 +123,8 @@ files:
|
|
123
123
|
- spec/docile_spec.rb
|
124
124
|
- spec/spec_helper.rb
|
125
125
|
homepage: http://ms-ati.github.com/docile/
|
126
|
-
licenses:
|
126
|
+
licenses:
|
127
|
+
- MIT
|
127
128
|
metadata: {}
|
128
129
|
post_install_message:
|
129
130
|
rdoc_options: []
|
@@ -141,10 +142,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
141
142
|
version: '0'
|
142
143
|
requirements: []
|
143
144
|
rubyforge_project: docile
|
144
|
-
rubygems_version: 2.
|
145
|
+
rubygems_version: 2.1.11
|
145
146
|
signing_key:
|
146
147
|
specification_version: 4
|
147
|
-
summary: Docile keeps your Ruby
|
148
|
+
summary: Docile keeps your Ruby DSLs tame and well-behaved
|
148
149
|
test_files:
|
149
150
|
- spec/docile_spec.rb
|
150
151
|
- spec/spec_helper.rb
|