erector 0.5.1 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. data/README.txt +6 -5
  2. data/VERSION.yml +5 -0
  3. data/bin/{erect → erector} +0 -0
  4. data/lib/erector.rb +3 -1
  5. data/lib/erector/erect.rb +1 -1
  6. data/lib/erector/erected.rb +1 -1
  7. data/lib/erector/rails.rb +2 -1
  8. data/lib/erector/rails/extensions/action_controller.rb +25 -7
  9. data/lib/erector/rails/extensions/rails_widget.rb +38 -0
  10. data/lib/erector/rails/extensions/{widget.rb → rails_widget/helpers.rb} +2 -9
  11. data/lib/erector/rails/rails_version.rb +6 -0
  12. data/lib/erector/rails/template_handlers/action_view_template_handler.rb +43 -11
  13. data/lib/erector/version.rb +4 -2
  14. data/lib/erector/widget.rb +221 -74
  15. data/lib/erector/widgets/table.rb +34 -8
  16. data/spec/erector/indentation_spec.rb +39 -24
  17. data/spec/erector/widget_spec.rb +197 -64
  18. data/spec/erector/widgets/table_spec.rb +3 -3
  19. data/spec/spec.opts +1 -0
  20. data/spec/spec_helper.rb +2 -4
  21. data/spec/spec_suite.rb +6 -12
  22. metadata +24 -70
  23. data/lib/erector/rails/extensions/action_controller/1.2.5/action_controller.rb +0 -17
  24. data/lib/erector/rails/extensions/action_controller/2.2.0/action_controller.rb +0 -26
  25. data/lib/erector/rails/extensions/widget/1.2.5/widget.rb +0 -18
  26. data/lib/erector/rails/extensions/widget/2.2.0/widget.rb +0 -23
  27. data/lib/erector/rails/supported_rails_versions.rb +0 -13
  28. data/lib/erector/rails/template_handlers/1.2.5/action_view_template_handler.rb +0 -32
  29. data/lib/erector/rails/template_handlers/2.0.0/action_view_template_handler.rb +0 -36
  30. data/lib/erector/rails/template_handlers/2.1.0/action_view_template_handler.rb +0 -31
  31. data/lib/erector/rails/template_handlers/2.2.0/action_view_template_handler.rb +0 -46
  32. data/spec/erect/erect_spec.rb +0 -145
  33. data/spec/erect/erected_spec.rb +0 -80
  34. data/spec/erect/rhtml_parser_spec.rb +0 -318
@@ -23,7 +23,7 @@ module TableSpec
23
23
  describe "with custom heading" do
24
24
  attr_reader :html, :doc
25
25
  before do
26
- widget = CustomHeadingTable.new(nil, :row_objects => [])
26
+ widget = CustomHeadingTable.new(:row_objects => [])
27
27
  @html = widget.to_s
28
28
  @doc = Hpricot(html)
29
29
  end
@@ -45,7 +45,7 @@ module TableSpec
45
45
  attr_reader :html, :doc
46
46
  before do
47
47
  @object1 = Struct.new(:first_name).new("Hello")
48
- widget = CustomCellTable.new(nil, :row_objects => [@object1])
48
+ widget = CustomCellTable.new(:row_objects => [@object1])
49
49
  @html = widget.to_s
50
50
  @doc = Hpricot(html)
51
51
  end
@@ -63,7 +63,7 @@ module TableSpec
63
63
  @object1 = Struct.new(:first_name, :last_name, :email).new(1, 2, 3)
64
64
  @object2 = Struct.new(:first_name, :last_name, :email).new(4, 5, 6)
65
65
  @object3 = Struct.new(:first_name, :last_name, :email).new(7, 8, 9)
66
- widget = DefaultsTestTable.new(nil, :row_objects => [@object1, @object2, @object3])
66
+ widget = DefaultsTestTable.new(:row_objects => [@object1, @object2, @object3])
67
67
  @html = widget.to_s
68
68
  @doc = Hpricot(html)
69
69
  @table = doc.at("table")
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --backtrace
data/spec/spec_helper.rb CHANGED
@@ -2,15 +2,13 @@ dir = File.dirname(__FILE__)
2
2
  require "rubygems"
3
3
  $LOAD_PATH.unshift("#{dir}/../lib")
4
4
  require "erector"
5
- require "erector/rails"
6
5
  require "hpricot"
7
6
  require "rr"
8
7
  require 'tempfile'
9
8
  require 'ostruct'
10
- require 'treetop'
11
- require "erector/erect"
12
- require "erector/erected"
9
+ ARGV.push(*File.read("#{File.dirname(__FILE__)}/spec.opts").split("\n"))
13
10
  require "spec"
11
+ require "spec/autorun"
14
12
 
15
13
  Spec::Runner.configure do |config|
16
14
  config.mock_with :rr
data/spec/spec_suite.rb CHANGED
@@ -3,13 +3,12 @@ class SpecSuite
3
3
  def all
4
4
  system("ruby #{dir}/core_spec_suite.rb") || raise("Core Spec Suite failed")
5
5
  dir = File.dirname(__FILE__)
6
- require "#{dir}/../lib/erector/rails/supported_rails_versions"
7
- versions = Erector::Rails::SUPPORTED_RAILS_VERSIONS.keys.sort.reverse
8
- versions.each do |rails_version|
9
- puts "Running rails_spec_suite for Rails version #{rails_version}"
10
- run_with_rails_version("#{dir}/rails_spec_suite.rb", rails_version) ||
11
- "Suite failed for Rails version #{rails_version}"
12
- end
6
+ require "#{dir}/../lib/erector/rails/rails_version"
7
+
8
+ rails_version = Erector::Rails::RAILS_VERSION
9
+ puts "Running rails_spec_suite for Rails version #{rails_version}"
10
+
11
+ system("ruby #{dir}/rails_spec_suite.rb") || raise("Failed for version #{rails_version}")
13
12
  end
14
13
 
15
14
  def core
@@ -29,11 +28,6 @@ class SpecSuite
29
28
  end
30
29
 
31
30
  protected
32
- def run_with_rails_version(suite_path, rails_version)
33
- system("export RAILS_VERSION=#{rails_version} && ruby #{suite_path}") ||
34
- raise("Failed for version #{rails_version}")
35
- end
36
-
37
31
  def dir
38
32
  File.dirname(__FILE__)
39
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pivotal Labs
@@ -9,29 +9,9 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-16 00:00:00 -05:00
12
+ date: 2009-05-06 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: treetop
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.2.3
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: rake
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
15
  - !ruby/object:Gem::Dependency
36
16
  name: hoe
37
17
  type: :runtime
@@ -42,61 +22,24 @@ dependencies:
42
22
  - !ruby/object:Gem::Version
43
23
  version: 1.5.0
44
24
  version:
45
- description: Erector is a Builder-like view framework, inspired by Markaby but overcoming some of its flaws. In Erector all views are objects, not template files, which allows the full power of object-oriented programming (inheritance, modular decomposition, encapsulation) in views. See the rdoc for the Erector::Widget class to learn how to make your own widgets, and visit the project site at http://erector.rubyforge.org for more documentation.
46
- email:
47
- - alex@pivotallabs.com
25
+ description: Html Builder library.
26
+ email: erector@googlegroups.compivotallabsopensource@googlegroups.com
48
27
  executables:
49
- - erect
28
+ - erector
50
29
  extensions: []
51
30
 
52
31
  extra_rdoc_files:
53
32
  - README.txt
54
33
  files:
55
- - spec/core_spec_suite.rb
56
- - spec/erect
57
- - spec/erect/erect_spec.rb
58
- - spec/erect/erected_spec.rb
59
- - spec/erect/rhtml_parser_spec.rb
60
- - spec/erector
61
- - spec/erector/indentation_spec.rb
62
- - spec/erector/unicode_builder_spec.rb
63
- - spec/erector/widget_spec.rb
64
- - spec/erector/widgets
65
- - spec/erector/widgets/table_spec.rb
66
- - spec/rails_spec_suite.rb
67
- - spec/spec_helper.rb
68
- - spec/spec_suite.rb
69
- - lib/erector
70
34
  - lib/erector/erect.rb
71
35
  - lib/erector/erected.rb
72
- - lib/erector/extensions
73
36
  - lib/erector/extensions/object.rb
74
37
  - lib/erector/indenting.rb
75
- - lib/erector/rails
76
- - lib/erector/rails/extensions
77
- - lib/erector/rails/extensions/action_controller
78
- - lib/erector/rails/extensions/action_controller/1.2.5
79
- - lib/erector/rails/extensions/action_controller/1.2.5/action_controller.rb
80
- - lib/erector/rails/extensions/action_controller/2.2.0
81
- - lib/erector/rails/extensions/action_controller/2.2.0/action_controller.rb
82
38
  - lib/erector/rails/extensions/action_controller.rb
83
39
  - lib/erector/rails/extensions/action_view.rb
84
- - lib/erector/rails/extensions/widget
85
- - lib/erector/rails/extensions/widget/1.2.5
86
- - lib/erector/rails/extensions/widget/1.2.5/widget.rb
87
- - lib/erector/rails/extensions/widget/2.2.0
88
- - lib/erector/rails/extensions/widget/2.2.0/widget.rb
89
- - lib/erector/rails/extensions/widget.rb
90
- - lib/erector/rails/supported_rails_versions.rb
91
- - lib/erector/rails/template_handlers
92
- - lib/erector/rails/template_handlers/1.2.5
93
- - lib/erector/rails/template_handlers/1.2.5/action_view_template_handler.rb
94
- - lib/erector/rails/template_handlers/2.0.0
95
- - lib/erector/rails/template_handlers/2.0.0/action_view_template_handler.rb
96
- - lib/erector/rails/template_handlers/2.1.0
97
- - lib/erector/rails/template_handlers/2.1.0/action_view_template_handler.rb
98
- - lib/erector/rails/template_handlers/2.2.0
99
- - lib/erector/rails/template_handlers/2.2.0/action_view_template_handler.rb
40
+ - lib/erector/rails/extensions/rails_widget/helpers.rb
41
+ - lib/erector/rails/extensions/rails_widget.rb
42
+ - lib/erector/rails/rails_version.rb
100
43
  - lib/erector/rails/template_handlers/action_view_template_handler.rb
101
44
  - lib/erector/rails.rb
102
45
  - lib/erector/raw_string.rb
@@ -105,14 +48,25 @@ files:
105
48
  - lib/erector/unicode_builder.rb
106
49
  - lib/erector/version.rb
107
50
  - lib/erector/widget.rb
108
- - lib/erector/widgets
109
51
  - lib/erector/widgets/table.rb
110
52
  - lib/erector/widgets.rb
111
53
  - lib/erector.rb
112
54
  - README.txt
113
- - bin/erect
55
+ - VERSION.yml
56
+ - bin/erector
57
+ - spec/core_spec_suite.rb
58
+ - spec/erector/indentation_spec.rb
59
+ - spec/erector/unicode_builder_spec.rb
60
+ - spec/erector/widget_spec.rb
61
+ - spec/erector/widgets/table_spec.rb
62
+ - spec/rails_spec_suite.rb
63
+ - spec/spec.opts
64
+ - spec/spec_helper.rb
65
+ - spec/spec_suite.rb
114
66
  has_rdoc: true
115
67
  homepage: http://erector.rubyforge.org
68
+ licenses: []
69
+
116
70
  post_install_message:
117
71
  rdoc_options:
118
72
  - --main
@@ -134,9 +88,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
88
  requirements: []
135
89
 
136
90
  rubyforge_project: erector
137
- rubygems_version: 1.3.0
91
+ rubygems_version: 1.3.3
138
92
  signing_key:
139
- specification_version: 2
140
- summary: Erector is a Builder-like view framework, inspired by Markaby but overcoming some of its flaws
93
+ specification_version: 3
94
+ summary: Html Builder library.
141
95
  test_files: []
142
96
 
@@ -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,23 +0,0 @@
1
- module Erector
2
- Widget.class_eval do
3
- def output
4
- if helpers.respond_to?(:output_buffer)
5
- helpers.output_buffer
6
- else
7
- @output
8
- end
9
- end
10
-
11
- def capture_with_helpers(&block)
12
- if helpers
13
- helpers.capture(&block)
14
- else
15
- capture_without_helpers(&block)
16
- end
17
- end
18
- alias_method_chain :capture, :helpers
19
-
20
- # This is here to force #helpers.capture to return the output
21
- def __in_erb_template; end
22
- end
23
- end
@@ -1,13 +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
- # "edge" => {'version' => 'edge', 'git_tag' => 'master'}, #TODO: Readd edge support
11
- }
12
- end
13
- 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