pivotal-erector 0.5.1 → 0.6.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/README.txt +5 -5
- data/VERSION.yml +2 -2
- data/bin/{erect → erector} +0 -0
- data/lib/erector/erect.rb +1 -1
- data/lib/erector/erected.rb +1 -1
- data/lib/erector/rails/extensions/action_controller.rb +25 -7
- data/lib/erector/rails/extensions/{widget.rb → rails_widget/helpers.rb} +2 -9
- data/lib/erector/rails/extensions/{widget/2.2.0/widget.rb → rails_widget.rb} +4 -2
- data/lib/erector/rails/rails_version.rb +6 -0
- data/lib/erector/rails/template_handlers/action_view_template_handler.rb +43 -11
- data/lib/erector/rails.rb +2 -1
- data/lib/erector/version.rb +1 -1
- data/lib/erector/widget.rb +213 -73
- data/lib/erector/widgets/table.rb +3 -3
- data/spec/erector/indentation_spec.rb +39 -24
- data/spec/erector/widget_spec.rb +197 -64
- data/spec/erector/widgets/table_spec.rb +3 -3
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/spec_suite.rb +6 -12
- metadata +18 -30
- data/lib/erector/rails/extensions/action_controller/1.2.5/action_controller.rb +0 -17
- data/lib/erector/rails/extensions/action_controller/2.2.0/action_controller.rb +0 -26
- data/lib/erector/rails/extensions/widget/1.2.5/widget.rb +0 -18
- data/lib/erector/rails/supported_rails_versions.rb +0 -14
- data/lib/erector/rails/template_handlers/1.2.5/action_view_template_handler.rb +0 -32
- data/lib/erector/rails/template_handlers/2.0.0/action_view_template_handler.rb +0 -36
- data/lib/erector/rails/template_handlers/2.1.0/action_view_template_handler.rb +0 -31
- data/lib/erector/rails/template_handlers/2.2.0/action_view_template_handler.rb +0 -46
- data/spec/erect/erect_spec.rb +0 -145
- data/spec/erect/erected_spec.rb +0 -80
- data/spec/erect/rhtml_parser_spec.rb +0 -318
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pivotal-erector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Chaffee
|
@@ -12,8 +12,8 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2009-
|
16
|
-
default_executable:
|
15
|
+
date: 2009-05-06 00:00:00 -07:00
|
16
|
+
default_executable: erector
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: treetop
|
@@ -26,9 +26,9 @@ dependencies:
|
|
26
26
|
version: 1.2.3
|
27
27
|
version:
|
28
28
|
description: Html Builder library.
|
29
|
-
email: erector
|
29
|
+
email: erector@googlegroups.com
|
30
30
|
executables:
|
31
|
-
-
|
31
|
+
- erector
|
32
32
|
extensions: []
|
33
33
|
|
34
34
|
extra_rdoc_files:
|
@@ -36,7 +36,7 @@ extra_rdoc_files:
|
|
36
36
|
files:
|
37
37
|
- README.txt
|
38
38
|
- VERSION.yml
|
39
|
-
- bin/
|
39
|
+
- bin/erector
|
40
40
|
- lib/erector.rb
|
41
41
|
- lib/erector/erect.rb
|
42
42
|
- lib/erector/erected.rb
|
@@ -44,17 +44,10 @@ files:
|
|
44
44
|
- lib/erector/indenting.rb
|
45
45
|
- lib/erector/rails.rb
|
46
46
|
- lib/erector/rails/extensions/action_controller.rb
|
47
|
-
- lib/erector/rails/extensions/action_controller/1.2.5/action_controller.rb
|
48
|
-
- lib/erector/rails/extensions/action_controller/2.2.0/action_controller.rb
|
49
47
|
- lib/erector/rails/extensions/action_view.rb
|
50
|
-
- lib/erector/rails/extensions/
|
51
|
-
- lib/erector/rails/extensions/
|
52
|
-
- lib/erector/rails/
|
53
|
-
- lib/erector/rails/supported_rails_versions.rb
|
54
|
-
- lib/erector/rails/template_handlers/1.2.5/action_view_template_handler.rb
|
55
|
-
- lib/erector/rails/template_handlers/2.0.0/action_view_template_handler.rb
|
56
|
-
- lib/erector/rails/template_handlers/2.1.0/action_view_template_handler.rb
|
57
|
-
- lib/erector/rails/template_handlers/2.2.0/action_view_template_handler.rb
|
48
|
+
- lib/erector/rails/extensions/rails_widget.rb
|
49
|
+
- lib/erector/rails/extensions/rails_widget/helpers.rb
|
50
|
+
- lib/erector/rails/rails_version.rb
|
58
51
|
- lib/erector/rails/template_handlers/action_view_template_handler.rb
|
59
52
|
- lib/erector/raw_string.rb
|
60
53
|
- lib/erector/rhtml.treetop
|
@@ -65,17 +58,15 @@ files:
|
|
65
58
|
- lib/erector/widgets.rb
|
66
59
|
- lib/erector/widgets/table.rb
|
67
60
|
- spec/core_spec_suite.rb
|
68
|
-
- spec/erect/erect_spec.rb
|
69
|
-
- spec/erect/erected_spec.rb
|
70
|
-
- spec/erect/rhtml_parser_spec.rb
|
71
61
|
- spec/erector/indentation_spec.rb
|
72
62
|
- spec/erector/unicode_builder_spec.rb
|
73
63
|
- spec/erector/widget_spec.rb
|
74
64
|
- spec/erector/widgets/table_spec.rb
|
75
65
|
- spec/rails_spec_suite.rb
|
66
|
+
- spec/spec.opts
|
76
67
|
- spec/spec_helper.rb
|
77
68
|
- spec/spec_suite.rb
|
78
|
-
has_rdoc:
|
69
|
+
has_rdoc: false
|
79
70
|
homepage: http://erector.rubyforge.org/
|
80
71
|
post_install_message:
|
81
72
|
rdoc_options:
|
@@ -99,20 +90,17 @@ requirements: []
|
|
99
90
|
rubyforge_project:
|
100
91
|
rubygems_version: 1.2.0
|
101
92
|
signing_key:
|
102
|
-
specification_version:
|
93
|
+
specification_version: 3
|
103
94
|
summary: Html Builder library.
|
104
95
|
test_files:
|
96
|
+
- spec/core_spec_suite.rb
|
105
97
|
- spec/erector
|
106
|
-
- spec/erector/
|
107
|
-
- spec/erector/widgets/table_spec.rb
|
98
|
+
- spec/erector/indentation_spec.rb
|
108
99
|
- spec/erector/unicode_builder_spec.rb
|
109
100
|
- spec/erector/widget_spec.rb
|
110
|
-
- spec/erector/
|
101
|
+
- spec/erector/widgets
|
102
|
+
- spec/erector/widgets/table_spec.rb
|
111
103
|
- spec/rails_spec_suite.rb
|
112
|
-
- spec/
|
113
|
-
- spec/core_spec_suite.rb
|
104
|
+
- spec/spec.opts
|
114
105
|
- spec/spec_helper.rb
|
115
|
-
- spec/
|
116
|
-
- spec/erect/erected_spec.rb
|
117
|
-
- spec/erect/erect_spec.rb
|
118
|
-
- spec/erect/rhtml_parser_spec.rb
|
106
|
+
- spec/spec_suite.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
ActionController::Base.class_eval do
|
2
|
-
def render_widget(widget_class, assigns=@assigns)
|
3
|
-
@__widget_class = widget_class
|
4
|
-
@__widget_assigns = assigns
|
5
|
-
add_variables_to_assigns
|
6
|
-
render :inline => "<% @__widget_class.new(self, @__widget_assigns, _erbout).render %>"
|
7
|
-
end
|
8
|
-
|
9
|
-
def render_with_erector_widget(*options, &block)
|
10
|
-
if options.first.is_a?(Hash) && widget = options.first.delete(:widget)
|
11
|
-
render_widget widget, @assigns, &block
|
12
|
-
else
|
13
|
-
render_without_erector_widget *options, &block
|
14
|
-
end
|
15
|
-
end
|
16
|
-
alias_method_chain :render, :erector_widget
|
17
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
ActionController::Base.class_eval do
|
2
|
-
def render_widget(widget_class, assigns=nil)
|
3
|
-
@__widget_class = widget_class
|
4
|
-
if assigns
|
5
|
-
@__widget_assigns = assigns
|
6
|
-
else
|
7
|
-
@__widget_assigns = {}
|
8
|
-
variables = instance_variable_names
|
9
|
-
variables -= protected_instance_variables
|
10
|
-
variables.each do |name|
|
11
|
-
@__widget_assigns[name.sub('@', "")] = instance_variable_get(name)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
response.template.send(:_evaluate_assigns_and_ivars)
|
15
|
-
render :inline => "<% @__widget_class.new(self, @__widget_assigns, output_buffer).render %>"
|
16
|
-
end
|
17
|
-
|
18
|
-
def render_with_erector_widget(*options, &block)
|
19
|
-
if options.first.is_a?(Hash) && widget = options.first.delete(:widget)
|
20
|
-
render_widget widget, @assigns, &block
|
21
|
-
else
|
22
|
-
render_without_erector_widget *options, &block
|
23
|
-
end
|
24
|
-
end
|
25
|
-
alias_method_chain :render, :erector_widget
|
26
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Erector
|
2
|
-
Widget.class_eval do
|
3
|
-
attr_reader :_erbout
|
4
|
-
|
5
|
-
after_initialize do
|
6
|
-
@_erbout = output
|
7
|
-
end
|
8
|
-
|
9
|
-
def define_javascript_functions(*args)
|
10
|
-
begin
|
11
|
-
text raw(helpers.define_javascript_functions(*args))
|
12
|
-
rescue => e
|
13
|
-
puts e.backtrace.join("\n\t")
|
14
|
-
raise e
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Erector
|
2
|
-
module Rails
|
3
|
-
SUPPORTED_RAILS_VERSIONS = {
|
4
|
-
# "1.2.5" => {'version' => '1.2.5', 'git_tag' => 'v1.2.5'},
|
5
|
-
"1.99.0" => {'version' => '1.99.0', 'git_tag' => 'v2.0.0_RC1'},
|
6
|
-
"2.0.2" => {'version' => '2.0.2', 'git_tag' => 'v2.0.2'},
|
7
|
-
"2.1.0" => {'version' => '2.1.0', 'git_tag' => 'v2.1.0'},
|
8
|
-
"2.2.0" => {'version' => '2.2.0', 'git_tag' => 'v2.2.0'},
|
9
|
-
"2.2.2" => {'version' => '2.2.2', 'git_tag' => 'v2.2.2'},
|
10
|
-
"2.3.2" => {'version' => '2.3.2', 'git_tag' => 'v2.3.2'},
|
11
|
-
# "edge" => {'version' => 'edge', 'git_tag' => 'master'}, #TODO: Readd edge support
|
12
|
-
}
|
13
|
-
end
|
14
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module ActionView #:nodoc:
|
2
|
-
module TemplateHandlers #:nodoc:
|
3
|
-
class Erector
|
4
|
-
def self.line_offset
|
5
|
-
2
|
6
|
-
end
|
7
|
-
|
8
|
-
attr_reader :view
|
9
|
-
def initialize(view)
|
10
|
-
@view = view
|
11
|
-
end
|
12
|
-
|
13
|
-
def compilable?
|
14
|
-
true
|
15
|
-
end
|
16
|
-
|
17
|
-
ActionView::Base.register_template_handler :rb, ActionView::TemplateHandlers::Erector
|
18
|
-
|
19
|
-
def render(template, local_assigns)
|
20
|
-
relative_path_parts = view.first_render.split('/')
|
21
|
-
require_dependency view.template_file_path
|
22
|
-
|
23
|
-
dot_rb = /\.rb$/
|
24
|
-
widget_class = relative_path_parts.inject(Views) do |mod, node|
|
25
|
-
mod.const_get(node.gsub(dot_rb, '').gsub(".html", "").camelize)
|
26
|
-
end
|
27
|
-
render_method = view.is_partial_template? ? 'render_partial' : 'render'
|
28
|
-
widget_class.new(view, view.assigns).to_s(render_method)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module ActionView #:nodoc:
|
2
|
-
module TemplateHandlers #:nodoc:
|
3
|
-
class Erector < TemplateHandler
|
4
|
-
def self.line_offset
|
5
|
-
2
|
6
|
-
end
|
7
|
-
|
8
|
-
attr_reader :view
|
9
|
-
def initialize(view)
|
10
|
-
@view = view
|
11
|
-
end
|
12
|
-
|
13
|
-
def compilable?
|
14
|
-
true
|
15
|
-
end
|
16
|
-
undef :compile
|
17
|
-
|
18
|
-
ActionView::Base.register_template_handler :rb, ActionView::TemplateHandlers::Erector
|
19
|
-
|
20
|
-
def render(template, local_assigns)
|
21
|
-
relative_path_parts = view.first_render.split('/')
|
22
|
-
file_name = relative_path_parts.last
|
23
|
-
require_dependency(view.template_file_path)
|
24
|
-
|
25
|
-
dot_rb = /\.rb$/
|
26
|
-
widget_class = relative_path_parts.inject(Views) do |mod, node|
|
27
|
-
mod.const_get(node.gsub(dot_rb, '').gsub(".html", "").camelize)
|
28
|
-
end
|
29
|
-
render_method = view.is_partial_template? ? 'render_partial' : 'render'
|
30
|
-
widget = widget_class.new(view, view.assigns)
|
31
|
-
widget.to_s(render_method)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
@@ -1,31 +0,0 @@
|
|
1
|
-
module ActionView #:nodoc:
|
2
|
-
module TemplateHandlers #:nodoc:
|
3
|
-
class Erector < TemplateHandler
|
4
|
-
include Compilable
|
5
|
-
def self.line_offset
|
6
|
-
2
|
7
|
-
end
|
8
|
-
|
9
|
-
ActionView::Template.instance_eval do
|
10
|
-
register_template_handler :rb, ActionView::TemplateHandlers::Erector
|
11
|
-
end
|
12
|
-
|
13
|
-
def compile(template)
|
14
|
-
relative_path_parts = template.path.split('/')
|
15
|
-
|
16
|
-
is_partial = relative_path_parts.last =~ /^_/
|
17
|
-
require_dependency File.expand_path(template.filename)
|
18
|
-
|
19
|
-
widget_class_parts = relative_path_parts.inject(['Views']) do |class_parts, node|
|
20
|
-
class_parts << node.gsub(/^_/, "").gsub(/(\.html)?\.rb$/, '').camelize
|
21
|
-
class_parts
|
22
|
-
end
|
23
|
-
widget_class_name = widget_class_parts.join("::")
|
24
|
-
render_method = is_partial ? 'render_partial' : 'render'
|
25
|
-
|
26
|
-
erb_template = "<% #{widget_class_name}.new(self, controller.assigns, _erbout).#{render_method} %>"
|
27
|
-
::ERB.new(erb_template, nil, ActionView::Base.erb_trim_mode).src
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module ActionView #:nodoc:
|
2
|
-
module TemplateHandlers #:nodoc:
|
3
|
-
class Erector < TemplateHandler
|
4
|
-
include Compilable
|
5
|
-
def self.line_offset
|
6
|
-
2
|
7
|
-
end
|
8
|
-
|
9
|
-
ActionView::Template.instance_eval do
|
10
|
-
register_template_handler :rb, ActionView::TemplateHandlers::Erector
|
11
|
-
end
|
12
|
-
|
13
|
-
def compile(template)
|
14
|
-
relative_path_parts = template.path.split('/')
|
15
|
-
|
16
|
-
is_partial = relative_path_parts.last =~ /^_/
|
17
|
-
require_dependency File.expand_path(template.filename)
|
18
|
-
|
19
|
-
widget_class_parts = relative_path_parts.inject(['Views']) do |class_parts, node|
|
20
|
-
class_parts << node.gsub(/^_/, "").gsub(/(\.html)?\.rb$/, '').camelize
|
21
|
-
class_parts
|
22
|
-
end
|
23
|
-
widget_class_name = widget_class_parts.join("::")
|
24
|
-
render_method = is_partial ? 'render_partial' : 'render'
|
25
|
-
|
26
|
-
erb_template = <<-ERB
|
27
|
-
<%
|
28
|
-
assigns = instance_variables.inject({}) do |hash, name|
|
29
|
-
hash[name.sub('@', "")] = instance_variable_get(name)
|
30
|
-
hash
|
31
|
-
end
|
32
|
-
|
33
|
-
widget = #{widget_class_name}.new(self, assigns, output_buffer)
|
34
|
-
widget.#{render_method}
|
35
|
-
%>
|
36
|
-
ERB
|
37
|
-
::ERB.new(
|
38
|
-
erb_template,
|
39
|
-
nil,
|
40
|
-
::ActionView::TemplateHandlers::ERB.erb_trim_mode,
|
41
|
-
"@output_buffer"
|
42
|
-
).src
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
data/spec/erect/erect_spec.rb
DELETED
@@ -1,145 +0,0 @@
|
|
1
|
-
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
2
|
-
|
3
|
-
module Erector
|
4
|
-
describe Erect do
|
5
|
-
it "parses an empty command line" do
|
6
|
-
erect = Erect.new([])
|
7
|
-
erect.files.should == []
|
8
|
-
end
|
9
|
-
|
10
|
-
it "parses a command line with one filename on it" do
|
11
|
-
erect = Erect.new(["foo.html"])
|
12
|
-
erect.files.should == ["foo.html"]
|
13
|
-
end
|
14
|
-
|
15
|
-
it "parses a command line with several filenames on it" do
|
16
|
-
erect = Erect.new(["foo.html", "bar/baz.html"])
|
17
|
-
erect.files.should == ["foo.html", "bar/baz.html"]
|
18
|
-
end
|
19
|
-
|
20
|
-
it "is verbose by default, but quiet when told" do
|
21
|
-
Erect.new([]).verbose.should be_true
|
22
|
-
Erect.new(["-q"]).verbose.should be_false
|
23
|
-
end
|
24
|
-
|
25
|
-
it "parses a command line with several filenames and an option on it" do
|
26
|
-
erect = Erect.new(["-q", "foo.html", "bar/baz.html"])
|
27
|
-
erect.files.should == ["foo.html", "bar/baz.html"]
|
28
|
-
end
|
29
|
-
|
30
|
-
def capture
|
31
|
-
output = StringIO.new
|
32
|
-
$stdout = output
|
33
|
-
yield
|
34
|
-
output.string
|
35
|
-
ensure
|
36
|
-
$stdout = STDOUT
|
37
|
-
end
|
38
|
-
|
39
|
-
it "exits immediately from help" do
|
40
|
-
output = capture do
|
41
|
-
lambda {
|
42
|
-
erect = Erect.new(["-h"])
|
43
|
-
}.should raise_error(SystemExit)
|
44
|
-
end
|
45
|
-
output.should =~ /^Usage/
|
46
|
-
end
|
47
|
-
|
48
|
-
it "exits immediately from --version" do
|
49
|
-
output = capture do
|
50
|
-
lambda {
|
51
|
-
erect = Erect.new(["--version"])
|
52
|
-
}.should raise_error(SystemExit)
|
53
|
-
end
|
54
|
-
output.should == Erector::VERSION + "\n"
|
55
|
-
end
|
56
|
-
|
57
|
-
it "changes to html output" do
|
58
|
-
erect = Erect.new(["--to-html"])
|
59
|
-
erect.mode.should == :to_html
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
describe "Erect functionally" do
|
65
|
-
|
66
|
-
attr_reader :dir, :fred_html, :wilma_rhtml, :barney_html_erb, :fred_rb
|
67
|
-
|
68
|
-
def create(file, body="hi")
|
69
|
-
File.open(file, "w") do |f|
|
70
|
-
f.puts(body)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
before :all do
|
75
|
-
@dir = Dir.tmpdir + "/#{Time.now.to_i}" + "/explode"
|
76
|
-
@fred_html = "#{dir}/fred.html"
|
77
|
-
@wilma_rhtml = "#{dir}/wilma.rhtml"
|
78
|
-
@barney_html_erb = "#{dir}/barney.html.erb"
|
79
|
-
@fred_rb = "#{dir}/fred.rb"
|
80
|
-
|
81
|
-
FileUtils.mkdir_p(dir)
|
82
|
-
create(fred_html)
|
83
|
-
create(wilma_rhtml)
|
84
|
-
create(barney_html_erb)
|
85
|
-
create(fred_rb, "class Fred < Erector::Widget\ndef render\ndiv 'dino'\nend\nend")
|
86
|
-
end
|
87
|
-
|
88
|
-
it "explodes dirs into .html etc. files when in to-rb mode" do
|
89
|
-
erect = Erect.new(["--to-erector", dir])
|
90
|
-
erect.files.sort.should == [barney_html_erb, fred_html, wilma_rhtml]
|
91
|
-
end
|
92
|
-
|
93
|
-
it "explodes dirs into .rb files when in to-html mode" do
|
94
|
-
erect = Erect.new(["--to-html", dir])
|
95
|
-
erect.files.should == [fred_rb]
|
96
|
-
end
|
97
|
-
|
98
|
-
it "outputs .rb files in the same directory as the input .html files" do
|
99
|
-
erect = Erect.new(["--to-erector", "-q", fred_html])
|
100
|
-
erect.run
|
101
|
-
File.exist?(fred_rb).should be_true
|
102
|
-
File.read(fred_rb).should include("text 'hi'")
|
103
|
-
end
|
104
|
-
|
105
|
-
it "outputs .html files in the same directory as the input .rb files" do
|
106
|
-
betty_rb = "#{dir}/betty.rb"
|
107
|
-
betty_html = "#{dir}/betty.html"
|
108
|
-
create(betty_rb, "class Betty < Erector::Widget\ndef render\ndiv 'bam bam'\nend\nend")
|
109
|
-
|
110
|
-
erect = Erect.new(["--to-html", "-q", betty_rb])
|
111
|
-
erect.run
|
112
|
-
File.exist?(betty_html).should be_true
|
113
|
-
File.read(betty_html).should == "<div>bam bam</div>\n"
|
114
|
-
end
|
115
|
-
|
116
|
-
it "outputs .html files in the given directory" do
|
117
|
-
create(fred_rb, "class Fred < Erector::Widget\ndef render\ndiv 'dino'\nend\nend")
|
118
|
-
|
119
|
-
|
120
|
-
out_dir = "#{dir}/out"
|
121
|
-
out_file = "#{out_dir}/fred.html"
|
122
|
-
Erect.new([]).output_dir.should be_nil
|
123
|
-
erect = Erect.new(["--to-html", "-o", "#{out_dir}", "-q", fred_rb])
|
124
|
-
erect.output_dir.should == out_dir
|
125
|
-
erect.run
|
126
|
-
File.exist?(out_file).should be_true
|
127
|
-
File.read(out_file).should == "<div>dino</div>\n"
|
128
|
-
end
|
129
|
-
|
130
|
-
it "supports the --add-to-svn option"
|
131
|
-
it "supports the --delete-original option"
|
132
|
-
|
133
|
-
it "skips rendering classes that aren't widgets" do
|
134
|
-
mr_slate_rb = "#{dir}/mr_slate.rb"
|
135
|
-
mr_slate_html = "#{dir}/mr_slate.html"
|
136
|
-
create(mr_slate_rb, "class MrSlate\nend")
|
137
|
-
erect = Erect.new(["-q", "--to-html", mr_slate_rb])
|
138
|
-
erect.run
|
139
|
-
File.exist?(mr_slate_html).should be_false
|
140
|
-
end
|
141
|
-
|
142
|
-
it "properly indents lines beginning with for, unless, etc."
|
143
|
-
it "escapes single quotes inside text strings"
|
144
|
-
end
|
145
|
-
end
|
data/spec/erect/erected_spec.rb
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
require File.expand_path("#{File.dirname(__FILE__)}/../spec_helper")
|
2
|
-
|
3
|
-
module Erector
|
4
|
-
describe Erected do
|
5
|
-
|
6
|
-
it "picks the right file name" do
|
7
|
-
Erected.new("foo.html.erb").filename.should == "foo.rb"
|
8
|
-
Erected.new("foo.html").filename.should == "foo.rb"
|
9
|
-
Erected.new("foo.bar.html").filename.should == "foo.rb"
|
10
|
-
Erected.new("foo_bar.html.erb").filename.should == "foo_bar.rb"
|
11
|
-
Erected.new("stuff/foo_bar.html.erb").filename.should == "stuff/foo_bar.rb"
|
12
|
-
end
|
13
|
-
|
14
|
-
it "picks a nice class name" do
|
15
|
-
Erected.new("foo.html.erb").classname.should == "Foo"
|
16
|
-
Erected.new("foo.html").classname.should == "Foo"
|
17
|
-
Erected.new("foo.bar.html").classname.should == "Foo"
|
18
|
-
Erected.new("foo_bar.html.erb").classname.should == "FooBar"
|
19
|
-
Erected.new("stuff/foo_bar.html.erb").classname.should == "FooBar"
|
20
|
-
end
|
21
|
-
|
22
|
-
it "picks an even nicer class name if it's in a views dir" do
|
23
|
-
Erected.new("app/views/stuff/foo_bar.html.erb").classname.should == "Views::Stuff::FooBar"
|
24
|
-
Erected.new("views/stuff/foo_bar.html.erb").classname.should == "Views::Stuff::FooBar"
|
25
|
-
end
|
26
|
-
|
27
|
-
def convert(dir, input, output)
|
28
|
-
dir = Dir.tmpdir + "/#{Time.now.to_i}" + "/#{dir}"
|
29
|
-
|
30
|
-
FileUtils.mkdir_p(dir)
|
31
|
-
html = "#{dir}/dummy.html"
|
32
|
-
rb = "#{dir}/dummy.rb"
|
33
|
-
|
34
|
-
File.open(html, "w") do |f|
|
35
|
-
f.puts(input)
|
36
|
-
end
|
37
|
-
|
38
|
-
@e = Erected.new(html)
|
39
|
-
@e.convert
|
40
|
-
|
41
|
-
File.read(rb).should == output
|
42
|
-
end
|
43
|
-
|
44
|
-
it "converts a normal file" do
|
45
|
-
convert(".",
|
46
|
-
"<div>hello</div>",
|
47
|
-
"class Dummy < Erector::Widget\n" +
|
48
|
-
" def render\n" +
|
49
|
-
" div do\n" +
|
50
|
-
" text 'hello'\n" +
|
51
|
-
" end\n" +
|
52
|
-
" end\n" +
|
53
|
-
"end\n"
|
54
|
-
)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "converts a views file" do
|
58
|
-
convert("app/views/foos",
|
59
|
-
"<div>hello</div>",
|
60
|
-
"class Views::Foos::Dummy < Erector::Widget\n" +
|
61
|
-
" def render\n" +
|
62
|
-
" div do\n" +
|
63
|
-
" text 'hello'\n" +
|
64
|
-
" end\n" +
|
65
|
-
" end\n" +
|
66
|
-
"end\n"
|
67
|
-
)
|
68
|
-
end
|
69
|
-
|
70
|
-
# todo: figure out if there is any such thing as unparsable HTML anymore
|
71
|
-
# it "raises an exception if given unparsable HTML" do
|
72
|
-
# begin
|
73
|
-
# convert(".", "<", "")
|
74
|
-
# rescue => e
|
75
|
-
# e.to_s.should include("Could not parse")
|
76
|
-
# end
|
77
|
-
# end
|
78
|
-
|
79
|
-
end
|
80
|
-
end
|