erector 0.5.1 → 0.6.3

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.
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