cells-erb 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +7 -3
- data/CHANGES.md +4 -0
- data/Gemfile +6 -6
- data/README.md +1 -1
- data/cells-erb.gemspec +2 -2
- data/gemfiles/rails_3.2-tilt-1.4.gemfile +0 -1
- data/gemfiles/rails_4.2-tilt-1.4.gemfile +0 -1
- data/gemfiles/rails_4.2-tilt-2.0.gemfile +0 -1
- data/gemfiles/rails_4.2-tilt-3.0.gemfile +0 -1
- data/lib/cell/erb/template.rb +39 -13
- data/lib/cell/erb/version.rb +1 -1
- data/test/dummy/app/cells/song/render_in_render.erb +1 -0
- data/test/dummy/app/cells/song/render_in_render_2.erb +1 -0
- data/test/dummy/app/cells/song/with_form_tag_and_content_tag.erb +5 -1
- data/test/dummy/app/cells/song_cell.rb +7 -0
- data/test/erb_test.rb +13 -2
- metadata +8 -5
- data/Appraisals +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bb2e8a877505bb6ec775dc3b2a9831da1c4788c
|
4
|
+
data.tar.gz: 46a65db846ce908de66f34fa9fc0f843dfd7a58c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 122cfd4eab5b6d53a0fa30c61f021b488223855d69a4cd27361a4986d6a7ef9ba9e8ecd7eec6dac2bd60ac85c309ee6c041590b41fc7b79398b442182a2af291
|
7
|
+
data.tar.gz: 16aac32c8f6d2e831e0fecfc1992976a58f932f27e2160b441e891019c75f3adb71be06cd3f13b37344ef3c04d5c3d2813962d681115d2f4c459335eea00b8ca
|
data/.travis.yml
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.1
|
4
|
+
|
1
5
|
gemfile:
|
2
|
-
- gemfiles/
|
3
|
-
- gemfiles/
|
4
|
-
- gemfiles/
|
6
|
+
- gemfiles/rails_4.2-tilt-1.4.gemfile
|
7
|
+
- gemfiles/rails_4.2-tilt-2.0.gemfile
|
8
|
+
- gemfiles/rails_3.2-tilt-1.4.gemfile
|
data/CHANGES.md
CHANGED
data/Gemfile
CHANGED
@@ -2,9 +2,9 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in cells-erb.gemspec
|
4
4
|
gemspec
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
gem
|
9
|
-
gem
|
10
|
-
gem
|
5
|
+
|
6
|
+
gem "railties", "~> 4.2.0"
|
7
|
+
gem "activemodel"
|
8
|
+
gem "minitest", "~> 5.2"
|
9
|
+
gem "tilt", "~> 2.0"
|
10
|
+
gem "cells", path: "../cells"
|
data/README.md
CHANGED
@@ -29,7 +29,7 @@ class SongCell < Cell::ViewModel
|
|
29
29
|
end
|
30
30
|
```
|
31
31
|
|
32
|
-
If that doesn't work, [read the docs](http://trailblazerb.org/cells/
|
32
|
+
If that doesn't work, [read the docs](http://trailblazerb.org/gems/cells/cells4.html#html-escaping).
|
33
33
|
|
34
34
|
## Dependencies
|
35
35
|
|
data/cells-erb.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test)/})
|
19
19
|
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.
|
22
|
-
spec.
|
21
|
+
spec.add_dependency "cells", "~> 4.0.0.beta6"
|
22
|
+
spec.add_dependency "erbse", ">= 0.0.2"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler"
|
25
25
|
spec.add_development_dependency "rake"
|
data/lib/cell/erb/template.rb
CHANGED
@@ -3,14 +3,46 @@ require "erbse"
|
|
3
3
|
module Cell
|
4
4
|
# Erb contains helpers that are messed up in Rails and do escaping.
|
5
5
|
module Erb
|
6
|
+
# This is to prevent multiple renders to share the same output_buffer.
|
7
|
+
# I am still trying to find a way to avoid output buffers.
|
8
|
+
def render_template(*)
|
9
|
+
old_output_buffer = @output_buffer
|
10
|
+
super
|
11
|
+
ensure
|
12
|
+
@output_buffer = old_output_buffer
|
13
|
+
end
|
14
|
+
|
15
|
+
def template_options_for(options)
|
16
|
+
{
|
17
|
+
template_class: ::Cell::Erb::Template,
|
18
|
+
escape_html: false,
|
19
|
+
escape_attrs: false,
|
20
|
+
suffix: "erb"
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
6
24
|
# this is capture copied from AV:::CaptureHelper without doing escaping.
|
7
|
-
# TODO: re-implement capture and return content instead of the OB rubbish.
|
8
25
|
def capture(*args)
|
9
26
|
value = nil
|
10
27
|
buffer = with_output_buffer { value = yield(*args) }
|
11
|
-
|
12
|
-
|
13
|
-
|
28
|
+
|
29
|
+
return buffer.to_s if buffer.size > 0
|
30
|
+
value # this applies for "Beachparty" string-only statements.
|
31
|
+
end
|
32
|
+
|
33
|
+
def with_output_buffer(block_buffer=ViewModel::OutputBuffer.new)
|
34
|
+
@output_buffer, old_buffer = block_buffer, @output_buffer
|
35
|
+
yield
|
36
|
+
@output_buffer = old_buffer
|
37
|
+
|
38
|
+
block_buffer
|
39
|
+
end
|
40
|
+
|
41
|
+
# Below:
|
42
|
+
# Rails specific helper fixes. I hate that. I can't tell you how much I hate those helpers,
|
43
|
+
# and their blind escaping for every possible string within the application.
|
44
|
+
def content_tag(name, content_or_options_with_block=nil, options=nil, escape=false, &block)
|
45
|
+
super
|
14
46
|
end
|
15
47
|
|
16
48
|
def form_tag_with_body(html_options, content)
|
@@ -33,21 +65,15 @@ module Cell
|
|
33
65
|
require_template_library 'erbse'
|
34
66
|
end
|
35
67
|
|
36
|
-
# :engine_class can be passed via
|
37
|
-
#
|
38
68
|
# Tilt.new("#{base}/#{prefix}/#{view}", engine_class: Erbse::Eruby)
|
39
69
|
def prepare
|
40
|
-
|
41
|
-
# engine_class = ::Erubis::EscapedEruby if options.delete(:escape_html)
|
42
|
-
@template = (engine_class || ::Erbse::Template).new(data, options)
|
70
|
+
@template = ::Erbse::Template.new(data, options)
|
43
71
|
end
|
44
72
|
|
45
73
|
def precompiled_template(locals)
|
74
|
+
# puts "@@@@@ #{@template.().inspect}"
|
46
75
|
@template.call
|
47
76
|
end
|
48
77
|
end
|
49
78
|
end
|
50
|
-
end
|
51
|
-
|
52
|
-
Tilt.register Cell::Erb::Template, "erb"
|
53
|
-
# Tilt.prefer Cell::Erb::Template
|
79
|
+
end
|
data/lib/cell/erb/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
<b>Questions: <%= render :render_in_render_2 %></b>
|
@@ -0,0 +1 @@
|
|
1
|
+
Yes!
|
@@ -31,4 +31,8 @@ Weiter!
|
|
31
31
|
<%= breadcrumbs %>
|
32
32
|
|
33
33
|
<%= current_page %>
|
34
|
-
<%= form_tag_with_body( {url: "/rails/escapes/too/much"}, %{<input type="button"/>}).html_safe %>
|
34
|
+
<%= form_tag_with_body( {url: "/rails/escapes/too/much"}, %{<input type="button"/>}).html_safe %>
|
35
|
+
|
36
|
+
<%= form_for OpenStruct.new, url: "/", as: "open" do |f| %>
|
37
|
+
<%= f.text_field :id %>
|
38
|
+
<% end %>
|
@@ -4,6 +4,9 @@ class SongCell < Cell::ViewModel
|
|
4
4
|
include ActionView::Helpers::FormHelper
|
5
5
|
include Cell::Erb
|
6
6
|
|
7
|
+
def protect_against_forgery?
|
8
|
+
end
|
9
|
+
|
7
10
|
def with_form_tag_and_content_tag
|
8
11
|
render
|
9
12
|
end
|
@@ -36,6 +39,10 @@ class SongCell < Cell::ViewModel
|
|
36
39
|
render
|
37
40
|
end
|
38
41
|
|
42
|
+
def render_in_render
|
43
|
+
render
|
44
|
+
end
|
45
|
+
|
39
46
|
private
|
40
47
|
def cap
|
41
48
|
"yay, #{with_output_buffer { yield } }"
|
data/test/erb_test.rb
CHANGED
@@ -4,9 +4,12 @@ class ErbTest < MiniTest::Spec
|
|
4
4
|
let (:controller) { ApplicationController.new.tap { |ctl| ctl.send("request=", ActionDispatch::Request.new({})) } }
|
5
5
|
let (:song_cell) { SongCell.new(controller) }
|
6
6
|
|
7
|
+
# render in render
|
8
|
+
it { song_cell.(:render_in_render).must_equal "<b>Questions: Yes!</b>" }
|
7
9
|
|
8
10
|
# URL helpers work in cell instance.
|
9
|
-
|
11
|
+
# -- this is actually covered well enough in cells, and is unrelated to ERB.
|
12
|
+
# it { song_cell.songs_path.must_equal "/songs" }
|
10
13
|
|
11
14
|
# content_tag { }
|
12
15
|
it { song_cell.(:with_content_tag).must_equal "<div>Beachparty</div>" }
|
@@ -27,6 +30,12 @@ class ErbTest < MiniTest::Spec
|
|
27
30
|
form_with_body_tag = "<form url=\"/rails/escapes/too/much\" method=\"post\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /><input type=\"button\"/></form>"
|
28
31
|
form_with_body_tag = "<form method=\"post\" url=\"/rails/escapes/too/much\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div><input type=\"button\"/></form>" if ActionPack::VERSION::MAJOR == 3
|
29
32
|
|
33
|
+
form_for_tag = "<form class=\"new_open\" id=\"new_open\" action=\"/\" accept-charset=\"UTF-8\" method=\"post\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" />
|
34
|
+
<input type=\"text\" name=\"open[id]\" id=\"open_id\" />
|
35
|
+
</form>"
|
36
|
+
form_for_tag = "<form accept-charset=\"UTF-8\" action=\"/\" class=\"new_open\" id=\"new_open\" method=\"post\"><div style=\"margin:0;padding:0;display:inline\"><input name=\"utf8\" type=\"hidden\" value=\"✓\" /></div>
|
37
|
+
<input id=\"open_id\" name=\"open[id]\" size=\"30\" type=\"text\" />
|
38
|
+
</form>" if ActionPack::VERSION::MAJOR == 3
|
30
39
|
|
31
40
|
song_cell.(:with_form_tag_and_content_tag).must_equal %{Word.
|
32
41
|
|
@@ -52,7 +61,9 @@ Weiter!
|
|
52
61
|
<a href=\"/1\">1</a>+<a href=\"/2\">2</a>
|
53
62
|
|
54
63
|
<b>No current page!<b>
|
55
|
-
#{form_with_body_tag}
|
64
|
+
#{form_with_body_tag}
|
65
|
+
|
66
|
+
#{form_for_tag}}
|
56
67
|
end
|
57
68
|
end
|
58
69
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cells-erb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cells
|
@@ -17,14 +17,14 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 4.0.0.
|
20
|
+
version: 4.0.0.beta6
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 4.0.0.
|
27
|
+
version: 4.0.0.beta6
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: erbse
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,7 +78,6 @@ extra_rdoc_files: []
|
|
78
78
|
files:
|
79
79
|
- ".gitignore"
|
80
80
|
- ".travis.yml"
|
81
|
-
- Appraisals
|
82
81
|
- CHANGES.md
|
83
82
|
- Gemfile
|
84
83
|
- LICENSE.txt
|
@@ -93,6 +92,8 @@ files:
|
|
93
92
|
- lib/cell/erb/version.rb
|
94
93
|
- lib/cells-erb.rb
|
95
94
|
- test/dummy/Rakefile
|
95
|
+
- test/dummy/app/cells/song/render_in_render.erb
|
96
|
+
- test/dummy/app/cells/song/render_in_render_2.erb
|
96
97
|
- test/dummy/app/cells/song/with_content_tag.erb
|
97
98
|
- test/dummy/app/cells/song/with_content_tag_and_content_tag.erb
|
98
99
|
- test/dummy/app/cells/song/with_form_for_block.erb
|
@@ -134,6 +135,8 @@ specification_version: 4
|
|
134
135
|
summary: Tilt binding for Erbse.
|
135
136
|
test_files:
|
136
137
|
- test/dummy/Rakefile
|
138
|
+
- test/dummy/app/cells/song/render_in_render.erb
|
139
|
+
- test/dummy/app/cells/song/render_in_render_2.erb
|
137
140
|
- test/dummy/app/cells/song/with_content_tag.erb
|
138
141
|
- test/dummy/app/cells/song/with_content_tag_and_content_tag.erb
|
139
142
|
- test/dummy/app/cells/song/with_form_for_block.erb
|
data/Appraisals
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
appraise 'rails-3.2' do
|
2
|
-
gem 'railties', '~> 3.2'
|
3
|
-
gem 'tzinfo'
|
4
|
-
gem 'minitest', '4.7.5'
|
5
|
-
end
|
6
|
-
|
7
|
-
appraise "rails-4.0" do
|
8
|
-
gem 'railties', '~> 4.0.0'
|
9
|
-
gem 'activemodel'
|
10
|
-
gem 'minitest', '4.7.5'
|
11
|
-
end
|
12
|
-
|
13
|
-
appraise "rails-4.1" do
|
14
|
-
gem 'railties', '~> 4.1.0'
|
15
|
-
gem 'activemodel'
|
16
|
-
gem 'minitest', '~> 5.2'
|
17
|
-
end
|
18
|
-
|
19
|
-
appraise "rails-4.2" do
|
20
|
-
gem 'railties', '~> 4.2.0'
|
21
|
-
gem 'activemodel'
|
22
|
-
gem 'minitest', '~> 5.2'
|
23
|
-
end
|