nestive 0.1.0

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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ .rvmrc
2
+ doc
3
+ .yardoc
4
+ pkg
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ --no-private
2
+ --markup markdown
3
+ --title "Nestive — Nested Layouts Plugin for Rails"
4
+ --main "README.md"
5
+ --files MIT-LICENSE
6
+ --no-highlight
7
+ app/**/*.rb
8
+ lib/**/*.rb
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify dependencies in nestive.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,78 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ nestive (0.0.1.pre)
5
+ rails (~> 3.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ abstract (1.0.0)
11
+ actionmailer (3.0.7)
12
+ actionpack (= 3.0.7)
13
+ mail (~> 2.2.15)
14
+ actionpack (3.0.7)
15
+ activemodel (= 3.0.7)
16
+ activesupport (= 3.0.7)
17
+ builder (~> 2.1.2)
18
+ erubis (~> 2.6.6)
19
+ i18n (~> 0.5.0)
20
+ rack (~> 1.2.1)
21
+ rack-mount (~> 0.6.14)
22
+ rack-test (~> 0.5.7)
23
+ tzinfo (~> 0.3.23)
24
+ activemodel (3.0.7)
25
+ activesupport (= 3.0.7)
26
+ builder (~> 2.1.2)
27
+ i18n (~> 0.5.0)
28
+ activerecord (3.0.7)
29
+ activemodel (= 3.0.7)
30
+ activesupport (= 3.0.7)
31
+ arel (~> 2.0.2)
32
+ tzinfo (~> 0.3.23)
33
+ activeresource (3.0.7)
34
+ activemodel (= 3.0.7)
35
+ activesupport (= 3.0.7)
36
+ activesupport (3.0.7)
37
+ arel (2.0.10)
38
+ builder (2.1.2)
39
+ erubis (2.6.6)
40
+ abstract (>= 1.0.0)
41
+ i18n (0.5.0)
42
+ mail (2.2.19)
43
+ activesupport (>= 2.3.6)
44
+ i18n (>= 0.4.0)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.16)
48
+ polyglot (0.3.1)
49
+ rack (1.2.3)
50
+ rack-mount (0.6.14)
51
+ rack (>= 1.0.0)
52
+ rack-test (0.5.7)
53
+ rack (>= 1.0)
54
+ rails (3.0.7)
55
+ actionmailer (= 3.0.7)
56
+ actionpack (= 3.0.7)
57
+ activerecord (= 3.0.7)
58
+ activeresource (= 3.0.7)
59
+ activesupport (= 3.0.7)
60
+ bundler (~> 1.0)
61
+ railties (= 3.0.7)
62
+ railties (3.0.7)
63
+ actionpack (= 3.0.7)
64
+ activesupport (= 3.0.7)
65
+ rake (>= 0.8.7)
66
+ thor (~> 0.14.4)
67
+ rake (0.9.0)
68
+ thor (0.14.6)
69
+ treetop (1.4.9)
70
+ polyglot (>= 0.3.1)
71
+ tzinfo (0.3.27)
72
+
73
+ PLATFORMS
74
+ ruby
75
+
76
+ DEPENDENCIES
77
+ nestive!
78
+ rails (~> 3.0)
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Justin French
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # Nestive, A Nested Inheritable Layouts Plugin for Rails
2
+
3
+ **Note: This is ridiculously alpha proof-of-concept seeking feedback. Things will change.**
4
+
5
+ Nestive adds powerful layout and view helpers to your Rails app. It's similar to the nested layout technique [already documented in the Rails guides](http://guides.rubyonrails.org/layouts_and_rendering.html#using-nested-layouts) and found in many other nested layout plugins (a technique using `content_for` and rendering the parent layout at the end of the child layout). There's a bunch of problems with this technique, including:
6
+
7
+ * you can only *append* content to the content buffer with `content_for` (you can't prepend to content, you can't replace it)
8
+ * when combined with this nested layout technique, `content_for` actually *prepends* new content to the buffer, because each parent layout is rendered *after* it's child
9
+
10
+ Nestive is *better* because it addresses these problems.
11
+
12
+ ## Just five methods (so far) – `area`, `extend`, `append`, `prepend`, `replace`.
13
+
14
+ ### Declaring an area of content in your parent layout with `area`:
15
+
16
+ The `area` helper is a lot like Rails' own `<%= yield :foo %>`, and is used in layouts to define and render a chunk of content in your layout:
17
+
18
+ <%= area :sidebar %>
19
+
20
+ Unlike `yield`, `area` will allow your parent layouts to add content to the area at the same time using either a String or a block:
21
+
22
+ <%= area :sidebar, "Some Content Here" %>
23
+
24
+ <%= area :sidebar do %>
25
+ Some Content Here
26
+ <% end %>
27
+
28
+ It's important to note that this isn't *default* content, it *is* the content (unless a child changes it).
29
+
30
+ ### Extending a layout in a child layout (or view):
31
+
32
+ Any layout (or view) can declare that it wants to inherit from and extend a parent layout, in this case we're extending `app/views/layouts/application.html.erb`:
33
+
34
+ <%= extends :application do %>
35
+ ...
36
+ <% end %>
37
+
38
+ You can nest many levels deep:
39
+
40
+ # app/views/posts/index.html.erb
41
+ <%= extends :blog do %>
42
+ ...
43
+ <% end %>
44
+
45
+ # app/views/layouts/blog.html.erb
46
+ <%= extends :public do %>
47
+ ...
48
+ <% end %>
49
+
50
+ # app/views/layouts/public.html.erb
51
+ <%= extends :application do %>
52
+ ...
53
+ <% end %>
54
+
55
+ ### Appending content to an area:
56
+
57
+ The implementation details are quite different, but the `append` helper works much like Rails' built-in `content_for`. It will work with either a String or block, adding the new content onto the end of any content previously provided by parent layouts:
58
+
59
+ <%= extends :application do %>
60
+ <%= append :sidebar, "More content." %>
61
+ <%= append :sidebar do %>
62
+ More content.
63
+ <% end %>
64
+ <% end %>
65
+
66
+ ### Prepending content to an area:
67
+
68
+ Exactly what you think it is. The reverse of `append` (duh), adding the new content at the start of any content previously provided by parent layouts:
69
+
70
+ <%= extends :application do %>
71
+ <%= prepend :sidebar, "Content." %>
72
+ <%= prepend :sidebar do %>
73
+ Content.
74
+ <% end %>
75
+ <% end %>
76
+
77
+ ### Replacing content
78
+
79
+ You can also replace any content provided by parent layouts:
80
+
81
+ <%= extends :application do %>
82
+ <%= replace :sidebar, "New content." %>
83
+ <%= replace :sidebar do %>
84
+ New content.
85
+ <% end %>
86
+ <% end %>
87
+
88
+
89
+ ## The token blog example
90
+
91
+ Set-up a global layout defining some content areas. Note that there is no `<% yield %>` here.
92
+
93
+ # app/views/layouts/application.html.erb
94
+ <!DOCTYPE html>
95
+ <html>
96
+ <head>
97
+ <meta charset="utf-8">
98
+ <title><%= area :title %> JustinFrench.com</title>
99
+ <meta name="description" content="<%= area :description, "This is my website." %>">
100
+ <meta name="keywords" content="<%= area :keywords, "justin, french, ruby, design" %>">
101
+ </head>
102
+ <body>
103
+ <div id="wrapper">
104
+ <div id="content">
105
+ <%= area :content do %>
106
+ <p>Default content goes here.</p>
107
+ <% end %>
108
+ </div>
109
+ <div id="sidebar">
110
+ <%= area :sidebar do %>
111
+ <h2>About Me</h2>
112
+ <p>...</p>
113
+ <% end %>
114
+ </div>
115
+ </div>
116
+ </body>
117
+ </html>
118
+
119
+ Next, we set-up a `blog` layout that extends `application`, replacing, appending & prepending content to the areas we defined earlier.
120
+
121
+ # app/views/layouts/blog.html.erb
122
+ <%= extends :application do %>
123
+ <% replace :title, "My Blog – " %>
124
+ <% replace :description, "Justin French blogs here on Ruby, Rails, Design, Formtastic, etc" %>
125
+ <% prepend :keywords, "blog, weblog, design links, ruby links, formtastic release notes, " %>
126
+ <% end %>
127
+
128
+ Now our blog index view can extend `blog` and fill in the areas with content specific to the index action.
129
+
130
+ # app/views/posts/index.html.erb
131
+ <%= extends :blog do %>
132
+ <% replace :content do %>
133
+ <h1>My Blog</h1>
134
+ <% render @articles %>
135
+ <% end %>
136
+
137
+ <% append :content do %>
138
+ <h2>Blog Roll</h2>
139
+ <% render @links %>
140
+ <% end %>
141
+ <% end %>
142
+
143
+ We also need to instruct the `PostsController` not to wrap the view in a layout of it's own (default Rails behavior), which can be done on an individual action:
144
+
145
+ # app/controllers/posts_controller.rb
146
+ class PostsController < ApplicationController
147
+ def index
148
+ render :layout => nil
149
+ end
150
+ end
151
+
152
+ Or for an entire controller:
153
+
154
+ # app/controllers/posts_controller.rb
155
+ class PostsController < ApplicationController
156
+ layout nil
157
+ end
158
+
159
+ Or for every controller:
160
+
161
+ # app/controllers/application_controller.rb
162
+ class ApplicationController < ActionController::Base
163
+ layout nil
164
+ end
165
+
166
+ We'll find a way to make this easier or a bit more obvious in a future version.
167
+
168
+
169
+ ## Installation
170
+
171
+ * add `gem 'nestive', '~> 0.1'` to your gemfile
172
+ * run `bundle`
173
+ * add `layout nil` to ApplicationController or the specific controllers you want to use Nestive on (see above)
174
+
175
+
176
+ ## TODO
177
+
178
+ * Figure out how to test it
179
+ * Actually use it in an app
180
+ * You know, everything!
181
+
182
+
183
+ ## Compatibility
184
+
185
+ Only testing it with Rails 3.1 RCs right now, but it should work with Rails 2 & 3. The dependency is set to ~> 3.0 right now, will change to 2.x when someone can test it works.
186
+
187
+ *Nestive doesn't monkey patch or fiddle with any default behaviors in Rails.* Use it when you want to, don't when you don't.
188
+
189
+ ## You can help with...
190
+
191
+ * feedback
192
+ * reporting issues
193
+ * fixing issues with pull requests
194
+ * performance testing
195
+
196
+ ## Twitter
197
+
198
+ * [@nestivegem](http://twitter.com/nestivegem)
199
+ * [@justinfrench](http://twitter.com/justinfrench)
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env rake
2
+ require 'rake/testtask'
3
+ require 'rdoc/task'
4
+
5
+ require 'bundler'
6
+ Bundler::GemHelper.install_tasks
7
+
8
+
9
+ desc 'Default: run unit tests.'
10
+ task :default => :test
11
+
12
+ desc 'Test the nestive plugin.'
13
+ Rake::TestTask.new(:test) do |t|
14
+ t.libs << 'lib'
15
+ t.libs << 'test'
16
+ t.pattern = 'test/**/*_test.rb'
17
+ t.verbose = true
18
+ end
19
+
20
+ desc 'Generate documentation for the nestive plugin.'
21
+ Rake::RDocTask.new(:rdoc) do |rdoc|
22
+ rdoc.rdoc_dir = 'rdoc'
23
+ rdoc.title = 'Nestive'
24
+ rdoc.options << '--line-numbers' << '--inline-source'
25
+ rdoc.rdoc_files.include('README')
26
+ rdoc.rdoc_files.include('lib/**/*.rb')
27
+ end
@@ -0,0 +1,232 @@
1
+ module Nestive
2
+
3
+ # The Nestive LayoutHelper provides a handful of helper methods for use in your layouts and views.
4
+ #
5
+ # See the documentation for each individual method for detailed information, but at a high level,
6
+ # your parent layouts define `area`s of content. You can define an area and optionally add content
7
+ # to it at the same time using either a String, or a block:
8
+ #
9
+ # # app/views/layouts/global.html.erb
10
+ # <html>
11
+ # <head>
12
+ # <title><%= area :title, "MySite.com" %></title>
13
+ # </head>
14
+ # <body>
15
+ # <div id="content">
16
+ # <%= area :content %>
17
+ # </div>
18
+ # <div id="sidebar">
19
+ # <%= area :sidebar do %>
20
+ # <h2>About MySite.com</h2>
21
+ # <p>...</p>
22
+ # <% end %>
23
+ # </div>
24
+ # </body>
25
+ # </html>
26
+ #
27
+ # Your child layouts (or views) inherit and modify the parent by wrapping in an `extend` block
28
+ # helper. You can then either `append`, `prepend` or `replace` the content that has previously
29
+ # been assigned to each area by parent layouts.
30
+ #
31
+ # The `append`, `prepend` or `replace` helpers are *similar* to Rails' own `content_for`, which
32
+ # accepts content for the named area with either a String or with a block). They're different to
33
+ # `content_for` because they're only used modify the content assigned to the area, not retrieve it:
34
+ #
35
+ # # app/views/layouts/admin.html.erb
36
+ # <%= extends :global do %>
37
+ # <% prepend :title, "Admin :: " %>
38
+ # <% replace :sidebar do %>
39
+ # <h2>Quick Links</h2>
40
+ # <ul>
41
+ # <li>...</li>
42
+ # </ul>
43
+ # <% end %>
44
+ # <% end %>
45
+ #
46
+ # # app/views/admin/posts/index.html.erb
47
+ # <%= extends :admin do %>
48
+ # <% prepend :title, "Posts ::" %>
49
+ # <% replace :content do %>
50
+ # Normal view stuff goes here.
51
+ # <% end %>
52
+ # <% end %>
53
+ module LayoutHelper
54
+
55
+ # Declares that the current layour (or view) is inheriting from and extending another layout.
56
+ #
57
+ # @param [Symbol] name
58
+ # The base name of the file in `layouts/` that you wish to extend (eg `:application` for `layouts/application.html.erb`)
59
+ #
60
+ # @example Extending the `application` layout to create an `admin` layout
61
+ #
62
+ # # app/views/layouts/admin.html.erb
63
+ # <%= extends :application do %>
64
+ # ...
65
+ # <% end %>
66
+ #
67
+ # @example Extending the `admin` layout in a view (you'll need to render the view with `:layout => nil`)
68
+ #
69
+ # # app/controllers/admin/posts_controller.rb
70
+ # class Admin::PostsController < ApplicationController
71
+ # # You can disable Rails' layout rendering for all actions
72
+ # layout nil
73
+ #
74
+ # # Or disable Rails' layout rendering per-controller
75
+ # def index
76
+ # render :layout => nil
77
+ # end
78
+ # end
79
+ #
80
+ # # app/views/admin/posts/index.html.erb
81
+ # <%= extends :admin do %>
82
+ # ...
83
+ # <% end %>
84
+ def extends(name, &block)
85
+ capture(&block)
86
+ render(:file => "layouts/#{name}")
87
+ end
88
+
89
+ # Defines an area of content in your layout that can be modified or replaced by child layouts
90
+ # that extend it. You can optionally add content to an area using either a String, or a block.
91
+ #
92
+ # Areas are declared in a parent layout and modified by a child layout, but since Nestive
93
+ # allows for multiple levels of inheritance, a child layout can also declare an area for it's
94
+ # children to modify.
95
+ #
96
+ # @example Define an area without adding content to it:
97
+ # <%= area :sidebar %>
98
+ #
99
+ # @example Define an area and add a String of content to it:
100
+ # <%= area :sidebar, "Some content." %>
101
+ #
102
+ # @example Define an area and add content to it with a block:
103
+ # <%= area :sidebar do %>
104
+ # Some content.
105
+ # <% end %>
106
+ #
107
+ # @example Define an area in a child layout:
108
+ # <%= extends :global do %>
109
+ # <%= area :sidebar do %>
110
+ # Some content.
111
+ # <% end %>
112
+ # <% end %>
113
+ #
114
+ # @param [Symbol] name
115
+ # A unique name to identify this area of content.
116
+ #
117
+ # @param [String] content
118
+ # An optional String of content to add to the area as you declare it.
119
+ def area(name, content=nil, &block)
120
+ content = capture(&block) if block_given?
121
+ append(name, content)
122
+ render_area(name)
123
+ end
124
+
125
+ def block(name, content=nil, &block)
126
+ ActiveSupport::Deprecation.warn("block() is deprecated and will be removed very soon, please use area() instead")
127
+ area(name, content, &block)
128
+ end
129
+
130
+ # Appends content to an area previously defined or modified in parent layout(s). You can provide
131
+ # the content using either a String, or a block.
132
+ #
133
+ # @example Appending content with a String
134
+ # <% append :sidebar, "Some content." %>
135
+ #
136
+ # @example Appending content with a block:
137
+ # <% append :sidebar do %>
138
+ # Some content.
139
+ # <% end %>
140
+ #
141
+ # @param [Symbol] name
142
+ # A name to identify the area of content you wish to append to
143
+ #
144
+ # @param [String] content
145
+ # Optionally provide a String of content, instead of a block. A block will take precedence.
146
+ def append(name, content=nil, &block)
147
+ content = capture(&block) if block_given?
148
+ add_instruction_to_area(name, :push, content)
149
+ end
150
+
151
+ # Prepends content to an area previously declared or modified in parent layout(s). You can
152
+ # provide the content using either a String, or a block.
153
+ #
154
+ # @example Prepending content with a String
155
+ # <% prepend :sidebar, "Some content." %>
156
+ #
157
+ # @example Prepending content with a block:
158
+ # <% prepend :sidebar do %>
159
+ # Some content.
160
+ # <% end %>
161
+ #
162
+ # @param [Symbol] name
163
+ # A name to identify the area of content you wish to prepend to
164
+ #
165
+ # @param [String] content
166
+ # Optionally provide a String of content, instead of a block. A block will take precedence.
167
+ def prepend(name, content=nil, &block)
168
+ content = capture(&block) if block_given?
169
+ add_instruction_to_area(name, :unshift, content)
170
+ end
171
+
172
+ # Replaces the content of an area previously declared or modified in parent layout(s). You can
173
+ # provide the content using either a String, or a block.
174
+ #
175
+ # @example Prepending content with a String
176
+ # <% replace :sidebar, "New content." %>
177
+ #
178
+ # @example Prepending content with a block:
179
+ # <% replace :sidebar do %>
180
+ # New content.
181
+ # <% end %>
182
+ #
183
+ # @param [Symbol] name
184
+ # A name to identify the area of content you wish to replace
185
+ #
186
+ # @param [String] content
187
+ # Optionally provide a String of content, instead of a block. A block will take precedence.
188
+ def replace(name, content=nil, &block)
189
+ content = capture(&block) if block_given?
190
+ add_instruction_to_area(name, :replace, [content])
191
+ end
192
+
193
+ private
194
+
195
+ # We record the instructions (declaring, appending, prepending and replacing) for an area of
196
+ # content into an array that we can later retrieve and replay. Instructions are stored in an
197
+ # instance variable Hash `@_area_for`, with each key representing an area name, and each value
198
+ # an Array of instructions. Each instruction is a two element array containing a instruction
199
+ # method (eg `:push`, `:unshift`, `:replace`) and a value (content String).
200
+ #
201
+ # @_area_for[:sidebar] # => [ [:push,"World"], [:unshift,"Hello"] ]
202
+ #
203
+ # Due to the way we extend layouts (render the parent layout after the child), the instructions
204
+ # are captured in reverse order. `render_area` reversed them and plays them back at rendering
205
+ # time.
206
+ #
207
+ # @example
208
+ # add_instruction_to_area(:sidebar, :push, "More content.")
209
+ def add_instruction_to_area(name, instruction, value)
210
+ @_area_for ||= {}
211
+ @_area_for[name] ||= []
212
+ @_area_for[name] << [instruction, value]
213
+ end
214
+
215
+ # Take the instructions we've gathered for the area and replay them one after the other on
216
+ # an empty array. These instructions will push, unshift or replace items into our output array,
217
+ # which we then join and mark as html_safe.
218
+ #
219
+ # These instructions are reversed and replayed when we render the block (rather than as they
220
+ # happen) due to the way they are gathered by the layout extension process (in reverse).
221
+ #
222
+ # @todo is `html_safe` "safe" here?
223
+ def render_area(name)
224
+ output = []
225
+ (@_area_for[name] || []).reverse.each do |i|
226
+ output.send(i.first, i.last)
227
+ end
228
+ output.join.html_safe
229
+ end
230
+
231
+ end
232
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ # Include hook code here
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
data/lib/nestive.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'nestive/engine'
2
+
3
+ module Nestive
4
+ end
@@ -0,0 +1,6 @@
1
+ if defined?(Rails) && Rails.version.to_i >= 3
2
+ module Nestive
3
+ class Engine < Rails::Engine
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,11 @@
1
+ # encoding: utf-8
2
+
3
+ module Nestive
4
+ class Railtie < Rails::Railtie
5
+ initializer 'nestive.initialize' do
6
+ ActiveSupport.on_load(:action_view) do
7
+ include Nestive::LayoutHelper
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module Nestive
2
+ VERSION = "0.1.0"
3
+ end
data/nestive.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "nestive/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "nestive"
7
+ s.version = Nestive::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Justin French"]
10
+ s.email = ["justin@indent.com.au"]
11
+ s.homepage = ""
12
+ s.summary = %q{A Rails plugin/gem for awesome nested templates and layouts}
13
+ s.description = %q{A Rails plugin/gem for awesome nested templates and layouts}
14
+
15
+ s.rubyforge_project = "nestive"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency(%q<rails>, ["~> 3.0"])
23
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class NestiveTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'active_support'
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nestive
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Justin French
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-05-30 00:00:00 +10:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ version: "3.0"
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description: A Rails plugin/gem for awesome nested templates and layouts
37
+ email:
38
+ - justin@indent.com.au
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files: []
44
+
45
+ files:
46
+ - .gitignore
47
+ - .yardopts
48
+ - Gemfile
49
+ - Gemfile.lock
50
+ - MIT-LICENSE
51
+ - README.md
52
+ - Rakefile
53
+ - app/helpers/nestive/layout_helper.rb
54
+ - init.rb
55
+ - install.rb
56
+ - lib/nestive.rb
57
+ - lib/nestive/engine.rb
58
+ - lib/nestive/railtie.rb
59
+ - lib/nestive/version.rb
60
+ - nestive.gemspec
61
+ - test/nestive_test.rb
62
+ - test/test_helper.rb
63
+ - uninstall.rb
64
+ has_rdoc: true
65
+ homepage: ""
66
+ licenses: []
67
+
68
+ post_install_message:
69
+ rdoc_options: []
70
+
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ requirements: []
92
+
93
+ rubyforge_project: nestive
94
+ rubygems_version: 1.3.7
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: A Rails plugin/gem for awesome nested templates and layouts
98
+ test_files:
99
+ - test/nestive_test.rb
100
+ - test/test_helper.rb