with_template 0.0.6 → 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.
- checksums.yaml +7 -0
- data/.gitignore +50 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -10
- data/Gemfile.lock +107 -115
- data/README.rdoc +153 -4
- data/Rakefile +1 -23
- data/lib/with_template.rb +1 -1
- data/lib/with_template/base.rb +8 -28
- data/lib/with_template/version.rb +3 -0
- data/lib/with_template/view_additions.rb +26 -4
- data/test/base_test.rb +9 -29
- data/test/fixtures/_my_template.html.erb +0 -0
- data/test/helper.rb +2 -16
- data/test/view_additions_test.rb +124 -0
- data/with_template.gemspec +23 -68
- metadata +37 -79
- data/.ruby-gemset +0 -1
- data/VERSION +0 -1
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: eb9f1d098920eda664b0e578e87877e8484b34a0
|
|
4
|
+
data.tar.gz: 8877bee4586e2c50aac7aca15b325a782641a225
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 85f256b61861f7712929b1b168abfd9946ec4d3a1823d93431fd4864fe4f6d0678d159cb312ed60ce55fd8fce124ebef79672e31d642694a7b2b6f64ffac537d
|
|
7
|
+
data.tar.gz: a2d8e4cd17dd6e334c50090f9bffb9ecfd9bc084479a44640839c5dd67b84e931be094de718d632f3ec9032d474f303e43a1de4e96e3690bdc4ed74a42c9e97a
|
data/.gitignore
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# rcov generated
|
|
2
|
+
coverage
|
|
3
|
+
coverage.data
|
|
4
|
+
|
|
5
|
+
# rdoc generated
|
|
6
|
+
rdoc
|
|
7
|
+
|
|
8
|
+
# yard generated
|
|
9
|
+
doc
|
|
10
|
+
.yardoc
|
|
11
|
+
|
|
12
|
+
# bundler
|
|
13
|
+
.bundle
|
|
14
|
+
|
|
15
|
+
# jeweler generated
|
|
16
|
+
pkg
|
|
17
|
+
Gemfile.lock
|
|
18
|
+
|
|
19
|
+
# Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
|
|
20
|
+
#
|
|
21
|
+
# * Create a file at ~/.gitignore
|
|
22
|
+
# * Include files you want ignored
|
|
23
|
+
# * Run: git config --global core.excludesfile ~/.gitignore
|
|
24
|
+
#
|
|
25
|
+
# After doing this, these files will be ignored in all your git projects,
|
|
26
|
+
# saving you from having to 'pollute' every project you touch with them
|
|
27
|
+
#
|
|
28
|
+
# Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
|
|
29
|
+
#
|
|
30
|
+
# For MacOS:
|
|
31
|
+
#
|
|
32
|
+
#.DS_Store
|
|
33
|
+
|
|
34
|
+
# For TextMate
|
|
35
|
+
#*.tmproj
|
|
36
|
+
#tmtags
|
|
37
|
+
|
|
38
|
+
# For emacs:
|
|
39
|
+
#*~
|
|
40
|
+
#\#*
|
|
41
|
+
#.\#*
|
|
42
|
+
|
|
43
|
+
# For vim:
|
|
44
|
+
#*.swp
|
|
45
|
+
|
|
46
|
+
# For redcar:
|
|
47
|
+
#.redcar
|
|
48
|
+
|
|
49
|
+
# For rubinius:
|
|
50
|
+
#*.rbc
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.2.0
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,143 +1,135 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
with_template (0.1.0)
|
|
5
|
+
blocks (~> 2.7.0)
|
|
6
|
+
rails (>= 3.0.0)
|
|
7
|
+
|
|
1
8
|
GEM
|
|
2
9
|
remote: http://rubygems.org/
|
|
3
10
|
specs:
|
|
4
|
-
actionmailer (4.
|
|
5
|
-
actionpack (= 4.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
actionmailer (4.2.5)
|
|
12
|
+
actionpack (= 4.2.5)
|
|
13
|
+
actionview (= 4.2.5)
|
|
14
|
+
activejob (= 4.2.5)
|
|
15
|
+
mail (~> 2.5, >= 2.5.4)
|
|
16
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
17
|
+
actionpack (4.2.5)
|
|
18
|
+
actionview (= 4.2.5)
|
|
19
|
+
activesupport (= 4.2.5)
|
|
20
|
+
rack (~> 1.6)
|
|
12
21
|
rack-test (~> 0.6.2)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
23
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
24
|
+
actionview (4.2.5)
|
|
25
|
+
activesupport (= 4.2.5)
|
|
26
|
+
builder (~> 3.1)
|
|
27
|
+
erubis (~> 2.7.0)
|
|
28
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
|
29
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
30
|
+
activejob (4.2.5)
|
|
31
|
+
activesupport (= 4.2.5)
|
|
32
|
+
globalid (>= 0.3.0)
|
|
33
|
+
activemodel (4.2.5)
|
|
34
|
+
activesupport (= 4.2.5)
|
|
35
|
+
builder (~> 3.1)
|
|
36
|
+
activerecord (4.2.5)
|
|
37
|
+
activemodel (= 4.2.5)
|
|
38
|
+
activesupport (= 4.2.5)
|
|
39
|
+
arel (~> 6.0)
|
|
40
|
+
activesupport (4.2.5)
|
|
41
|
+
i18n (~> 0.7)
|
|
42
|
+
json (~> 1.7, >= 1.7.7)
|
|
43
|
+
minitest (~> 5.1)
|
|
44
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
45
|
+
tzinfo (~> 1.1)
|
|
46
|
+
arel (6.0.3)
|
|
47
|
+
blocks (2.7.0)
|
|
32
48
|
call_with_params (~> 0.0.2)
|
|
33
49
|
hashie
|
|
34
50
|
rails (>= 3.0.0)
|
|
35
|
-
builder (3.
|
|
51
|
+
builder (3.2.2)
|
|
36
52
|
call_with_params (0.0.2)
|
|
37
53
|
activesupport (>= 3.0.0)
|
|
54
|
+
concurrent-ruby (1.0.0)
|
|
55
|
+
docile (1.1.5)
|
|
38
56
|
erubis (2.7.0)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
i18n (0.6.5)
|
|
54
|
-
jeweler (1.8.8)
|
|
55
|
-
builder
|
|
56
|
-
bundler (~> 1.0)
|
|
57
|
-
git (>= 1.2.5)
|
|
58
|
-
github_api (= 0.10.1)
|
|
59
|
-
highline (>= 1.6.15)
|
|
60
|
-
nokogiri (= 1.5.10)
|
|
61
|
-
rake
|
|
62
|
-
rdoc
|
|
63
|
-
json (1.8.1)
|
|
64
|
-
jwt (0.1.8)
|
|
65
|
-
multi_json (>= 1.5)
|
|
66
|
-
mail (2.5.4)
|
|
67
|
-
mime-types (~> 1.16)
|
|
68
|
-
treetop (~> 1.4.8)
|
|
69
|
-
metaclass (0.0.1)
|
|
70
|
-
mime-types (1.25)
|
|
71
|
-
minitest (4.7.5)
|
|
72
|
-
mocha (0.14.0)
|
|
57
|
+
globalid (0.3.6)
|
|
58
|
+
activesupport (>= 4.1.0)
|
|
59
|
+
hashie (3.4.3)
|
|
60
|
+
i18n (0.7.0)
|
|
61
|
+
json (1.8.3)
|
|
62
|
+
loofah (2.0.3)
|
|
63
|
+
nokogiri (>= 1.5.9)
|
|
64
|
+
mail (2.6.3)
|
|
65
|
+
mime-types (>= 1.16, < 3)
|
|
66
|
+
metaclass (0.0.4)
|
|
67
|
+
mime-types (2.99)
|
|
68
|
+
mini_portile2 (2.0.0)
|
|
69
|
+
minitest (5.8.3)
|
|
70
|
+
mocha (1.1.0)
|
|
73
71
|
metaclass (~> 0.0.1)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
oauth2 (0.9.2)
|
|
79
|
-
faraday (~> 0.8)
|
|
80
|
-
httpauth (~> 0.2)
|
|
81
|
-
jwt (~> 0.1.4)
|
|
82
|
-
multi_json (~> 1.0)
|
|
83
|
-
multi_xml (~> 0.5)
|
|
84
|
-
rack (~> 1.2)
|
|
85
|
-
polyglot (0.3.3)
|
|
86
|
-
rack (1.5.2)
|
|
87
|
-
rack-test (0.6.2)
|
|
72
|
+
nokogiri (1.6.7)
|
|
73
|
+
mini_portile2 (~> 2.0.0.rc2)
|
|
74
|
+
rack (1.6.4)
|
|
75
|
+
rack-test (0.6.3)
|
|
88
76
|
rack (>= 1.0)
|
|
89
|
-
rails (4.
|
|
90
|
-
actionmailer (= 4.
|
|
91
|
-
actionpack (= 4.
|
|
92
|
-
|
|
93
|
-
|
|
77
|
+
rails (4.2.5)
|
|
78
|
+
actionmailer (= 4.2.5)
|
|
79
|
+
actionpack (= 4.2.5)
|
|
80
|
+
actionview (= 4.2.5)
|
|
81
|
+
activejob (= 4.2.5)
|
|
82
|
+
activemodel (= 4.2.5)
|
|
83
|
+
activerecord (= 4.2.5)
|
|
84
|
+
activesupport (= 4.2.5)
|
|
94
85
|
bundler (>= 1.3.0, < 2.0)
|
|
95
|
-
railties (= 4.
|
|
96
|
-
sprockets-rails
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
86
|
+
railties (= 4.2.5)
|
|
87
|
+
sprockets-rails
|
|
88
|
+
rails-deprecated_sanitizer (1.0.3)
|
|
89
|
+
activesupport (>= 4.2.0.alpha)
|
|
90
|
+
rails-dom-testing (1.0.7)
|
|
91
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
|
92
|
+
nokogiri (~> 1.6.0)
|
|
93
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
|
94
|
+
rails-html-sanitizer (1.0.2)
|
|
95
|
+
loofah (~> 2.0)
|
|
96
|
+
railties (4.2.5)
|
|
97
|
+
actionpack (= 4.2.5)
|
|
98
|
+
activesupport (= 4.2.5)
|
|
100
99
|
rake (>= 0.8.7)
|
|
101
100
|
thor (>= 0.18.1, < 2.0)
|
|
102
|
-
rake (10.
|
|
103
|
-
rdoc (4.0.1)
|
|
104
|
-
json (~> 1.4)
|
|
101
|
+
rake (10.4.2)
|
|
105
102
|
shoulda (3.5.0)
|
|
106
103
|
shoulda-context (~> 1.0, >= 1.0.1)
|
|
107
104
|
shoulda-matchers (>= 1.4.1, < 3.0)
|
|
108
|
-
shoulda-context (1.1
|
|
109
|
-
shoulda-matchers (2.
|
|
105
|
+
shoulda-context (1.2.1)
|
|
106
|
+
shoulda-matchers (2.8.0)
|
|
110
107
|
activesupport (>= 3.0.0)
|
|
111
|
-
simplecov (0.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
rack (
|
|
119
|
-
|
|
120
|
-
sprockets-rails (2.0.1)
|
|
108
|
+
simplecov (0.11.1)
|
|
109
|
+
docile (~> 1.1.0)
|
|
110
|
+
json (~> 1.8)
|
|
111
|
+
simplecov-html (~> 0.10.0)
|
|
112
|
+
simplecov-html (0.10.0)
|
|
113
|
+
sprockets (3.5.2)
|
|
114
|
+
concurrent-ruby (~> 1.0)
|
|
115
|
+
rack (> 1, < 3)
|
|
116
|
+
sprockets-rails (2.3.3)
|
|
121
117
|
actionpack (>= 3.0)
|
|
122
118
|
activesupport (>= 3.0)
|
|
123
|
-
sprockets (
|
|
124
|
-
thor (0.
|
|
125
|
-
thread_safe (0.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
treetop (1.4.15)
|
|
129
|
-
polyglot
|
|
130
|
-
polyglot (>= 0.3.1)
|
|
131
|
-
tzinfo (0.3.38)
|
|
119
|
+
sprockets (>= 2.8, < 4.0)
|
|
120
|
+
thor (0.19.1)
|
|
121
|
+
thread_safe (0.3.5)
|
|
122
|
+
tzinfo (1.2.2)
|
|
123
|
+
thread_safe (~> 0.1)
|
|
132
124
|
|
|
133
125
|
PLATFORMS
|
|
134
126
|
ruby
|
|
135
127
|
|
|
136
128
|
DEPENDENCIES
|
|
137
|
-
blocks (~> 2.6.3)
|
|
138
|
-
bundler
|
|
139
|
-
jeweler
|
|
140
129
|
mocha
|
|
141
|
-
|
|
142
|
-
shoulda
|
|
130
|
+
shoulda (~> 3.5.0)
|
|
143
131
|
simplecov
|
|
132
|
+
with_template!
|
|
133
|
+
|
|
134
|
+
BUNDLED WITH
|
|
135
|
+
1.10.6
|
data/README.rdoc
CHANGED
|
@@ -1,14 +1,163 @@
|
|
|
1
1
|
= with_template
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
WithTemplate takes the concept of {Blocks}[https://github.com/hunterae/blocks] and adds templating to it. You specify a particular partial to render, and then maintain the ability to control how it renders from outside the template.
|
|
4
|
+
|
|
5
|
+
This allows you to very easily build reusable UI components. This is best demonstrated through examples.
|
|
4
6
|
|
|
5
7
|
== Installation
|
|
6
8
|
|
|
7
9
|
To install, add the following to the Gemfile:
|
|
8
10
|
gem install 'with_template'
|
|
9
11
|
|
|
10
|
-
==
|
|
12
|
+
== Note (12/14/15)
|
|
13
|
+
I am in the process of doing a full rewrite of this readme file to include better examples, and better description
|
|
14
|
+
of the features including new features that have not been documented yet.
|
|
15
|
+
|
|
16
|
+
== Example 1: TableFor
|
|
17
|
+
The {TableFor}[https://github.com/hunterae/table-for] was built by extending WithTemplate. Using a partial that defines a
|
|
18
|
+
series of blocks ({See here}[https://github.com/hunterae/table-for/blob/master/app/views/table_for/_table_for.html.erb]),
|
|
19
|
+
the user of the table builder is passed in a collection of records and specifies exactly which columns to render in the table.
|
|
20
|
+
|
|
21
|
+
The columns can correspond to fields are the records, methods to be invoked, or the user can specify exactly what should
|
|
22
|
+
be rendered in the column. Additionally, the headers can be overridden, any any component of the table can be replaced
|
|
23
|
+
should the user not like how the table renders. A simple example would be:
|
|
24
|
+
|
|
25
|
+
<%= table_for @users, :table_html => {:class => "table table-hover table-bordered"} do |table| %>
|
|
26
|
+
<% table.column :id, :header => false %>
|
|
27
|
+
<% table.column :full_name do |user| %>
|
|
28
|
+
<%= "#{user.first_name} #{user.last_name}" %>
|
|
29
|
+
<% end %>
|
|
30
|
+
<% table.footer do %>
|
|
31
|
+
<div class="pull-right">
|
|
32
|
+
<%= will_paginate @users %>
|
|
33
|
+
</div>
|
|
34
|
+
<% end %>
|
|
35
|
+
<% end %>
|
|
36
|
+
|
|
37
|
+
== Example 2: Shared Layouts
|
|
38
|
+
Say you wanted to wanted to create the following three layouts for your application:
|
|
39
|
+
1) a single full-width column
|
|
40
|
+
2) two columns, one that is a fourth of the page, and one that is three fourths of the page.
|
|
41
|
+
3) three columns, each a third of the page
|
|
42
|
+
|
|
43
|
+
To accomplish this, you may find yourself copying and pasting code between layouts, such as the head tag,
|
|
44
|
+
any meta tags, javascript includes, stylesheet links, navigation bar, the footer, and any components shared across all pages.
|
|
45
|
+
|
|
46
|
+
Perhaps you typically take this approach, or maybe you render a partial that you pass local variables
|
|
47
|
+
to that are used within the partial to conditionally render output.
|
|
48
|
+
|
|
49
|
+
I’d like to propose a third solution: use with_template.
|
|
50
|
+
|
|
51
|
+
With with_template, you specify what template (really just a partial) to render and a block that
|
|
52
|
+
can be used to override definitions within the partial, control what gets rendered and in
|
|
53
|
+
what order, or the block itself can be rendered in the partial.
|
|
54
|
+
|
|
55
|
+
With the above example, we could define a single partial, something like app/layouts/_shared_layout.html.erb
|
|
56
|
+
(Note: If you aren't familiar with the {Blocks gem}[https://github.com/hunterae/blocks], I highly recommend checking out
|
|
57
|
+
the documentation first):
|
|
58
|
+
|
|
59
|
+
<!DOCTYPE html>
|
|
60
|
+
<html lang="en">
|
|
61
|
+
<head>
|
|
62
|
+
<!-- meta tags -->
|
|
63
|
+
<title>
|
|
64
|
+
<%= blocks.render :title do %>
|
|
65
|
+
My App
|
|
66
|
+
<% end %>
|
|
67
|
+
</title>
|
|
68
|
+
<%= csrf_meta_tags %>
|
|
69
|
+
<%= blocks.render :stylesheets do %>
|
|
70
|
+
<%= stylesheet_link_tag "application", :media => "all" %>
|
|
71
|
+
<% end %>
|
|
72
|
+
<!-- Additional <head> content -->
|
|
73
|
+
</head>
|
|
74
|
+
<body>
|
|
75
|
+
<%= blocks.render_with_partials :navbar %>
|
|
76
|
+
<div class="main">
|
|
77
|
+
<div class="container">
|
|
78
|
+
<div class="row">
|
|
79
|
+
<div class="col-md-12">
|
|
80
|
+
<%= bootstrap_flash %>
|
|
81
|
+
</div>
|
|
82
|
+
<%= captured_block %>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
<%= blocks.render :footer do %>
|
|
87
|
+
<%= render "blocks/footer" %>
|
|
88
|
+
<% end %>
|
|
89
|
+
<%= blocks.render :javascripts do %>
|
|
90
|
+
<%= include_gon %>
|
|
91
|
+
<%= javascript_include_tag "application" %>
|
|
92
|
+
<% end %>
|
|
93
|
+
</body>
|
|
94
|
+
</html>
|
|
95
|
+
|
|
96
|
+
Here we've defined a template of code that can be shared amongst all layouts. Where the individual layouts differ, there
|
|
97
|
+
are several hooks that have been added to the template that provide convenient ways of adding code blocks or replacing
|
|
98
|
+
the way others render. In the above code, we call "blocks.render" and "blocks.render_with_partials" in a couple of different
|
|
99
|
+
places. These allow us, from outside the template, to specify code to render before any of those blocks, after any of those
|
|
100
|
+
blocks, or replace any of those blocks. We'll get to that shortly.
|
|
101
|
+
|
|
102
|
+
Using the above partial, we can now very easily define the 3 layouts defined above:
|
|
103
|
+
|
|
104
|
+
<!-- app/views/layout/one_column.html.erb -->
|
|
105
|
+
<%= with_template("layouts/shared_layout") do %>
|
|
106
|
+
<div class="col-md-12">
|
|
107
|
+
<%= yield %>
|
|
108
|
+
</div>
|
|
109
|
+
<% end %>
|
|
110
|
+
|
|
111
|
+
<!-- app/views/layout/two_columns.html.erb -->
|
|
112
|
+
<%= with_template("layouts/shared_layout") do %>
|
|
113
|
+
<%= blocks.render_with_partials :sidebar, :wrap_with => { :tag => :div, :class => "col-md-3 sidebar" } %>
|
|
114
|
+
<div class="col-md-9">
|
|
115
|
+
<%= yield %>
|
|
116
|
+
</div>
|
|
117
|
+
<% end %>
|
|
118
|
+
|
|
119
|
+
<!-- app/views/layout/three_columns.html.erb -->
|
|
120
|
+
<%= with_template("layouts/shared_layout") do %>
|
|
121
|
+
<%= blocks.render :column1, :wrap_with => { :tag => :div, :class => "col-md-4" } %>
|
|
122
|
+
<%= blocks.render :column2, :wrap_with => { :tag => :div, :class => "col-md-4" } %>
|
|
123
|
+
<%= blocks.render :column3, :wrap_with => { :tag => :div, :class => "col-md-4" } %>
|
|
124
|
+
<% end %>
|
|
125
|
+
|
|
126
|
+
Suppose we wanted to add a fourth layout for admins that used roughly the same code as the one column layout,
|
|
127
|
+
but with some additional javascript and stylesheet files included. In the true spirit of DRY, this is
|
|
128
|
+
exceptionally easy to do with WithTemplate:
|
|
129
|
+
|
|
130
|
+
<!-- app/views/layout/admin.html.erb -->
|
|
131
|
+
<% blocks.after :stylesheets do %>
|
|
132
|
+
<%= stylesheet_link_tag "admin", :media => "all" %>
|
|
133
|
+
<% end %>
|
|
134
|
+
|
|
135
|
+
<% blocks.after :javascripts do %>
|
|
136
|
+
<%= javascript_include_tag "admin" %>
|
|
137
|
+
<% end %>
|
|
138
|
+
|
|
139
|
+
<% blocks.define :title do %>
|
|
140
|
+
Admin
|
|
141
|
+
<% end %>
|
|
142
|
+
|
|
143
|
+
<%= render :template => "layouts/one_column" %>
|
|
144
|
+
|
|
145
|
+
With those lines, we added in the admin javascript files, the admin stylesheets, set the title to "Admin",
|
|
146
|
+
and reused the basic one column layout. What if, instead of rendering the admin stylesheets and javascripts
|
|
147
|
+
after the application stylesheets and javascripts, we wanted to flat out replace the application stylesheets
|
|
148
|
+
and javascripts. Simple enough:
|
|
149
|
+
|
|
150
|
+
<!-- app/views/layout/admin.html.erb -->
|
|
151
|
+
<% blocks.define :stylesheets do %>
|
|
152
|
+
<%= stylesheet_link_tag "admin", :media => "all" %>
|
|
153
|
+
<% end %>
|
|
154
|
+
|
|
155
|
+
<% blocks.define :javascripts do %>
|
|
156
|
+
<%= javascript_include_tag "admin" %>
|
|
157
|
+
<% end %>
|
|
11
158
|
|
|
12
|
-
|
|
13
|
-
|
|
159
|
+
<% blocks.define :title do %>
|
|
160
|
+
Admin
|
|
161
|
+
<% end %>
|
|
14
162
|
|
|
163
|
+
<%= render :template => "layouts/one_column" %>
|
data/Rakefile
CHANGED
|
@@ -1,29 +1,7 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
3
|
require 'rubygems'
|
|
4
|
-
require 'bundler'
|
|
5
|
-
begin
|
|
6
|
-
Bundler.setup(:default, :development)
|
|
7
|
-
rescue Bundler::BundlerError => e
|
|
8
|
-
$stderr.puts e.message
|
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
|
10
|
-
exit e.status_code
|
|
11
|
-
end
|
|
12
|
-
require 'rake'
|
|
13
|
-
|
|
14
|
-
require 'jeweler'
|
|
15
|
-
Jeweler::Tasks.new do |gem|
|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
|
17
|
-
gem.name = "with_template"
|
|
18
|
-
gem.homepage = "http://github.com/hunterae/with_template"
|
|
19
|
-
gem.license = "MIT"
|
|
20
|
-
gem.summary = %Q{Render a template (partial) and easily override any of the components of the template}
|
|
21
|
-
gem.description = %Q{Render a template (partial) and easily override any of the components of the template}
|
|
22
|
-
gem.email = "hunterae@gmail.com"
|
|
23
|
-
gem.authors = ["Andrew Hunter"]
|
|
24
|
-
# dependencies defined in Gemfile
|
|
25
|
-
end
|
|
26
|
-
Jeweler::RubygemsDotOrgTasks.new
|
|
4
|
+
require 'bundler/gem_tasks'
|
|
27
5
|
|
|
28
6
|
require 'rake/testtask'
|
|
29
7
|
Rake::TestTask.new(:test) do |test|
|
data/lib/with_template.rb
CHANGED
data/lib/with_template/base.rb
CHANGED
|
@@ -3,8 +3,8 @@ module WithTemplate
|
|
|
3
3
|
# Array of Blocks::Container objects, storing the order of blocks as they were queued
|
|
4
4
|
attr_accessor :queued_blocks
|
|
5
5
|
|
|
6
|
-
#
|
|
7
|
-
attr_accessor :
|
|
6
|
+
# Options that were passed into this instance of WithTemplate for use when merging options with a parent instance
|
|
7
|
+
attr_accessor :init_options
|
|
8
8
|
|
|
9
9
|
# Render a partial, treating it as a template, and any code in the block argument will impact how the template renders
|
|
10
10
|
# <%= WithTemplate::Base.new(self).render_template("shared/wizard") do |blocks| %>
|
|
@@ -41,10 +41,12 @@ module WithTemplate
|
|
|
41
41
|
# The partial to render as a template
|
|
42
42
|
# [+block+]
|
|
43
43
|
# An optional block with code that affects how the template renders
|
|
44
|
-
def render_template(partial, &block)
|
|
44
|
+
def render_template(partial, variable=nil, &block)
|
|
45
45
|
render_options = global_options.clone
|
|
46
|
-
render_options[render_options[:variable]] = self
|
|
47
46
|
render_options[:captured_block] = view.capture(self, &block) if block_given?
|
|
47
|
+
render_options[:options] = render_options
|
|
48
|
+
variable ||= render_options.delete(:variable) || :template
|
|
49
|
+
render_options[variable] = self
|
|
48
50
|
|
|
49
51
|
view.render partial, render_options
|
|
50
52
|
end
|
|
@@ -95,30 +97,8 @@ module WithTemplate
|
|
|
95
97
|
|
|
96
98
|
def initialize(view, options={})
|
|
97
99
|
self.queued_blocks = []
|
|
98
|
-
self.
|
|
99
|
-
super(view, options
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# If a method is missing, we'll assume the user is starting a new block group by that missing method name
|
|
103
|
-
def method_missing(m, *args, &block)
|
|
104
|
-
options = args.extract_options!
|
|
105
|
-
|
|
106
|
-
# If the specified block group has already been defined, it is simply returned here for iteration.
|
|
107
|
-
# It will consist of all the blocks used in this block group that have yet to be rendered,
|
|
108
|
-
# as the call for their use occurred before the template was rendered (where their definitions likely occurred)
|
|
109
|
-
return self.block_groups[m] unless self.block_groups[m].nil?
|
|
110
|
-
|
|
111
|
-
# Allows for nested block groups, store the current block positions array and start a new one
|
|
112
|
-
original_queued_blocks = self.queued_blocks
|
|
113
|
-
self.queued_blocks = []
|
|
114
|
-
self.block_groups[m] = self.queued_blocks
|
|
115
|
-
|
|
116
|
-
# Capture the contents of the block group (this will only capture block definitions and block renders; it will ignore anything else)
|
|
117
|
-
view.capture(global_options.merge(options), &block) if block_given?
|
|
118
|
-
|
|
119
|
-
# restore the original block positions array
|
|
120
|
-
self.queued_blocks = original_queued_blocks
|
|
121
|
-
nil
|
|
100
|
+
self.init_options = options
|
|
101
|
+
super(view, options)
|
|
122
102
|
end
|
|
123
103
|
end
|
|
124
104
|
end
|
|
@@ -1,9 +1,31 @@
|
|
|
1
1
|
module WithTemplate
|
|
2
2
|
module ViewAdditions
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
def with_template(template, options={}, &block)
|
|
4
|
+
options = options.with_indifferent_access
|
|
5
|
+
template_variable = options.delete(:variable) || :template
|
|
6
|
+
WithTemplate::Base.new(self, options).render_template(template, template_variable, &block)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def with_global_template(template, options={}, &block)
|
|
10
|
+
options = options.with_indifferent_access
|
|
11
|
+
variable = options.delete(:variable) || :global_template
|
|
12
|
+
if @global_template.present?
|
|
13
|
+
@global_template.init_options.reverse_merge!(options)
|
|
14
|
+
@global_template.global_options.merge!(@global_template.init_options)
|
|
15
|
+
else
|
|
16
|
+
@global_template = WithTemplate::Base.new(self, options)
|
|
17
|
+
end
|
|
18
|
+
@global_template.render_template(template, variable, &block)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def global_template
|
|
22
|
+
if @global_template.blank?
|
|
23
|
+
@global_template = WithTemplate::Base.new(self)
|
|
24
|
+
@global_template.blocks = blocks.blocks
|
|
25
|
+
@global_template.skipped_blocks = blocks.skipped_blocks
|
|
26
|
+
@global_template.anonymous_block_number = blocks.anonymous_block_number
|
|
6
27
|
end
|
|
28
|
+
@global_template
|
|
7
29
|
end
|
|
8
30
|
end
|
|
9
|
-
end
|
|
31
|
+
end
|
data/test/base_test.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'helper'
|
|
2
2
|
|
|
3
|
-
class WithTemplate::BaseTest <
|
|
3
|
+
class WithTemplate::BaseTest < MiniTest::Unit::TestCase
|
|
4
4
|
def setup
|
|
5
5
|
@view = ActionView::Base.new
|
|
6
6
|
@builder = WithTemplate::Base.new(@view)
|
|
@@ -28,11 +28,17 @@ class WithTemplate::BaseTest < Test::Unit::TestCase
|
|
|
28
28
|
@builder.render_template("some_template")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
should "
|
|
32
|
-
builder = WithTemplate::Base.new(@view, :
|
|
31
|
+
should "allow the variable in the partial to be overridden in the options hash" do
|
|
32
|
+
builder = WithTemplate::Base.new(@view, variable: :new_template_variable)
|
|
33
33
|
@view.expects(:render).with { |template, options| options[:new_template_variable] == builder }
|
|
34
34
|
builder.render_template("some_template")
|
|
35
35
|
end
|
|
36
|
+
|
|
37
|
+
should "allow the variable in the partial to be overridden as a parameter" do
|
|
38
|
+
builder = WithTemplate::Base.new(@view)
|
|
39
|
+
@view.expects(:render).with { |template, options| options[:new_template_variable] == builder }
|
|
40
|
+
builder.render_template("some_template", :new_template_variable)
|
|
41
|
+
end
|
|
36
42
|
end
|
|
37
43
|
|
|
38
44
|
context "#queue" do
|
|
@@ -89,30 +95,4 @@ class WithTemplate::BaseTest < Test::Unit::TestCase
|
|
|
89
95
|
assert_equal block, container.block
|
|
90
96
|
end
|
|
91
97
|
end
|
|
92
|
-
|
|
93
|
-
context "#method_missing" do
|
|
94
|
-
should "start a new block group if a method is missing" do
|
|
95
|
-
@builder.some_method
|
|
96
|
-
queued_blocks = @builder.block_groups[:some_method]
|
|
97
|
-
assert_equal [], queued_blocks
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
should "add items to a queue when a new block group is started" do
|
|
101
|
-
@builder.some_method do
|
|
102
|
-
@builder.queue :myblock1
|
|
103
|
-
@builder.queue :myblock2
|
|
104
|
-
end
|
|
105
|
-
@builder.some_method2 do
|
|
106
|
-
@builder.queue :myblock3
|
|
107
|
-
end
|
|
108
|
-
queued_blocks = @builder.block_groups[:some_method]
|
|
109
|
-
assert_equal 2, queued_blocks.length
|
|
110
|
-
assert_equal :myblock1, queued_blocks.first.name
|
|
111
|
-
assert_equal :myblock2, queued_blocks.second.name
|
|
112
|
-
queued_blocks = @builder.block_groups[:some_method2]
|
|
113
|
-
assert_equal 1, queued_blocks.length
|
|
114
|
-
assert_equal :myblock3, queued_blocks.first.name
|
|
115
|
-
assert_equal [], @builder.queued_blocks
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
98
|
end
|
|
File without changes
|
data/test/helper.rb
CHANGED
|
@@ -1,20 +1,6 @@
|
|
|
1
1
|
require 'rubygems'
|
|
2
|
-
require '
|
|
3
|
-
begin
|
|
4
|
-
Bundler.setup(:default, :development)
|
|
5
|
-
rescue Bundler::BundlerError => e
|
|
6
|
-
$stderr.puts e.message
|
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
|
8
|
-
exit e.status_code
|
|
9
|
-
end
|
|
10
|
-
require 'test/unit'
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
13
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
2
|
+
require 'minitest/autorun'
|
|
14
3
|
require 'shoulda'
|
|
15
|
-
require 'mocha'
|
|
16
|
-
require 'active_support/core_ext'
|
|
4
|
+
require 'mocha/setup'
|
|
17
5
|
require 'blocks'
|
|
18
6
|
require 'with_template'
|
|
19
|
-
|
|
20
|
-
ActiveSupport::Deprecation.silenced = true
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
require 'helper'
|
|
2
|
+
|
|
3
|
+
class WithTemplate::ViewAdditionsTest < MiniTest::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@view = ActionView::Base.new(File.dirname(__FILE__) + '/fixtures')
|
|
6
|
+
@block = Proc.new {}
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
context "#with_template" do
|
|
10
|
+
should "instantiate a new WithTemplate::Base instance and render the template with it" do
|
|
11
|
+
options={ a: 1, b: 2}
|
|
12
|
+
instance = mock
|
|
13
|
+
instance.expects(:render_template).with("my_template", :template)
|
|
14
|
+
WithTemplate::Base.expects(:new).with(@view, options.with_indifferent_access).returns(instance)
|
|
15
|
+
@view.with_template("my_template", options, &@block)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
should "allow and extract a variable parameter to be passed in the options hash" do
|
|
19
|
+
options = { variable: :my_variable, a: 1, b: 2 }
|
|
20
|
+
instance = mock
|
|
21
|
+
instance.expects(:render_template).with("my_template", :my_variable)
|
|
22
|
+
WithTemplate::Base.expects(:new).with(@view, options.with_indifferent_access.except(:variable)).returns(instance)
|
|
23
|
+
@view.with_template("my_template", options, &@block)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
should "require only the first parameter to be specified" do
|
|
27
|
+
@view.with_template("my_template")
|
|
28
|
+
assert_raises ArgumentError do
|
|
29
|
+
@view.with_template
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "#with_global_template" do
|
|
35
|
+
context "when @global_template is not yet defined in the view" do
|
|
36
|
+
setup do
|
|
37
|
+
assert @view.instance_variable_get(:@global_template).nil?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
should "instantiate a new WithTemplate::Base instance and render the template with it" do
|
|
41
|
+
options = {a: 1, b: 2}
|
|
42
|
+
instance = mock
|
|
43
|
+
instance.expects(:render_template).with("my_template", :global_template)
|
|
44
|
+
WithTemplate::Base.expects(:new).with(@view, options.with_indifferent_access).returns(instance)
|
|
45
|
+
@view.with_global_template("my_template", options, &@block)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
should "allow and extract a variable parameter to be passed in the options hash" do
|
|
49
|
+
options = { variable: :my_variable, a: 1, b: 2 }
|
|
50
|
+
instance = mock
|
|
51
|
+
instance.expects(:render_template).with("my_template", :my_variable)
|
|
52
|
+
WithTemplate::Base.expects(:new).with(@view, options.with_indifferent_access.except(:variable)).returns(instance)
|
|
53
|
+
@view.with_global_template("my_template", options, &@block)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
should "require only the first parameter to be specified" do
|
|
57
|
+
@view.with_global_template("my_template")
|
|
58
|
+
assert_raises ArgumentError do
|
|
59
|
+
@view.with_global_template
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context "when @global_template is already set on the view" do
|
|
65
|
+
setup do
|
|
66
|
+
@view.global_template
|
|
67
|
+
@global_template = @view.instance_variable_get(:@global_template)
|
|
68
|
+
assert @global_template.present?
|
|
69
|
+
WithTemplate::Base.expects(:new).never
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
should "use the existing WithTemplate::Base instance and render the template with it" do
|
|
73
|
+
options={}
|
|
74
|
+
WithTemplate::Base.any_instance.expects(:render_template).with("my_template", :global_template)
|
|
75
|
+
@view.with_global_template("my_template", options, &@block)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
should "allow and extract a variable parameter to be passed in the options hash" do
|
|
79
|
+
WithTemplate::Base.any_instance.expects(:render_template).with("my_template", :something)
|
|
80
|
+
|
|
81
|
+
@view.with_global_template("my_template", variable: :something)
|
|
82
|
+
assert @view.global_template.global_options[:variable].blank?
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
should "give precedence to the init options set in previous calls to with_global_template" do
|
|
86
|
+
options_1 = { a: 1, b: 2, d: 3 }
|
|
87
|
+
options_2 = { a: 4, b: 5, c: 6 }
|
|
88
|
+
options_3 = { a: 7, b: 8, c: 9, d: 10, e: 11}
|
|
89
|
+
merged = options_3.merge(options_2.merge(options_1)).with_indifferent_access
|
|
90
|
+
@view.with_global_template("my_template", options_1) do
|
|
91
|
+
@view.with_global_template("my_template", options_2) do
|
|
92
|
+
@view.with_global_template("my_template", options_3)
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
assert_equal @global_template.init_options, merged
|
|
96
|
+
assert_equal @global_template.global_options, @view.blocks.global_options.merge(merged)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
context "#global_template" do
|
|
102
|
+
should "return a memoized global_template" do
|
|
103
|
+
assert_same @view.global_template, @view.global_template
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
should "instantiate the global_template from the global blocks instance" do
|
|
107
|
+
@view.blocks.skip(:some_block)
|
|
108
|
+
@view.blocks.define(:hello) do
|
|
109
|
+
"Goodbye"
|
|
110
|
+
end
|
|
111
|
+
@view.blocks.define(nil) do
|
|
112
|
+
"Anonymous block"
|
|
113
|
+
end
|
|
114
|
+
gt = @view.global_template
|
|
115
|
+
assert gt.skipped_blocks.include?(:some_block)
|
|
116
|
+
assert_equal 1, gt.anonymous_block_number
|
|
117
|
+
assert gt.blocks.include?(:block_1)
|
|
118
|
+
assert gt.blocks.include?(:hello)
|
|
119
|
+
assert_equal "Goodbye", gt.render(:hello)
|
|
120
|
+
assert_equal "Anonymous block", gt.render(:block_1)
|
|
121
|
+
assert_equal @view.blocks.global_options, gt.global_options
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
data/with_template.gemspec
CHANGED
|
@@ -1,73 +1,28 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
5
1
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
# coding: utf-8
|
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
require 'with_template/version'
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
s.files = [
|
|
20
|
-
".document",
|
|
21
|
-
".ruby-gemset",
|
|
22
|
-
".ruby-version",
|
|
23
|
-
"Gemfile",
|
|
24
|
-
"Gemfile.lock",
|
|
25
|
-
"LICENSE.txt",
|
|
26
|
-
"README.rdoc",
|
|
27
|
-
"Rakefile",
|
|
28
|
-
"VERSION",
|
|
29
|
-
"lib/with_template.rb",
|
|
30
|
-
"lib/with_template/base.rb",
|
|
31
|
-
"lib/with_template/view_additions.rb",
|
|
32
|
-
"rails/init.rb",
|
|
33
|
-
"test/base_test.rb",
|
|
34
|
-
"test/helper.rb",
|
|
35
|
-
"with_template.gemspec"
|
|
36
|
-
]
|
|
37
|
-
s.homepage = "http://github.com/hunterae/with_template"
|
|
38
|
-
s.licenses = ["MIT"]
|
|
39
|
-
s.require_paths = ["lib"]
|
|
40
|
-
s.rubygems_version = "1.8.25"
|
|
41
|
-
s.summary = "Render a template (partial) and easily override any of the components of the template"
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "with_template"
|
|
9
|
+
spec.version = WithTemplate::VERSION
|
|
10
|
+
spec.authors = ["Andrew Hunter"]
|
|
11
|
+
spec.email = ["hunterae@gmail.com"]
|
|
12
|
+
spec.summary = %q{Render a template (partial) and easily override any of the components of the template}
|
|
13
|
+
spec.description = %q{Render a template (partial) and easily override any of the components of the template}
|
|
14
|
+
spec.homepage = "http://github.com/hunterae/with_template"
|
|
15
|
+
spec.license = "MIT"
|
|
42
16
|
|
|
43
|
-
|
|
44
|
-
|
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
20
|
+
spec.require_paths = ["lib"]
|
|
45
21
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
|
|
49
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
|
50
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
|
51
|
-
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
|
52
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
|
53
|
-
s.add_development_dependency(%q<mocha>, [">= 0"])
|
|
54
|
-
else
|
|
55
|
-
s.add_dependency(%q<blocks>, ["~> 2.6.3"])
|
|
56
|
-
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
|
57
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
|
58
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
59
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
|
60
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
61
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
62
|
-
end
|
|
63
|
-
else
|
|
64
|
-
s.add_dependency(%q<blocks>, ["~> 2.6.3"])
|
|
65
|
-
s.add_dependency(%q<rails>, [">= 3.0.0"])
|
|
66
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
|
67
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
|
68
|
-
s.add_dependency(%q<simplecov>, [">= 0"])
|
|
69
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
70
|
-
s.add_dependency(%q<mocha>, [">= 0"])
|
|
71
|
-
end
|
|
72
|
-
end
|
|
22
|
+
spec.add_dependency "rails", ">= 3.0.0"
|
|
23
|
+
spec.add_dependency "blocks", "~> 2.7.0"
|
|
73
24
|
|
|
25
|
+
spec.add_development_dependency "simplecov"
|
|
26
|
+
spec.add_development_dependency "shoulda", "~> 3.5.0"
|
|
27
|
+
spec.add_development_dependency "mocha"
|
|
28
|
+
end
|
metadata
CHANGED
|
@@ -1,180 +1,138 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: with_template
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.1.0
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Andrew Hunter
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
|
-
- !ruby/object:Gem::Dependency
|
|
15
|
-
name: blocks
|
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
|
17
|
-
none: false
|
|
18
|
-
requirements:
|
|
19
|
-
- - ~>
|
|
20
|
-
- !ruby/object:Gem::Version
|
|
21
|
-
version: 2.6.3
|
|
22
|
-
type: :runtime
|
|
23
|
-
prerelease: false
|
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
-
none: false
|
|
26
|
-
requirements:
|
|
27
|
-
- - ~>
|
|
28
|
-
- !ruby/object:Gem::Version
|
|
29
|
-
version: 2.6.3
|
|
30
13
|
- !ruby/object:Gem::Dependency
|
|
31
14
|
name: rails
|
|
32
15
|
requirement: !ruby/object:Gem::Requirement
|
|
33
|
-
none: false
|
|
34
16
|
requirements:
|
|
35
|
-
- -
|
|
17
|
+
- - ">="
|
|
36
18
|
- !ruby/object:Gem::Version
|
|
37
19
|
version: 3.0.0
|
|
38
20
|
type: :runtime
|
|
39
21
|
prerelease: false
|
|
40
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
none: false
|
|
42
23
|
requirements:
|
|
43
|
-
- -
|
|
24
|
+
- - ">="
|
|
44
25
|
- !ruby/object:Gem::Version
|
|
45
26
|
version: 3.0.0
|
|
46
27
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name:
|
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
|
49
|
-
none: false
|
|
50
|
-
requirements:
|
|
51
|
-
- - ! '>='
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '0'
|
|
54
|
-
type: :development
|
|
55
|
-
prerelease: false
|
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
-
none: false
|
|
58
|
-
requirements:
|
|
59
|
-
- - ! '>='
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
- !ruby/object:Gem::Dependency
|
|
63
|
-
name: jeweler
|
|
28
|
+
name: blocks
|
|
64
29
|
requirement: !ruby/object:Gem::Requirement
|
|
65
|
-
none: false
|
|
66
30
|
requirements:
|
|
67
|
-
- -
|
|
31
|
+
- - "~>"
|
|
68
32
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
70
|
-
type: :
|
|
33
|
+
version: 2.7.0
|
|
34
|
+
type: :runtime
|
|
71
35
|
prerelease: false
|
|
72
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
-
none: false
|
|
74
37
|
requirements:
|
|
75
|
-
- -
|
|
38
|
+
- - "~>"
|
|
76
39
|
- !ruby/object:Gem::Version
|
|
77
|
-
version:
|
|
40
|
+
version: 2.7.0
|
|
78
41
|
- !ruby/object:Gem::Dependency
|
|
79
42
|
name: simplecov
|
|
80
43
|
requirement: !ruby/object:Gem::Requirement
|
|
81
|
-
none: false
|
|
82
44
|
requirements:
|
|
83
|
-
- -
|
|
45
|
+
- - ">="
|
|
84
46
|
- !ruby/object:Gem::Version
|
|
85
47
|
version: '0'
|
|
86
48
|
type: :development
|
|
87
49
|
prerelease: false
|
|
88
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
none: false
|
|
90
51
|
requirements:
|
|
91
|
-
- -
|
|
52
|
+
- - ">="
|
|
92
53
|
- !ruby/object:Gem::Version
|
|
93
54
|
version: '0'
|
|
94
55
|
- !ruby/object:Gem::Dependency
|
|
95
56
|
name: shoulda
|
|
96
57
|
requirement: !ruby/object:Gem::Requirement
|
|
97
|
-
none: false
|
|
98
58
|
requirements:
|
|
99
|
-
- -
|
|
59
|
+
- - "~>"
|
|
100
60
|
- !ruby/object:Gem::Version
|
|
101
|
-
version:
|
|
61
|
+
version: 3.5.0
|
|
102
62
|
type: :development
|
|
103
63
|
prerelease: false
|
|
104
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
105
|
-
none: false
|
|
106
65
|
requirements:
|
|
107
|
-
- -
|
|
66
|
+
- - "~>"
|
|
108
67
|
- !ruby/object:Gem::Version
|
|
109
|
-
version:
|
|
68
|
+
version: 3.5.0
|
|
110
69
|
- !ruby/object:Gem::Dependency
|
|
111
70
|
name: mocha
|
|
112
71
|
requirement: !ruby/object:Gem::Requirement
|
|
113
|
-
none: false
|
|
114
72
|
requirements:
|
|
115
|
-
- -
|
|
73
|
+
- - ">="
|
|
116
74
|
- !ruby/object:Gem::Version
|
|
117
75
|
version: '0'
|
|
118
76
|
type: :development
|
|
119
77
|
prerelease: false
|
|
120
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
none: false
|
|
122
79
|
requirements:
|
|
123
|
-
- -
|
|
80
|
+
- - ">="
|
|
124
81
|
- !ruby/object:Gem::Version
|
|
125
82
|
version: '0'
|
|
126
83
|
description: Render a template (partial) and easily override any of the components
|
|
127
84
|
of the template
|
|
128
|
-
email:
|
|
85
|
+
email:
|
|
86
|
+
- hunterae@gmail.com
|
|
129
87
|
executables: []
|
|
130
88
|
extensions: []
|
|
131
|
-
extra_rdoc_files:
|
|
132
|
-
- LICENSE.txt
|
|
133
|
-
- README.rdoc
|
|
89
|
+
extra_rdoc_files: []
|
|
134
90
|
files:
|
|
135
|
-
- .document
|
|
136
|
-
- .
|
|
137
|
-
- .ruby-version
|
|
91
|
+
- ".document"
|
|
92
|
+
- ".gitignore"
|
|
93
|
+
- ".ruby-version"
|
|
138
94
|
- Gemfile
|
|
139
95
|
- Gemfile.lock
|
|
140
96
|
- LICENSE.txt
|
|
141
97
|
- README.rdoc
|
|
142
98
|
- Rakefile
|
|
143
|
-
- VERSION
|
|
144
99
|
- lib/with_template.rb
|
|
145
100
|
- lib/with_template/base.rb
|
|
101
|
+
- lib/with_template/version.rb
|
|
146
102
|
- lib/with_template/view_additions.rb
|
|
147
103
|
- rails/init.rb
|
|
148
104
|
- test/base_test.rb
|
|
105
|
+
- test/fixtures/_my_template.html.erb
|
|
149
106
|
- test/helper.rb
|
|
107
|
+
- test/view_additions_test.rb
|
|
150
108
|
- with_template.gemspec
|
|
151
109
|
homepage: http://github.com/hunterae/with_template
|
|
152
110
|
licenses:
|
|
153
111
|
- MIT
|
|
112
|
+
metadata: {}
|
|
154
113
|
post_install_message:
|
|
155
114
|
rdoc_options: []
|
|
156
115
|
require_paths:
|
|
157
116
|
- lib
|
|
158
117
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
|
-
none: false
|
|
160
118
|
requirements:
|
|
161
|
-
- -
|
|
119
|
+
- - ">="
|
|
162
120
|
- !ruby/object:Gem::Version
|
|
163
121
|
version: '0'
|
|
164
|
-
segments:
|
|
165
|
-
- 0
|
|
166
|
-
hash: -2512220499031150591
|
|
167
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
|
-
none: false
|
|
169
123
|
requirements:
|
|
170
|
-
- -
|
|
124
|
+
- - ">="
|
|
171
125
|
- !ruby/object:Gem::Version
|
|
172
126
|
version: '0'
|
|
173
127
|
requirements: []
|
|
174
128
|
rubyforge_project:
|
|
175
|
-
rubygems_version:
|
|
129
|
+
rubygems_version: 2.4.6
|
|
176
130
|
signing_key:
|
|
177
|
-
specification_version:
|
|
131
|
+
specification_version: 4
|
|
178
132
|
summary: Render a template (partial) and easily override any of the components of
|
|
179
133
|
the template
|
|
180
|
-
test_files:
|
|
134
|
+
test_files:
|
|
135
|
+
- test/base_test.rb
|
|
136
|
+
- test/fixtures/_my_template.html.erb
|
|
137
|
+
- test/helper.rb
|
|
138
|
+
- test/view_additions_test.rb
|
data/.ruby-gemset
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
use_template
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.0.6
|