pivotal-erector 0.5.1

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 (42) hide show
  1. data/README.txt +81 -0
  2. data/VERSION.yml +4 -0
  3. data/bin/erect +7 -0
  4. data/lib/erector/erect.rb +148 -0
  5. data/lib/erector/erected.rb +63 -0
  6. data/lib/erector/extensions/object.rb +18 -0
  7. data/lib/erector/indenting.rb +36 -0
  8. data/lib/erector/rails/extensions/action_controller/1.2.5/action_controller.rb +17 -0
  9. data/lib/erector/rails/extensions/action_controller/2.2.0/action_controller.rb +26 -0
  10. data/lib/erector/rails/extensions/action_controller.rb +8 -0
  11. data/lib/erector/rails/extensions/action_view.rb +21 -0
  12. data/lib/erector/rails/extensions/widget/1.2.5/widget.rb +18 -0
  13. data/lib/erector/rails/extensions/widget/2.2.0/widget.rb +36 -0
  14. data/lib/erector/rails/extensions/widget.rb +117 -0
  15. data/lib/erector/rails/supported_rails_versions.rb +14 -0
  16. data/lib/erector/rails/template_handlers/1.2.5/action_view_template_handler.rb +32 -0
  17. data/lib/erector/rails/template_handlers/2.0.0/action_view_template_handler.rb +36 -0
  18. data/lib/erector/rails/template_handlers/2.1.0/action_view_template_handler.rb +31 -0
  19. data/lib/erector/rails/template_handlers/2.2.0/action_view_template_handler.rb +46 -0
  20. data/lib/erector/rails/template_handlers/action_view_template_handler.rb +14 -0
  21. data/lib/erector/rails.rb +6 -0
  22. data/lib/erector/raw_string.rb +8 -0
  23. data/lib/erector/rhtml.treetop +156 -0
  24. data/lib/erector/unicode.rb +18185 -0
  25. data/lib/erector/unicode_builder.rb +67 -0
  26. data/lib/erector/version.rb +10 -0
  27. data/lib/erector/widget.rb +510 -0
  28. data/lib/erector/widgets/table.rb +96 -0
  29. data/lib/erector/widgets.rb +2 -0
  30. data/lib/erector.rb +16 -0
  31. data/spec/core_spec_suite.rb +3 -0
  32. data/spec/erect/erect_spec.rb +145 -0
  33. data/spec/erect/erected_spec.rb +80 -0
  34. data/spec/erect/rhtml_parser_spec.rb +318 -0
  35. data/spec/erector/indentation_spec.rb +136 -0
  36. data/spec/erector/unicode_builder_spec.rb +75 -0
  37. data/spec/erector/widget_spec.rb +657 -0
  38. data/spec/erector/widgets/table_spec.rb +99 -0
  39. data/spec/rails_spec_suite.rb +3 -0
  40. data/spec/spec_helper.rb +54 -0
  41. data/spec/spec_suite.rb +45 -0
  42. metadata +118 -0
@@ -0,0 +1,99 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
2
+
3
+ module TableSpec
4
+ class DefaultsTestTable < Erector::Widgets::Table
5
+ column :first_name
6
+ column :last_name
7
+ column :email
8
+ row_classes :even, :odd
9
+ end
10
+
11
+ class CustomHeadingTable < Erector::Widgets::Table
12
+ column :first_name, "Column - First Name"
13
+ column :email, lambda {|id| span id}
14
+ end
15
+
16
+ class CustomCellTable < Erector::Widgets::Table
17
+ column :first_name do |obj|
18
+ span obj.first_name
19
+ end
20
+ end
21
+
22
+ describe ::Erector::Widgets::Table do
23
+ describe "with custom heading" do
24
+ attr_reader :html, :doc
25
+ before do
26
+ widget = CustomHeadingTable.new(nil, :row_objects => [])
27
+ @html = widget.to_s
28
+ @doc = Hpricot(html)
29
+ end
30
+
31
+ it "renders a custom heading text and procs" do
32
+ table = doc.at("table")
33
+ table.search("th").map {|c| c.inner_html}.should == [
34
+ "Column - First Name",
35
+ "<span>email</span>"
36
+ ]
37
+ end
38
+
39
+ it "renders a tbody to be compatible with IE6" do
40
+ doc.at("tbody").should_not be_nil
41
+ end
42
+ end
43
+
44
+ describe "with custom cell content" do
45
+ attr_reader :html, :doc
46
+ before do
47
+ @object1 = Struct.new(:first_name).new("Hello")
48
+ widget = CustomCellTable.new(nil, :row_objects => [@object1])
49
+ @html = widget.to_s
50
+ @doc = Hpricot(html)
51
+ end
52
+
53
+ it "renders custom cell html" do
54
+ table = doc.at("table")
55
+ row = table.search("tr")[1]
56
+ row.at("td").inner_html.should == "<span>Hello</span>"
57
+ end
58
+ end
59
+
60
+ describe "with default heading and cell definitions" do
61
+ attr_reader :html, :doc
62
+ before do
63
+ @object1 = Struct.new(:first_name, :last_name, :email).new(1, 2, 3)
64
+ @object2 = Struct.new(:first_name, :last_name, :email).new(4, 5, 6)
65
+ @object3 = Struct.new(:first_name, :last_name, :email).new(7, 8, 9)
66
+ widget = DefaultsTestTable.new(nil, :row_objects => [@object1, @object2, @object3])
67
+ @html = widget.to_s
68
+ @doc = Hpricot(html)
69
+ @table = doc.at("table")
70
+ end
71
+
72
+ it "renders column titles" do
73
+ title_row = @table.at("tr")
74
+ titles = title_row.search("th").collect {|heading| heading.inner_html}
75
+ titles.should == [ "First Name", "Last Name", "Email" ]
76
+ end
77
+
78
+ it "renders data" do
79
+ data_rows = @table.search("tr")[1..-1]
80
+ cell_values = data_rows.collect do |row|
81
+ row.search("td").collect {|col| col.inner_html}
82
+ end
83
+
84
+ cell_values.should == [
85
+ ['1', '2', '3'],
86
+ ['4', '5', '6'],
87
+ ['7', '8', '9'],
88
+ ]
89
+ end
90
+
91
+ it "renders the row classes" do
92
+ data_rows = @table.search("tr")[1..-1]
93
+ data_rows[0]['class'].should == 'even'
94
+ data_rows[1]['class'].should == 'odd'
95
+ data_rows[2]['class'].should == 'even'
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,3 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/spec_suite"
3
+ SpecSuite.rails
@@ -0,0 +1,54 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "rubygems"
3
+ $LOAD_PATH.unshift("#{dir}/../lib")
4
+ require "erector"
5
+ require "erector/rails"
6
+ require "hpricot"
7
+ require "rr"
8
+ require 'tempfile'
9
+ require 'ostruct'
10
+ require 'treetop'
11
+ require "erector/erect"
12
+ require "erector/erected"
13
+ require "spec"
14
+ require "spec/autorun"
15
+
16
+ Spec::Runner.configure do |config|
17
+ config.mock_with :rr
18
+ end
19
+
20
+ # This mimics Rails load path and dependency stuff
21
+ RAILS_ROOT = File.expand_path("#{File.dirname(__FILE__)}/rails_root") unless defined?(RAILS_ROOT)
22
+ #$: << "#{RAILS_ROOT}/app"
23
+ module Views
24
+ module TemplateHandlerSpec
25
+ end
26
+ end
27
+
28
+
29
+ # uncomment this to find leftover debug putses
30
+ #
31
+ # alias :original_puts :puts
32
+ # def puts(string ="")
33
+ # super string.to_s + "\s(#{caller.first.match(/(\w+\.\w+:\d+)|Rakefile:\d+/)[0]})"
34
+ # end
35
+ #
36
+ # alias :original_p :p
37
+ # def p(string="")
38
+ # original_puts "\s(#{caller.first.match(/(\w+\.\w+:\d+)|Rakefile:\d+/)[0]})"
39
+ # super(string)
40
+ # end
41
+ #
42
+ # alias :original_print :print
43
+ # def print(string="")
44
+ # super string + "\s(#{caller.first.match(/(\w+\.\w+:\d+)|Rakefile:\d+/)[0]})"
45
+ # end
46
+ unless '1.9'.respond_to?(:force_encoding)
47
+ String.class_eval do
48
+ begin
49
+ remove_method :chars
50
+ rescue NameError
51
+ # OK
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,45 @@
1
+ class SpecSuite
2
+ class << self
3
+ def all
4
+ system("ruby #{dir}/core_spec_suite.rb") || raise("Core Spec Suite failed")
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
13
+ end
14
+
15
+ def core
16
+ run Dir["#{dir}/{erect,erector}/**/*_spec.rb"]
17
+ end
18
+
19
+ def rails
20
+ Dir.chdir("#{dir}/rails_root") do
21
+ run Dir["spec/**/*_spec.rb"]
22
+ end
23
+ end
24
+
25
+ def run(files)
26
+ files.each do |file|
27
+ require file
28
+ end
29
+ end
30
+
31
+ 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
+ def dir
38
+ File.dirname(__FILE__)
39
+ end
40
+ end
41
+ end
42
+
43
+ if $0 == __FILE__
44
+ SpecSuite.all
45
+ end
metadata ADDED
@@ -0,0 +1,118 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pivotal-erector
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ platform: ruby
6
+ authors:
7
+ - Alex Chaffee
8
+ - Brian Takita
9
+ - Jeff Dean
10
+ - Jim Kingdon
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+
15
+ date: 2009-04-05 00:00:00 -07:00
16
+ default_executable: erect
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
19
+ name: treetop
20
+ type: :runtime
21
+ version_requirement:
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.2.3
27
+ version:
28
+ description: Html Builder library.
29
+ email: erector-devel@rubyforge.org
30
+ executables:
31
+ - erect
32
+ extensions: []
33
+
34
+ extra_rdoc_files:
35
+ - README.txt
36
+ files:
37
+ - README.txt
38
+ - VERSION.yml
39
+ - bin/erect
40
+ - lib/erector.rb
41
+ - lib/erector/erect.rb
42
+ - lib/erector/erected.rb
43
+ - lib/erector/extensions/object.rb
44
+ - lib/erector/indenting.rb
45
+ - lib/erector/rails.rb
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
+ - lib/erector/rails/extensions/action_view.rb
50
+ - lib/erector/rails/extensions/widget.rb
51
+ - lib/erector/rails/extensions/widget/1.2.5/widget.rb
52
+ - lib/erector/rails/extensions/widget/2.2.0/widget.rb
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
58
+ - lib/erector/rails/template_handlers/action_view_template_handler.rb
59
+ - lib/erector/raw_string.rb
60
+ - lib/erector/rhtml.treetop
61
+ - lib/erector/unicode.rb
62
+ - lib/erector/unicode_builder.rb
63
+ - lib/erector/version.rb
64
+ - lib/erector/widget.rb
65
+ - lib/erector/widgets.rb
66
+ - lib/erector/widgets/table.rb
67
+ - 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
+ - spec/erector/indentation_spec.rb
72
+ - spec/erector/unicode_builder_spec.rb
73
+ - spec/erector/widget_spec.rb
74
+ - spec/erector/widgets/table_spec.rb
75
+ - spec/rails_spec_suite.rb
76
+ - spec/spec_helper.rb
77
+ - spec/spec_suite.rb
78
+ has_rdoc: true
79
+ homepage: http://erector.rubyforge.org/
80
+ post_install_message:
81
+ rdoc_options:
82
+ - --charset=UTF-8
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
91
+ required_rubygems_version: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: "0"
96
+ version:
97
+ requirements: []
98
+
99
+ rubyforge_project:
100
+ rubygems_version: 1.2.0
101
+ signing_key:
102
+ specification_version: 2
103
+ summary: Html Builder library.
104
+ test_files:
105
+ - spec/erector
106
+ - spec/erector/widgets
107
+ - spec/erector/widgets/table_spec.rb
108
+ - spec/erector/unicode_builder_spec.rb
109
+ - spec/erector/widget_spec.rb
110
+ - spec/erector/indentation_spec.rb
111
+ - spec/rails_spec_suite.rb
112
+ - spec/spec_suite.rb
113
+ - spec/core_spec_suite.rb
114
+ - spec/spec_helper.rb
115
+ - spec/erect
116
+ - spec/erect/erected_spec.rb
117
+ - spec/erect/erect_spec.rb
118
+ - spec/erect/rhtml_parser_spec.rb