docile 0.9.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ bundler_args: --without development
3
+ rvm:
4
+ - 1.9.3
5
+ - 1.9.2
6
+ - 1.8.7
7
+ - ree
8
+ - jruby-18mode
9
+ - jruby-19mode
10
+ - rbx-18mode
11
+ - rbx-19mode
data/.yardopts CHANGED
@@ -1,7 +1,7 @@
1
1
  --title 'Docile Documentation'
2
2
 
3
3
  --no-private
4
- --hide-void-return
4
+ --main=README.md
5
5
 
6
6
  --markup-provider=redcarpet
7
7
  --markup=markdown
data/Gemfile CHANGED
@@ -1,4 +1,10 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in docile.gemspec
3
+ # Specify gem's dependencies in docile.gemspec
4
4
  gemspec
5
+
6
+ # Explicitly require test gems for Travis CI, since we're excluding dev dependencies
7
+ group :test do
8
+ gem "rake", "~> 0.9.2"
9
+ gem "rspec", "~> 2.11.0"
10
+ end
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Marc Siegel
1
+ Copyright (c) 2012 Marc Siegel
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of
4
4
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -8,12 +8,15 @@ Let's make our Ruby DSLs more docile...
8
8
 
9
9
  [1]: http://www.google.com/search?q=docile+definition "Google"
10
10
 
11
+ [![Build Status](https://travis-ci.org/ms-ati/docile.png)](https://travis-ci.org/ms-ati/docile)
12
+ [![Dependency Status](https://gemnasium.com/ms-ati/docile.png)](https://gemnasium.com/ms-ati/docile)
13
+
11
14
  ## Usage
12
15
 
13
16
  Let's treat an Array's methods as its own DSL:
14
17
 
15
18
  ``` ruby
16
- Docile.dsl_eval [] do
19
+ Docile.dsl_eval([]) do
17
20
  push 1
18
21
  push 2
19
22
  pop
@@ -36,7 +39,7 @@ Then you can use this same PizzaBuilder class as a DSL:
36
39
 
37
40
  ``` ruby
38
41
  @sauce_level = :extra
39
- pizza = Docile.dsl_eval PizzaBuilder.new do
42
+ pizza = Docile.dsl_eval(PizzaBuilder.new) do
40
43
  cheese
41
44
  pepperoni
42
45
  sauce @sauce_level
@@ -64,8 +67,13 @@ $ gem install docile
64
67
  ## Documentation
65
68
 
66
69
  Documentation hosted on *rubydoc.info*: [Docile Documentation](http://rubydoc.info/gems/docile)
70
+
67
71
  Or, read the code hosted on *github.com*: [Docile Code](https://github.com/ms-ati/docile)
68
72
 
73
+ ## Status
74
+
75
+ Version 1.0 works on [all ruby versions](https://github.com/ms-ati/docile/blob/master/.travis.yml).
76
+
69
77
  ## Note on Patches/Pull Requests
70
78
 
71
79
  * Fork the project.
@@ -79,4 +87,4 @@ Or, read the code hosted on *github.com*: [Docile Code](https://github.com/ms-at
79
87
 
80
88
  ## Copyright
81
89
 
82
- Copyright (c) 2011 Marc Siegel. See LICENSE for details.
90
+ Copyright (c) 2012 Marc Siegel. See LICENSE for details.
data/Rakefile CHANGED
@@ -1,11 +1,20 @@
1
1
  require "bundler/gem_tasks"
2
- require "github/markup"
3
- require "redcarpet"
4
- require "yard"
5
- require "yard/rake/yardoc_task"
6
-
7
- YARD::Rake::YardocTask.new do |t|
8
- OTHER_PATHS = %w()
9
- t.files = ['lib/**/*.rb', OTHER_PATHS]
10
- t.options = %w(--markup-provider=redcarpet --markup=markdown)
2
+ require "rspec/core/rake_task"
3
+
4
+ # Don't require doc generation gems on Travis
5
+ if ENV['CI'] != 'true'
6
+ require "github/markup"
7
+ require "redcarpet"
8
+ require "yard"
9
+ require "yard/rake/yardoc_task"
10
+
11
+ YARD::Rake::YardocTask.new do |t|
12
+ OTHER_PATHS = %w()
13
+ t.files = ['lib/**/*.rb', OTHER_PATHS]
14
+ t.options = %w(--markup-provider=redcarpet --markup=markdown --main=README.md)
15
+ end
11
16
  end
17
+
18
+ RSpec::Core::RakeTask.new
19
+
20
+ task :default => [:spec]
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Docile::VERSION
8
8
  s.authors = ["Marc Siegel"]
9
9
  s.email = ["msiegel@usainnov.com"]
10
- s.homepage = "http://docile.github.com"
10
+ s.homepage = "http://ms-ati.github.com/docile/"
11
11
  s.summary = "Docile keeps your Ruby DSL's tame and well-behaved"
12
12
  s.description = "Docile turns any Ruby object into a DSL. Especially useful with the Builder pattern."
13
13
 
@@ -18,7 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_development_dependency "rspec", "~> 2.7.0"
21
+ # Running rspec tests from rake
22
+ s.add_development_dependency "rake", "~> 0.9.2"
23
+ s.add_development_dependency "rspec", "~> 2.11.0"
22
24
 
23
25
  # Github flavored markdown in YARD documentation
24
26
  # http://blog.nikosd.com/2011/11/github-flavored-markdown-in-yard.html
@@ -14,9 +14,9 @@ module Docile
14
14
  # end
15
15
  # #=> [1, 3]
16
16
  #
17
- # @param dsl [Object] an object whose methods represent a DSL
18
- # @param block [Proc] a block to execute in the DSL context
19
- # @return [Object] the dsl object, after execution of the block
17
+ # @param dsl [Object] an object whose methods represent a DSL
18
+ # @param block [Proc] a block to execute in the DSL context
19
+ # @return [Object] the dsl object, after execution of the block
20
20
  def dsl_eval(dsl, &block)
21
21
  block_context = eval("self", block.binding)
22
22
  proxy_context = FallbackContextProxy.new(dsl, block_context)
@@ -30,7 +30,8 @@ module Docile
30
30
 
31
31
  # Special case to allow proxy instance variables
32
32
  def instance_variables
33
- super - NON_PROXIED_INSTANCE_VARIABLES.to_a
33
+ # Ruby 1.8.x returns string names, convert to symbols
34
+ super.map(&:to_sym) - NON_PROXIED_INSTANCE_VARIABLES.to_a
34
35
  end
35
36
 
36
37
  def method_missing(method, *args, &block)
@@ -1,3 +1,3 @@
1
1
  module Docile
2
- VERSION = "0.9.2"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -77,6 +77,7 @@ describe Docile do
77
77
  it "should find method of outer dsl in preference to block context" do
78
78
  def a; 'not a'; end
79
79
  outer { a.should == 'a' }
80
+ outer { inner { a.should == 'a' } }
80
81
  end
81
82
  end
82
83
 
@@ -97,7 +98,7 @@ describe Docile do
97
98
  @iv1 = 'iv1'; outer { @iv1.should == 'iv1' }
98
99
  end
99
100
 
100
- it "should write instance variable assigned in block into outer dsl scope" do
101
+ it "should proxy instance variable assignments in block in outer dsl scope back into block's context" do
101
102
  @iv1 = 'foo'; outer { @iv1 = 'bar' }; @iv1.should == 'bar'
102
103
  end
103
104
 
@@ -105,7 +106,7 @@ describe Docile do
105
106
  @iv2 = 'iv2'; outer { inner { @iv2.should == 'iv2' } }
106
107
  end
107
108
 
108
- it "should find instance variable from block definition in inner dsl scope" do
109
+ it "should proxy instance variable assignments in block in inner dsl scope back into block's context" do
109
110
  @iv2 = 'foo'; outer { inner { @iv2 = 'bar' } }; @iv2.should == 'bar'
110
111
  end
111
112
  end
metadata CHANGED
@@ -1,72 +1,106 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: docile
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
4
5
  prerelease:
5
- version: 0.9.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Marc Siegel
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-12-06 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: rspec
12
+ date: 2012-10-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.9.2
22
+ type: :development
17
23
  prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.9.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
19
33
  none: false
20
- requirements:
34
+ requirements:
21
35
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: 2.7.0
36
+ - !ruby/object:Gem::Version
37
+ version: 2.11.0
24
38
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: yard
28
39
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
30
41
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.11.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: yard
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
35
54
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: redcarpet
39
55
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
41
57
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: redcarpet
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
46
70
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: github-markup
50
71
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
52
73
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: github-markup
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
57
86
  type: :development
58
- version_requirements: *id004
59
- description: Docile turns any Ruby object into a DSL. Especially useful with the Builder pattern.
60
- email:
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Docile turns any Ruby object into a DSL. Especially useful with the Builder
95
+ pattern.
96
+ email:
61
97
  - msiegel@usainnov.com
62
98
  executables: []
63
-
64
99
  extensions: []
65
-
66
100
  extra_rdoc_files: []
67
-
68
- files:
101
+ files:
69
102
  - .gitignore
103
+ - .travis.yml
70
104
  - .yardopts
71
105
  - Gemfile
72
106
  - LICENSE
@@ -78,34 +112,31 @@ files:
78
112
  - lib/docile/version.rb
79
113
  - spec/docile_spec.rb
80
114
  - spec/spec_helper.rb
81
- homepage: http://docile.github.com
115
+ homepage: http://ms-ati.github.com/docile/
82
116
  licenses: []
83
-
84
117
  post_install_message:
85
118
  rdoc_options: []
86
-
87
- require_paths:
119
+ require_paths:
88
120
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
121
+ required_ruby_version: !ruby/object:Gem::Requirement
90
122
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
128
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
129
+ requirements:
130
+ - - ! '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
101
133
  requirements: []
102
-
103
134
  rubyforge_project: docile
104
- rubygems_version: 1.8.11
135
+ rubygems_version: 1.8.21
105
136
  signing_key:
106
137
  specification_version: 3
107
138
  summary: Docile keeps your Ruby DSL's tame and well-behaved
108
- test_files:
139
+ test_files:
109
140
  - spec/docile_spec.rb
110
141
  - spec/spec_helper.rb
111
142
  has_rdoc: