cocoon 1.0.14 → 1.0.15

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/Gemfile.lock CHANGED
@@ -1,97 +1,114 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- abstract (1.0.0)
5
- actionmailer (3.0.8)
6
- actionpack (= 3.0.8)
7
- mail (~> 2.2.19)
8
- actionpack (3.0.8)
9
- activemodel (= 3.0.8)
10
- activesupport (= 3.0.8)
11
- builder (~> 2.1.2)
12
- erubis (~> 2.6.6)
13
- i18n (~> 0.5.0)
14
- rack (~> 1.2.1)
15
- rack-mount (~> 0.6.14)
16
- rack-test (~> 0.5.7)
17
- tzinfo (~> 0.3.23)
18
- activemodel (3.0.8)
19
- activesupport (= 3.0.8)
20
- builder (~> 2.1.2)
21
- i18n (~> 0.5.0)
22
- activerecord (3.0.8)
23
- activemodel (= 3.0.8)
24
- activesupport (= 3.0.8)
25
- arel (~> 2.0.10)
26
- tzinfo (~> 0.3.23)
27
- activeresource (3.0.8)
28
- activemodel (= 3.0.8)
29
- activesupport (= 3.0.8)
30
- activesupport (3.0.8)
31
- arel (2.0.10)
32
- builder (2.1.2)
33
- diff-lcs (1.1.2)
34
- erubis (2.6.6)
35
- abstract (>= 1.0.0)
36
- generator_spec (0.8.3)
37
- rails (~> 3.0)
4
+ actionmailer (3.1.3)
5
+ actionpack (= 3.1.3)
6
+ mail (~> 2.3.0)
7
+ actionpack (3.1.3)
8
+ activemodel (= 3.1.3)
9
+ activesupport (= 3.1.3)
10
+ builder (~> 3.0.0)
11
+ erubis (~> 2.7.0)
12
+ i18n (~> 0.6)
13
+ rack (~> 1.3.5)
14
+ rack-cache (~> 1.1)
15
+ rack-mount (~> 0.8.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.0.3)
18
+ activemodel (3.1.3)
19
+ activesupport (= 3.1.3)
20
+ builder (~> 3.0.0)
21
+ i18n (~> 0.6)
22
+ activerecord (3.1.3)
23
+ activemodel (= 3.1.3)
24
+ activesupport (= 3.1.3)
25
+ arel (~> 2.2.1)
26
+ tzinfo (~> 0.3.29)
27
+ activeresource (3.1.3)
28
+ activemodel (= 3.1.3)
29
+ activesupport (= 3.1.3)
30
+ activesupport (3.1.3)
31
+ multi_json (~> 1.0)
32
+ arel (2.2.1)
33
+ builder (3.0.0)
34
+ diff-lcs (1.1.3)
35
+ erubis (2.7.0)
36
+ generator_spec (0.8.4)
37
+ rails (>= 3.0, < 4.0)
38
38
  rspec-rails
39
39
  git (1.2.5)
40
- i18n (0.5.0)
40
+ hike (1.2.1)
41
+ i18n (0.6.0)
41
42
  jeweler (1.6.4)
42
43
  bundler (~> 1.0)
43
44
  git (>= 1.2.5)
44
45
  rake
45
- json_pure (1.5.2)
46
- mail (2.2.19)
47
- activesupport (>= 2.3.6)
46
+ json (1.6.3)
47
+ json_pure (1.6.3)
48
+ mail (2.3.0)
48
49
  i18n (>= 0.4.0)
49
50
  mime-types (~> 1.16)
50
51
  treetop (~> 1.4.8)
51
- mime-types (1.16)
52
- polyglot (0.3.1)
53
- rack (1.2.3)
54
- rack-mount (0.6.14)
52
+ mime-types (1.17.2)
53
+ multi_json (1.0.4)
54
+ polyglot (0.3.3)
55
+ rack (1.3.5)
56
+ rack-cache (1.1)
57
+ rack (>= 0.4)
58
+ rack-mount (0.8.3)
55
59
  rack (>= 1.0.0)
56
- rack-test (0.5.7)
60
+ rack-ssl (1.3.2)
61
+ rack
62
+ rack-test (0.6.1)
57
63
  rack (>= 1.0)
58
- rails (3.0.8)
59
- actionmailer (= 3.0.8)
60
- actionpack (= 3.0.8)
61
- activerecord (= 3.0.8)
62
- activeresource (= 3.0.8)
63
- activesupport (= 3.0.8)
64
+ rails (3.1.3)
65
+ actionmailer (= 3.1.3)
66
+ actionpack (= 3.1.3)
67
+ activerecord (= 3.1.3)
68
+ activeresource (= 3.1.3)
69
+ activesupport (= 3.1.3)
64
70
  bundler (~> 1.0)
65
- railties (= 3.0.8)
66
- railties (3.0.8)
67
- actionpack (= 3.0.8)
68
- activesupport (= 3.0.8)
71
+ railties (= 3.1.3)
72
+ railties (3.1.3)
73
+ actionpack (= 3.1.3)
74
+ activesupport (= 3.1.3)
75
+ rack-ssl (~> 1.3.2)
69
76
  rake (>= 0.8.7)
70
- thor (~> 0.14.4)
71
- rake (0.9.2)
72
- rspec (2.6.0)
73
- rspec-core (~> 2.6.0)
74
- rspec-expectations (~> 2.6.0)
75
- rspec-mocks (~> 2.6.0)
76
- rspec-core (2.6.4)
77
- rspec-expectations (2.6.0)
77
+ rdoc (~> 3.4)
78
+ thor (~> 0.14.6)
79
+ rake (0.9.2.2)
80
+ rdoc (3.11)
81
+ json (~> 1.4)
82
+ rspec (2.7.0)
83
+ rspec-core (~> 2.7.0)
84
+ rspec-expectations (~> 2.7.0)
85
+ rspec-mocks (~> 2.7.0)
86
+ rspec-core (2.7.1)
87
+ rspec-expectations (2.7.0)
78
88
  diff-lcs (~> 1.1.2)
79
- rspec-mocks (2.6.0)
80
- rspec-rails (2.6.1)
89
+ rspec-mocks (2.7.0)
90
+ rspec-rails (2.7.0)
81
91
  actionpack (~> 3.0)
82
92
  activesupport (~> 3.0)
83
93
  railties (~> 3.0)
84
- rspec (~> 2.6.0)
85
- simplecov (0.4.2)
86
- simplecov-html (~> 0.4.4)
87
- simplecov-html (0.4.5)
88
- sqlite3 (1.3.3)
94
+ rspec (~> 2.7.0)
95
+ simplecov (0.5.4)
96
+ multi_json (~> 1.0.3)
97
+ simplecov-html (~> 0.5.3)
98
+ simplecov-html (0.5.3)
99
+ sprockets (2.0.3)
100
+ hike (~> 1.2)
101
+ rack (~> 1.0)
102
+ tilt (~> 1.1, != 1.3.0)
103
+ sqlite3 (1.3.5)
89
104
  sqlite3-ruby (1.3.3)
90
105
  sqlite3 (>= 1.3.3)
91
106
  thor (0.14.6)
92
- treetop (1.4.9)
107
+ tilt (1.3.3)
108
+ treetop (1.4.10)
109
+ polyglot
93
110
  polyglot (>= 0.3.1)
94
- tzinfo (0.3.28)
111
+ tzinfo (0.3.31)
95
112
 
96
113
  PLATFORMS
97
114
  ruby
data/History.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Change History / Release Notes
2
2
 
3
+ ## Version 1.0.15
4
+
5
+ * added `data-association-insertion-method` that gives more control over where to insert the new nested fields.
6
+ It takes a jquery method as parameter that inserts the new data. `before`, `after`, `append`, `prepend`, etc. Default: `before`.
7
+ * `data-association-insertion-position` is still available and acts as an alias. Probably this will be deprecated in the future.
8
+
9
+
3
10
  ## Version 1.0.14
4
11
 
5
12
  * When playing with `simple_form` and `twitter-bootstrap`, I noticed it is crucial that I call the correct nested-fields function.
@@ -29,6 +36,7 @@ If you are using rails < 3.1, you should run
29
36
 
30
37
  to install the new `cocoon.js` to your `public/javascripts` folder.
31
38
 
39
+
32
40
  ## Version 1.0.11
33
41
 
34
42
 
data/README.markdown CHANGED
@@ -22,29 +22,39 @@ I have a sample project where I demonstrate the use of cocoon with formtastic.
22
22
 
23
23
  Inside your `Gemfile` add the following:
24
24
 
25
- gem "cocoon"
25
+ ````ruby
26
+ gem "cocoon"
27
+ ````
26
28
 
27
29
  ### Rails 3.1
28
30
 
29
31
  Add the following to `application.js` so it compiles to the
30
32
  asset_pipeline
31
33
 
32
- `//= require cocoon`
34
+ ````ruby
35
+ //= require cocoon
36
+ ````
33
37
 
34
38
  ### Rails 3.x
35
39
 
36
40
  If you are using Rails 3.0.x, you need to run the installation task (since rails 3.1 this is no longer needed):
37
41
 
38
- rails g cocoon:install
42
+ ````ruby
43
+ rails g cocoon:install
44
+ ````
39
45
 
40
46
  This will install the needed javascript file.
41
47
  Inside your `application.html.haml` you will need to add below the default javascripts:
42
48
 
43
- = javascript_include_tag :cocoon
49
+ ````haml
50
+ = javascript_include_tag :cocoon
51
+ ````
44
52
 
45
53
  or using erb, you write
46
54
 
47
- <%= javascript_include_tag :cocoon %>
55
+ ````ruby
56
+ <%= javascript_include_tag :cocoon %>
57
+ ````
48
58
 
49
59
  That is all you need to do to start using it!
50
60
 
@@ -52,22 +62,28 @@ That is all you need to do to start using it!
52
62
 
53
63
  Suppose you have a model `Project`:
54
64
 
55
- rails g scaffold Project name:string description:string
65
+ ````ruby
66
+ rails g scaffold Project name:string description:string
67
+ ````
56
68
 
57
69
  and a project has many `tasks`:
58
70
 
59
- rails g model Task description:string done:boolean project_id:integer
71
+ ````ruby
72
+ rails g model Task description:string done:boolean project_id:integer
73
+ ````
60
74
 
61
75
  Edit the models to code the relation:
62
76
 
63
- class Project < ActiveRecord::Base
64
- has_many :tasks
65
- accepts_nested_attributes_for :tasks
66
- end
77
+ ````ruby
78
+ class Project < ActiveRecord::Base
79
+ has_many :tasks
80
+ accepts_nested_attributes_for :tasks, :reject_if => :all_blank, :allow_destroy => true
81
+ end
67
82
 
68
- class Task < ActiveRecord::Base
69
- belongs_to :project
70
- end
83
+ class Task < ActiveRecord::Base
84
+ belongs_to :project
85
+ end
86
+ ````
71
87
 
72
88
  What we want to achieve is to get a form where we can add and remove the tasks dynamically.
73
89
  What we need for this, is that the fields for a new/existing `task` are defined in a partial
@@ -79,25 +95,29 @@ We will show the sample usage with the different possible form-builders.
79
95
 
80
96
  Inside our `projects/_form` partial we then write:
81
97
 
82
- - f.inputs do
83
- = f.input :name
84
- = f.input :description
85
- %h3 Tasks
86
- #tasks
87
- = f.semantic_fields_for :tasks do |task|
88
- = render 'task_fields', :f => task
89
- .links
90
- = link_to_add_association 'add task', f, :tasks
91
- -f.buttons do
92
- = f.submit 'Save'
98
+ ````haml
99
+ - f.inputs do
100
+ = f.input :name
101
+ = f.input :description
102
+ %h3 Tasks
103
+ #tasks
104
+ = f.semantic_fields_for :tasks do |task|
105
+ = render 'task_fields', :f => task
106
+ .links
107
+ = link_to_add_association 'add task', f, :tasks
108
+ -f.buttons do
109
+ = f.submit 'Save'
110
+ ````
93
111
 
94
112
  and inside the `_task_fields` partial we write:
95
113
 
96
- .nested-fields
97
- = f.inputs do
98
- = f.input :description
99
- = f.input :done, :as => :boolean
100
- = link_to_remove_association "remove task", f
114
+ ````haml
115
+ .nested-fields
116
+ = f.inputs do
117
+ = f.input :description
118
+ = f.input :done, :as => :boolean
119
+ = link_to_remove_association "remove task", f
120
+ ````
101
121
 
102
122
  That is all there is to it!
103
123
 
@@ -129,9 +149,11 @@ It takes four parameters:
129
149
  - f: referring to the containing form-object
130
150
  - association: the name of the association (plural) of which a new instance needs to be added (symbol or string).
131
151
  - html_options: extra html-options (see `link_to`)
132
- There are two extra options that allow to conrol the placement of the new link-data:
152
+ There are three extra options that allow to control the placement of the new link-data:
133
153
  - `data-association-insertion-node` : the jquery selector of the node
134
- - `data-association-insertion-position` : insert the new data `before` or `after` the given node.
154
+ - `data-association-insertion-method` : jquery method that inserts the new data. `before`, `after`, `append`, `prepend`, etc. Default: `before`
155
+ - `data-association-insertion-position` : old method specifying where to insert new data.
156
+ - this setting still works but `data-association-insertion-method` takes precedence. may be removed in a future version.
135
157
 
136
158
  Optionally you could also leave out the name and supply a block that is captured to give the name (if you want to do something more complicated).
137
159
 
@@ -153,55 +175,61 @@ Inside the `html_options` you can add an option `:render_options`, and the conta
153
175
  form. E.g. especially when using `twitter-bootstrap` and `simple_form` together, the `simple_fields_for` needs the option `:wrapper => 'inline'` which can
154
176
  be handed down as follows:
155
177
 
156
- = link_to_add_association 'add something', f, :something, :render_options => {:wrapper => 'inline' }
157
-
178
+ ````haml
179
+ = link_to_add_association 'add something', f, :something, :render_options => {:wrapper => 'inline' }
180
+ ````
158
181
 
159
182
  ### Callbacks (upon insert and remove of items)
160
183
 
161
- There is an option to add a callback on insertion or removal. If in your view you have the following snippet to select an `onwer`
184
+ There is an option to add a callback on insertion or removal. If in your view you have the following snippet to select an `owner`
162
185
  (we use slim for demonstration purposes)
163
186
 
164
- #owner
165
- #owner_from_list
166
- = f.association :owner, :collection => Person.all(:order => 'name'), :prompt => 'Choose an existing owner'
167
- = link_to_add_association 'add a new person as owner', f, :owner
187
+ ````haml
188
+ #owner
189
+ #owner_from_list
190
+ = f.association :owner, :collection => Person.all(:order => 'name'), :prompt => 'Choose an existing owner'
191
+ = link_to_add_association 'add a new person as owner', f, :owner
192
+ ````
168
193
 
169
194
  This view part will either let you select an owner from the list of persons, or show the fields to add a new person as owner.
170
195
 
171
196
 
172
197
  The callbacks can be added as follows:
173
198
 
174
- $(document).ready(function() {
175
- $('#owner').bind('insertion-callback',
176
- function() {
177
- $("#owner_from_list").hide();
178
- $("#owner a.add_fields").hide();
179
- });
180
- $('#owner').bind("removal-callback",
181
- function() {
182
- $("#owner_from_list").show();
183
- $("#owner a.add_fields").show();
184
- });
185
- });
199
+ ````javascript
200
+ $(document).ready(function() {
201
+ $('#owner').bind('insertion-callback',
202
+ function() {
203
+ $("#owner_from_list").hide();
204
+ $("#owner a.add_fields").hide();
205
+ });
206
+ $('#owner').bind("removal-callback",
207
+ function() {
208
+ $("#owner_from_list").show();
209
+ $("#owner a.add_fields").show();
210
+ });
211
+ });
212
+ ````
186
213
 
187
214
  Do note that for the callbacks to work there has to be a surrounding container (div), where you can bind the callbacks to.
188
215
 
189
216
  ### Control the Insertion behaviour
190
217
 
191
- The default insertion location is at the back of the current container. But we have added two `data`-attributes that are read to determine the insertion-node and -location.
218
+ The default insertion location is at the back of the current container. But we have added two `data`-attributes that are read to determine the insertion-node and -method.
192
219
 
193
220
  For example:
194
221
 
195
- $(document).ready(function() {
196
- $("#owner a.add_fields").
197
- data("association-insertion-position", 'before').
198
- data("association-insertion-node", 'this');
199
- });
200
-
222
+ ````javascript
223
+ $(document).ready(function() {
224
+ $("#owner a.add_fields").
225
+ data("association-insertion-method", 'before').
226
+ data("association-insertion-node", 'this');
227
+ });
228
+ ````
201
229
 
202
230
  The `association-insertion-node` will determine where to add it. You can choose any selector here, or specify this (default it is the parent-container).
203
231
 
204
- The `association-insertion-position` will determine where to add it in relation with the node. Only two options: `before` or `after`.
232
+ The `association-insertion-method` will determine where to add it in relation with the node. Any jQuery DOM Manipulation method can be set but we recommend sticking to any of the following: `before`, `after`, `append`, `prepend`. It is unknown at this time what others would do.
205
233
 
206
234
 
207
235
  ### Partial
@@ -224,7 +252,7 @@ There is no limit to the amount of nesting, though.
224
252
 
225
253
  ## Todo
226
254
 
227
- * add more sample relations: has_many :through, belongs_to, ...
255
+ * add more sample relations: `has_many :through`, `belongs_to`, ...
228
256
  * improve the tests (test the javascript too)(if anybody wants to lend a hand ...?)
229
257
 
230
258
  ## Copyright
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.14
1
+ 1.0.15
@@ -11,56 +11,58 @@
11
11
 
12
12
  $('.add_fields').live('click', function(e) {
13
13
  e.preventDefault();
14
- var assoc = $(this).data('association'),
15
- assocs = $(this).data('associations'),
16
- content = $(this).data('template'),
17
- insertionPosition = $(this).data('association-insertion-position'),
18
- insertionNode = $(this).data('association-insertion-node'),
19
- insertionCallback = $(this).data('insertion-callback'),
20
- removalCallback = $(this).data('removal-callback'),
21
- regexp_braced = new RegExp('\\[new_' + assoc + '\\]', 'g'),
22
- regexp_underscord = new RegExp('_new_' + assoc + '_', 'g'),
23
- new_id = new Date().getTime(),
24
- newcontent_braced = '[' + new_id + ']',
14
+ var $this = $(this),
15
+ assoc = $this.data('association'),
16
+ assocs = $this.data('associations'),
17
+ content = $this.data('template'),
18
+ insertionMethod = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before';
19
+ insertionNode = $this.data('association-insertion-node'),
20
+ insertionCallback = $this.data('insertion-callback'),
21
+ removalCallback = $this.data('removal-callback'),
22
+ regexp_braced = new RegExp('\\[new_' + assoc + '\\]', 'g'),
23
+ regexp_underscord = new RegExp('_new_' + assoc + '_', 'g'),
24
+ new_id = new Date().getTime(),
25
+ newcontent_braced = '[' + new_id + ']',
25
26
  newcontent_underscord = '_' + new_id + '_',
26
- new_content = content.replace(regexp_braced, '[' + new_id + ']');
27
+ new_content = content.replace(regexp_braced, '[' + new_id + ']');
27
28
 
28
29
  if (new_content == content) {
29
- regexp_braced = new RegExp('\\[new_' + assocs + '\\]', 'g');
30
+ regexp_braced = new RegExp('\\[new_' + assocs + '\\]', 'g');
30
31
  regexp_underscord = new RegExp('_new_' + assocs + '_', 'g');
31
- new_content = content.replace(regexp_braced, '[' + new_id + ']');
32
+ new_content = content.replace(regexp_braced, '[' + new_id + ']');
32
33
  }
33
34
 
34
35
  new_content = new_content.replace(regexp_underscord, newcontent_underscord);
35
36
 
36
37
  if (insertionNode){
37
- insertionNode = insertionNode == "this" ? $(this) : $(insertionNode);
38
+ insertionNode = insertionNode == "this" ? $this : $(insertionNode);
38
39
  } else {
39
- insertionNode = $(this).parent();
40
+ insertionNode = $this.parent();
40
41
  }
41
42
 
42
43
  var contentNode = $(new_content);
43
44
 
44
- if (insertionPosition == 'after'){
45
- insertionNode.after(contentNode);
46
- } else {
47
- insertionNode.before(contentNode);
48
- }
45
+ // allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)
46
+ // to be called on the node. allows the insertion node to be the parent of the inserted
47
+ // code and doesn't force it to be a sibling like after/before does. default: 'before'
48
+ insertionNode[insertionMethod](contentNode);
49
49
 
50
- $(this).parent().trigger('insertion-callback');
50
+ $this.parent().trigger('insertion-callback');
51
51
  });
52
52
 
53
53
  $('.remove_fields.dynamic').live('click', function(e) {
54
- trigger_removal_callback($(this));
54
+ var $this = $(this);
55
+ trigger_removal_callback($this);
55
56
  e.preventDefault();
56
- $(this).closest(".nested-fields").remove();
57
+ $this.closest(".nested-fields").remove();
57
58
  });
58
59
 
59
60
  $('.remove_fields.existing').live('click', function(e) {
60
- trigger_removal_callback($(this));
61
+ var $this = $(this);
62
+ trigger_removal_callback($this);
61
63
  e.preventDefault();
62
- $(this).prev("input[type=hidden]").val("1");
63
- $(this).closest(".nested-fields").hide();
64
+ $this.prev("input[type=hidden]").val("1");
65
+ $this.closest(".nested-fields").hide();
64
66
  });
65
67
 
66
68
  })(jQuery);
data/cocoon.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cocoon}
8
- s.version = "1.0.14"
8
+ s.version = "1.0.15"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Nathan Van der Auwera"]
12
- s.date = %q{2011-10-22}
12
+ s.date = %q{2011-12-08}
13
13
  s.description = %q{Unobtrusive nested forms handling, using jQuery. Use this and discover cocoon-heaven.}
14
14
  s.email = %q{nathan@dixis.com}
15
15
  s.extra_rdoc_files = [
@@ -1,4 +1,7 @@
1
1
  require 'spec_helper'
2
+ require 'rspec/mocks'
3
+ require 'rspec/rails/mocks'
4
+
2
5
  require 'generator_spec/test_case'
3
6
  require 'generators/cocoon/install/install_generator'
4
7
 
@@ -9,18 +12,18 @@ describe Cocoon::Generators::InstallGenerator do
9
12
 
10
13
  context "in rails 3.0" do
11
14
  context "with no arguments" do
12
- before(:all) do
15
+ before(:each) do
13
16
  ::Rails.stub(:version) { '3.0.8' }
14
17
  prepare_destination
15
18
  run_generator
16
19
  end
17
20
 
18
21
  it "stubs the version correctly" do
19
- Rails.version[0..2].should == "3.0"
22
+ ::Rails.version[0..2].should == "3.0"
20
23
  end
21
24
 
22
25
  it "stubs the version correctly" do
23
- test_version = (Rails.version[0..2].to_f >= 3.1)
26
+ test_version = (::Rails.version[0..2].to_f >= 3.1)
24
27
  test_version.should be_false
25
28
  end
26
29
 
@@ -32,7 +35,7 @@ describe Cocoon::Generators::InstallGenerator do
32
35
 
33
36
  context "in rails 3.1" do
34
37
  context "with no arguments" do
35
- before(:all) do
38
+ before(:each) do
36
39
  ::Rails.stub(:version) { '3.1.0' }
37
40
  prepare_destination
38
41
  run_generator
data/spec/spec_helper.rb CHANGED
@@ -9,7 +9,6 @@ end
9
9
 
10
10
 
11
11
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
12
- require "rails/test_help"
13
12
  require "rspec/rails"
14
13
 
15
14
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 14
10
- version: 1.0.14
9
+ - 15
10
+ version: 1.0.15
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nathan Van der Auwera
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-22 00:00:00 +02:00
18
+ date: 2011-12-08 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency