cocoon 1.0.14 → 1.0.15

Sign up to get free protection for your applications and to get access to all the features.
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