express_templates 0.5.0 → 0.7.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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -41
  3. data/lib/arbre/patches.rb +50 -0
  4. data/lib/core_extensions/proc.rb +1 -0
  5. data/lib/express_templates/compiler.rb +2 -7
  6. data/lib/express_templates/components/base.rb +33 -37
  7. data/lib/express_templates/components/capabilities/resourceful.rb +30 -18
  8. data/lib/express_templates/components/configurable.rb +41 -0
  9. data/lib/express_templates/components/form_rails_support.rb +5 -6
  10. data/lib/express_templates/components/forms/basic_fields.rb +3 -6
  11. data/lib/express_templates/components/forms/checkbox.rb +1 -1
  12. data/lib/express_templates/components/forms/express_form.rb +15 -25
  13. data/lib/express_templates/components/forms/form_component.rb +20 -11
  14. data/lib/express_templates/components/forms/option_support.rb +2 -2
  15. data/lib/express_templates/components/forms/radio.rb +7 -8
  16. data/lib/express_templates/components/forms/select.rb +61 -37
  17. data/lib/express_templates/components/forms/select_collection.rb +2 -8
  18. data/lib/express_templates/components/forms/submit.rb +7 -6
  19. data/lib/express_templates/components/forms.rb +0 -1
  20. data/lib/express_templates/components/tree_for.rb +26 -42
  21. data/lib/express_templates/components.rb +1 -9
  22. data/lib/express_templates/version.rb +1 -1
  23. data/lib/express_templates.rb +2 -3
  24. data/test/components/base_test.rb +17 -15
  25. data/test/components/capabilities/resourceful_test.rb +3 -3
  26. data/test/components/configurable_test.rb +27 -21
  27. data/test/components/forms/basic_fields_test.rb +57 -17
  28. data/test/components/forms/checkbox_test.rb +16 -22
  29. data/test/components/forms/express_form_test.rb +23 -76
  30. data/test/components/forms/radio_test.rb +31 -27
  31. data/test/components/forms/select_test.rb +46 -71
  32. data/test/components/forms/submit_test.rb +10 -5
  33. data/test/components/tree_for_test.rb +24 -52
  34. data/test/dummy/app/views/hello/show.html.et +4 -3
  35. data/test/dummy/app/views/layouts/application.html.et +1 -1
  36. data/test/dummy/log/test.log +4794 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/-cDLO4NJHMndDHchOLz8KLD7QBc68WtaAbYxK2r6GsU.cache +0 -0
  38. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/0t68EIwZ96sAqQSxFka9MQyIk4viw8ZIoREMCGiJRx0.cache +0 -0
  39. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/2zt1IbQCnmzGyeZS_I4sYQzrgneSCKIJBRxcffVHlWY.cache +1 -0
  40. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/EDVlXrcn_wEfaZ5nc_4QJBT7lPiIBcX96jBo7PBz-vc.cache +1 -0
  41. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eso3tkb79hXQ1XdQgjbV03KyQwSeZFAHxVHImsjQ-HQ.cache +2 -0
  42. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/I8LhheC1OlOyvp_qY8kWpqKcZFiqv_BO-l5bExvDEi0.cache +1 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Kf4VrP5sW-qzziYSN-m7p4nETjLiEwwwRfwUOm7rOr0.cache +0 -0
  44. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/QJ0Z8hROMfWpY6f5Chb7GSuDHE4gpabKVQTr9BCZe9s.cache +1 -0
  45. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/T1pSAx767vY7X1UDN0vdF7YGEkI5wMSVUKopsdvp7kI.cache +1 -0
  46. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlSPFPDK05c7ImadRiRVKzsaa6e15RwX77QR3NYabME.cache +0 -0
  47. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7_BbgB9jgJIWYjDCsASySd26DTfPADAu_3DDnLlFog.cache +0 -0
  48. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/g2xQygPqA5kMmp5L3wVGWaUIhdVsxFmOel9FF6M0Fuw.cache +0 -0
  49. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/kaif59owjUr3HBharCH5GUxU6KoW_zXD9a9JiTjIYPY.cache +1 -0
  50. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/p1cwnBd8RQBm9x5HzDmiiU7RhvnxhPX8VTfi0tTElJY.cache +3 -0
  51. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/qT6_0ti_v6fAjS3wETXqvTkr6W0LP4PB942uLYQzWK8.cache +3 -0
  52. data/test/dummy/tmp/cache/assets/test/sprockets/v3.0/y8T65xpx0s3RgT_YiqWEEXIaBsgK4woCNSuZ1zjQZBk.cache +2 -0
  53. data/test/express_templates_test.rb +5 -1
  54. data/test/handler_test.rb +19 -17
  55. data/test/performance_test.rb +11 -7
  56. data/test/test_helper.rb +162 -1
  57. metadata +50 -53
  58. data/lib/express_templates/components/capabilities/adoptable.rb +0 -20
  59. data/lib/express_templates/components/capabilities/building.rb +0 -14
  60. data/lib/express_templates/components/capabilities/conditionality.rb +0 -54
  61. data/lib/express_templates/components/capabilities/configurable.rb +0 -90
  62. data/lib/express_templates/components/capabilities/iterating.rb +0 -75
  63. data/lib/express_templates/components/capabilities/parenting.rb +0 -72
  64. data/lib/express_templates/components/capabilities/rendering.rb +0 -30
  65. data/lib/express_templates/components/capabilities/templating.rb +0 -198
  66. data/lib/express_templates/components/capabilities/wrapping.rb +0 -84
  67. data/lib/express_templates/components/column.rb +0 -13
  68. data/lib/express_templates/components/container.rb +0 -7
  69. data/lib/express_templates/components/content_for.rb +0 -42
  70. data/lib/express_templates/components/for_each.rb +0 -30
  71. data/lib/express_templates/components/forms/form_support.rb +0 -13
  72. data/lib/express_templates/components/null_wrap.rb +0 -41
  73. data/lib/express_templates/components/row.rb +0 -28
  74. data/lib/express_templates/components/table_for.rb +0 -163
  75. data/lib/express_templates/components/unless_block.rb +0 -40
  76. data/lib/express_templates/expander.rb +0 -140
  77. data/lib/express_templates/macro.rb +0 -45
  78. data/lib/express_templates/markup/html_tag.rb +0 -62
  79. data/lib/express_templates/markup/tag.rb +0 -150
  80. data/lib/express_templates/markup/wrapper.rb +0 -94
  81. data/lib/express_templates/markup/yielder.rb +0 -21
  82. data/lib/express_templates/markup.rb +0 -9
  83. data/test/components/column_test.rb +0 -11
  84. data/test/components/conditionality_test.rb +0 -37
  85. data/test/components/container_test.rb +0 -66
  86. data/test/components/content_for_test.rb +0 -60
  87. data/test/components/iterating_test.rb +0 -127
  88. data/test/components/null_wrap_test.rb +0 -28
  89. data/test/components/row_test.rb +0 -16
  90. data/test/components/table_for_test.rb +0 -211
  91. data/test/expander_stack_test.rb +0 -41
  92. data/test/expander_test.rb +0 -99
  93. data/test/markup/tag_test.rb +0 -149
  94. data/test/markup/wrapper_test.rb +0 -42
  95. data/test/markup/yielder_test.rb +0 -9
@@ -0,0 +1 @@
1
+ "%]!�K��X�K�֓�ޖ���';�����4x��
@@ -0,0 +1 @@
1
+ I"file:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js?type=application/javascript&id=f697bfdcb8b22b82caf5f5423a0b573cc909d475109da753043f33d5faeaf0ff:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts;TT
@@ -0,0 +1 @@
1
+ I" file:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css?type=text/css&id=64ed1ba70de117a37dea8cb4779e78e14b9690da58e53dcb191577f0b423a9d5:ET
@@ -0,0 +1 @@
1
+ I"&file:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=e9728244daad336e88b6ee86f4088d2627083db8a69a16fd0b5d6c4be9a2b3d7:ET
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"file:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=a2803eda5824805a0602befe32cdb07b8b8ed6ff4e1b31401f86d26dfe6ce400:ET
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts/application.js;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/javascripts;TT
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"�file-digest:///Users/steve/Projects/appexpress/appexpress-io2/vendor/gems/express_site/vendor/gems/express_admin/vendor/gems/express_templates/test/dummy/app/assets/stylesheets;TT
@@ -5,6 +5,10 @@ class ExpressTemplatesTest < ActiveSupport::TestCase
5
5
  assert_kind_of Module, ExpressTemplates
6
6
  end
7
7
 
8
+ def assigns
9
+ {}
10
+ end
11
+
8
12
  test "ExpressTemplates.render renders a template" do
9
13
  result = ExpressTemplates.render(self) do
10
14
  ul {
@@ -13,7 +17,7 @@ class ExpressTemplatesTest < ActiveSupport::TestCase
13
17
  li 'three'
14
18
  }
15
19
  end
16
- assert_equal "<ul><li>one</li><li>two</li><li>three</li></ul>", result
20
+ assert_equal "<ul>\n <li>one</li>\n <li>two</li>\n <li>three</li>\n</ul>\n", result
17
21
  end
18
22
 
19
23
  end
data/test/handler_test.rb CHANGED
@@ -2,8 +2,6 @@ require 'test_helper'
2
2
 
3
3
  class HandlerTest < ActiveSupport::TestCase
4
4
 
5
- GARAHandler = ExpressTemplates::Template::Handler.new
6
-
7
5
  DEFAULT_DOCTYPE = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">"
8
6
  A_LINK = %Q(<a href="#">link</a>)
9
7
 
@@ -38,13 +36,17 @@ class HandlerTest < ActiveSupport::TestCase
38
36
  block.call
39
37
  end
40
38
 
39
+ def assigns
40
+ {}
41
+ end
42
+
41
43
  def link_helper
42
- A_LINK
44
+ A_LINK.html_safe
43
45
  end
44
46
  end
45
47
 
46
48
  def new_template(body = " h1 'Hello' ", details = { format: :html })
47
- ActionView::Template.new(body, "hello template", details.fetch(:handler) { GARAHandler }, {:virtual_path => "hello"}.merge!(details))
49
+ ActionView::Template.new(body, "hello template", details.fetch(:handler) { ExpressTemplates::Template::Handler.new }, {:virtual_path => "hello"}.merge!(details))
48
50
  end
49
51
 
50
52
  def render(locals = {})
@@ -73,22 +75,23 @@ class HandlerTest < ActiveSupport::TestCase
73
75
  test "html generates <h1>Hello</h1> by default" do
74
76
  @template = new_template
75
77
  result = render
76
- assert_equal "<h1>Hello</h1>", result
78
+ assert_equal "<h1>Hello</h1>\n", result
77
79
  end
78
80
 
79
81
  test "nesting elements with ruby block structure" do
80
82
  @template = new_template("ul { li 'one' ; li 'two' ; li 'three' }")
81
- assert_equal "<ul><li>one</li><li>two</li><li>three</li></ul>", render
83
+ assert_equal "<ul>\n <li>one</li>\n <li>two</li>\n <li>three</li>\n</ul>\n", render
82
84
  end
83
85
 
84
- test "class names" do
85
- @template = new_template("p.whatever.another 'Lorum Ipsum' ")
86
- assert_equal "<p class=\"whatever another\">Lorum Ipsum</p>", render
87
- end
86
+ # TODO?: Does not work with arbre
87
+ # test "class names" do
88
+ # @template = new_template("p.whatever.another 'Lorum Ipsum' ")
89
+ # assert_equal "<p class=\"whatever another\">Lorum Ipsum</p>\n", render
90
+ # end
88
91
 
89
92
  test "string in block works" do
90
93
  @template = new_template "h1 { 'foo' } "
91
- assert_equal "<h1>foo</h1>", render
94
+ assert_equal "<h1>foo</h1>\n", render
92
95
  end
93
96
 
94
97
  # test "real document has doctype and newline" do
@@ -98,25 +101,24 @@ class HandlerTest < ActiveSupport::TestCase
98
101
 
99
102
 
100
103
  test "other attributes" do
101
- @template = new_template("p('Lorum Ipsum', style: 'align: right;')")
102
- assert_equal "<p style=\"align: right;\">Lorum Ipsum</p>", render
104
+ @template = new_template("para('Lorum Ipsum', style: 'align: right;')")
105
+ assert_equal "<p style=\"align: right;\">Lorum Ipsum</p>\n", render
103
106
  end
104
107
 
105
108
  test "locals work" do
106
109
  @template = new_template "h1 { my_title }"
107
110
  @template.locals = [:my_title]
108
- assert_equal "<h1>Foo</h1>", render(my_title: 'Foo')
111
+ assert_equal "<h1>Foo</h1>\n", render(my_title: 'Foo')
109
112
  end
110
113
 
111
114
  test "helpers returning html when alone in a block" do
112
115
  @template = new_template("li { link_helper } ")
113
- assert_equal "<li>#{A_LINK}</li>", render
116
+ assert_equal "<li>#{A_LINK}</li>\n", render
114
117
  end
115
118
 
116
119
  test "helpers returning html work in sequence within a block" do
117
120
  @template = new_template("li { link_helper ; link_helper } ")
118
- assert_equal "<li>#{A_LINK}#{A_LINK}</li>", render
121
+ assert_equal "<li>\n#{A_LINK}#{A_LINK}</li>\n", render
119
122
  end
120
123
 
121
-
122
124
  end
@@ -13,7 +13,7 @@ html(lang: "en") {
13
13
  }
14
14
  body {
15
15
  h1 "Hello"
16
- p "Some text"
16
+ para "Some text"
17
17
  javascript_include_tag "application"
18
18
  }
19
19
  }
@@ -64,7 +64,11 @@ HAML
64
64
  end
65
65
  # end
66
66
 
67
- def time(count)
67
+ def assigns
68
+ {}
69
+ end
70
+
71
+ def measure_time(count)
68
72
  start_time = Time.now
69
73
  1.upto(100) { yield }
70
74
  end_time = Time.now
@@ -72,20 +76,20 @@ HAML
72
76
  end
73
77
 
74
78
  # test "performance is okay" do
75
- # duration = time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
79
+ # duration = measure_time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
76
80
  # assert_operator 1.0, :>, duration
77
81
  # end
78
82
 
79
83
  # test "performance no more than 3.5x slower than erubis" do
80
84
  # eruby = Erubis::Eruby.new
81
- # duration_erb = time(100) { eval(eruby.convert(ERB_EXAMPLE)) }
82
- # duration_express_templates = time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
85
+ # duration_erb = measure_time(100) { eval(eruby.convert(ERB_EXAMPLE)) }
86
+ # duration_express_templates = measure_time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
83
87
  # assert_operator 4.0, :>, (duration_express_templates/duration_erb)
84
88
  # end
85
89
 
86
90
  # test "performance better than haml" do
87
- # duration_haml = time(100) { Haml::Engine.new(HAML_EXAMPLE).render(self) }
88
- # duration_express_templates = time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
91
+ # duration_haml = measure_time(100) { Haml::Engine.new(HAML_EXAMPLE).render(self) }
92
+ # duration_express_templates = measure_time(100) { ExpressTemplates.render(self, "#{GARA_EXAMPLE}") }
89
93
  # assert_operator 0.5, :>, (duration_express_templates/duration_haml)
90
94
  # end
91
95
 
data/test/test_helper.rb CHANGED
@@ -23,6 +23,167 @@ ETC = ExpressTemplates::Components
23
23
  ET = ExpressTemplates
24
24
  Interpolator = ExpressTemplates::Interpolator
25
25
 
26
- Tag = ExpressTemplates::Markup::Tag
26
+ require 'arbre'
27
+ Tag = Arbre::HTML::Tag
27
28
 
28
29
  ENV["ET_NO_INDENT_MARKUP"] = 'true'
30
+
31
+ module AdditionalHelpers
32
+
33
+ def protect_against_forgery?
34
+ true
35
+ end
36
+
37
+ def form_authenticity_token
38
+ "AUTH_TOKEN"
39
+ end
40
+
41
+ end
42
+
43
+
44
+
45
+ module ActiveSupport
46
+ class TestCase
47
+ def arbre(&block)
48
+ Arbre::Context.new assigns, helpers, &block
49
+ end
50
+ def assigns
51
+ {}
52
+ end
53
+ def helpers
54
+ mock_action_view(assigns)
55
+ end
56
+ def mock_action_view(assigns = {})
57
+ controller = ActionView::TestCase::TestController.new
58
+ ActionView::Base.send :include, ActionView::Helpers
59
+ ActionView::Base.send :include, ActionView::Helpers::UrlHelper
60
+ ActionView::Base.send :include, AdditionalHelpers
61
+ view = ActionView::Base.new(ActionController::Base.view_paths, assigns, controller)
62
+ eigenklass = class << view
63
+ self
64
+ end
65
+ assigns.each do |helper_name,value|
66
+ eigenklass.send(:define_method, helper_name) { value }
67
+ end
68
+ view
69
+ end
70
+
71
+ def resource(persisted = true)
72
+ @resource ||= OpenStruct.new(
73
+ id: 1,
74
+ name: 'Foo',
75
+ body: 'Hello world',
76
+ email: 'some@email.com',
77
+ phone: '123123123',
78
+ url: 'http://someurl.com',
79
+ number: 123,
80
+ dropdown: 'yes',
81
+ gender: 'Male'
82
+ )
83
+ end
84
+
85
+ end
86
+ end
87
+
88
+
89
+ class ExpressTemplates::Components::Forms::ExpressForm
90
+ def resource_path(resource)
91
+ "/resource/1"
92
+ end
93
+
94
+ def collection_path
95
+ "/resources"
96
+ end
97
+ end
98
+
99
+
100
+ class ::Gender
101
+ attr :id, :name
102
+ def initialize(id, name)
103
+ @id, @name = id, name
104
+ end
105
+ def self.columns
106
+ [OpenStruct.new(name: 'id'), OpenStruct.new(name: 'name')]
107
+ end
108
+ def self.distinct(field)
109
+ return self #dummy
110
+ end
111
+ def self.pluck(*fields)
112
+ return ['Male', 'Female']
113
+ end
114
+ def self.select(*)
115
+ return self
116
+ end
117
+ def self.order(*)
118
+ all
119
+ end
120
+ def self.all
121
+ return [new(1, 'Male'), new(2, 'Female')]
122
+ end
123
+ end
124
+ class ::Tagging
125
+ attr :id, :name
126
+ def initialize(id, name)
127
+ @id, @name = id, name
128
+ end
129
+ def self.columns
130
+ [OpenStruct.new(name: 'id'), OpenStruct.new(name: 'name')]
131
+ end
132
+ def self.select(*)
133
+ return self
134
+ end
135
+ def self.order(*)
136
+ all
137
+ end
138
+ def self.all
139
+ return [new(1, 'Friend'), new(2, 'Enemy'), new(3, 'Frenemy')]
140
+ end
141
+ end
142
+ class ::Person
143
+ attr :id, :city, :subscribed, :preferred_email_format
144
+ def initialize(id = 1, city = 'San Francisco')
145
+ @id, @city = id, city
146
+ end
147
+ def gender
148
+ ::Gender.new(1, 'Male')
149
+ end
150
+ def self.reflect_on_association(name)
151
+ if name.eql? :gender
152
+ dummy_belongs_to_association = Object.new
153
+ class << dummy_belongs_to_association
154
+ def macro ; :belongs_to ; end
155
+ def klass ; ::Gender ; end
156
+ def polymorphic? ; false ; end
157
+ end
158
+ return dummy_belongs_to_association
159
+ end
160
+ if name.eql? :taggings
161
+ dummy_has_many_through_association = Object.new
162
+ class << dummy_has_many_through_association
163
+ def macro ; :has_many ; end
164
+ def klass ; ::Tagging ; end
165
+ def options ; {:through => :peron_tags} ; end
166
+ def polymorphic? ; false ; end
167
+ end
168
+ return dummy_has_many_through_association
169
+ end
170
+ end
171
+ def taggings
172
+ ::Tagging.all.slice(0..1)
173
+ end
174
+ def tagging_ids
175
+ [1, 2]
176
+ end
177
+ def self.distinct(field)
178
+ return self #dummy
179
+ end
180
+ def self.pluck(*fields)
181
+ return ['Manila', 'Hong Kong', 'San Francisco']
182
+ end
183
+ def gender # not really
184
+ 'Male'
185
+ end
186
+ def gender_id
187
+ 1
188
+ end
189
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: express_templates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Talcott Smith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-06-18 00:00:00.000000000 Z
12
+ date: 2015-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.6'
42
+ - !ruby/object:Gem::Dependency
43
+ name: arbre
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rails
44
58
  requirement: !ruby/object:Gem::Requirement
@@ -150,52 +164,29 @@ files:
150
164
  - LICENSE
151
165
  - README.md
152
166
  - Rakefile
167
+ - lib/arbre/patches.rb
153
168
  - lib/core_extensions/proc.rb
154
169
  - lib/core_extensions/string.rb
155
170
  - lib/express_templates.rb
156
171
  - lib/express_templates/compiler.rb
157
172
  - lib/express_templates/components.rb
158
173
  - lib/express_templates/components/base.rb
159
- - lib/express_templates/components/capabilities/adoptable.rb
160
- - lib/express_templates/components/capabilities/building.rb
161
- - lib/express_templates/components/capabilities/conditionality.rb
162
- - lib/express_templates/components/capabilities/configurable.rb
163
- - lib/express_templates/components/capabilities/iterating.rb
164
- - lib/express_templates/components/capabilities/parenting.rb
165
- - lib/express_templates/components/capabilities/rendering.rb
166
174
  - lib/express_templates/components/capabilities/resourceful.rb
167
- - lib/express_templates/components/capabilities/templating.rb
168
- - lib/express_templates/components/capabilities/wrapping.rb
169
- - lib/express_templates/components/column.rb
170
- - lib/express_templates/components/container.rb
171
- - lib/express_templates/components/content_for.rb
172
- - lib/express_templates/components/for_each.rb
175
+ - lib/express_templates/components/configurable.rb
173
176
  - lib/express_templates/components/form_rails_support.rb
174
177
  - lib/express_templates/components/forms.rb
175
178
  - lib/express_templates/components/forms/basic_fields.rb
176
179
  - lib/express_templates/components/forms/checkbox.rb
177
180
  - lib/express_templates/components/forms/express_form.rb
178
181
  - lib/express_templates/components/forms/form_component.rb
179
- - lib/express_templates/components/forms/form_support.rb
180
182
  - lib/express_templates/components/forms/option_support.rb
181
183
  - lib/express_templates/components/forms/radio.rb
182
184
  - lib/express_templates/components/forms/select.rb
183
185
  - lib/express_templates/components/forms/select_collection.rb
184
186
  - lib/express_templates/components/forms/submit.rb
185
- - lib/express_templates/components/null_wrap.rb
186
- - lib/express_templates/components/row.rb
187
- - lib/express_templates/components/table_for.rb
188
187
  - lib/express_templates/components/tree_for.rb
189
- - lib/express_templates/components/unless_block.rb
190
- - lib/express_templates/expander.rb
191
188
  - lib/express_templates/indenter.rb
192
189
  - lib/express_templates/interpolator.rb
193
- - lib/express_templates/macro.rb
194
- - lib/express_templates/markup.rb
195
- - lib/express_templates/markup/html_tag.rb
196
- - lib/express_templates/markup/tag.rb
197
- - lib/express_templates/markup/wrapper.rb
198
- - lib/express_templates/markup/yielder.rb
199
190
  - lib/express_templates/renderer.rb
200
191
  - lib/express_templates/template/handler.rb
201
192
  - lib/express_templates/version.rb
@@ -203,21 +194,13 @@ files:
203
194
  - test/compiler_test.rb
204
195
  - test/components/base_test.rb
205
196
  - test/components/capabilities/resourceful_test.rb
206
- - test/components/column_test.rb
207
- - test/components/conditionality_test.rb
208
197
  - test/components/configurable_test.rb
209
- - test/components/container_test.rb
210
- - test/components/content_for_test.rb
211
198
  - test/components/forms/basic_fields_test.rb
212
199
  - test/components/forms/checkbox_test.rb
213
200
  - test/components/forms/express_form_test.rb
214
201
  - test/components/forms/radio_test.rb
215
202
  - test/components/forms/select_test.rb
216
203
  - test/components/forms/submit_test.rb
217
- - test/components/iterating_test.rb
218
- - test/components/null_wrap_test.rb
219
- - test/components/row_test.rb
220
- - test/components/table_for_test.rb
221
204
  - test/components/tree_for_test.rb
222
205
  - test/core_extensions/proc_test.rb
223
206
  - test/core_extensions/string_test.rb
@@ -258,30 +241,41 @@ files:
258
241
  - test/dummy/test/controllers/hello_controller_test.rb
259
242
  - test/dummy/test/helpers/hello_helper_test.rb
260
243
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/-1ax0k6FO5drSUN6jbogg4G0JliUHLffvQUvzSePKxA.cache
244
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/-cDLO4NJHMndDHchOLz8KLD7QBc68WtaAbYxK2r6GsU.cache
245
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/0t68EIwZ96sAqQSxFka9MQyIk4viw8ZIoREMCGiJRx0.cache
261
246
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/28LzLLDYjhr3jmu0GxjZ-ms5Bol6JilDRXpg8Zgbjqs.cache
247
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/2zt1IbQCnmzGyeZS_I4sYQzrgneSCKIJBRxcffVHlWY.cache
262
248
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/5AeGDyXQbv_BTj3PD4MJpNnGVwUxLsA8H1VcwB69_wE.cache
263
249
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/B0RgtiEmqwrCQuw4AnDa3fdENtJeBtO_TqtGJuWOeNs.cache
264
250
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/D-tMNp19G2zWOPPhnQRUm4K8DPa8SpKPfGALkkofTeE.cache
251
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/EDVlXrcn_wEfaZ5nc_4QJBT7lPiIBcX96jBo7PBz-vc.cache
252
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eso3tkb79hXQ1XdQgjbV03KyQwSeZFAHxVHImsjQ-HQ.cache
253
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/I8LhheC1OlOyvp_qY8kWpqKcZFiqv_BO-l5bExvDEi0.cache
254
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Kf4VrP5sW-qzziYSN-m7p4nETjLiEwwwRfwUOm7rOr0.cache
265
255
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pd5YOD1DAL7QtTnwETZYBCabg5DkCFgbjt4iuBOcSoY.cache
256
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/QJ0Z8hROMfWpY6f5Chb7GSuDHE4gpabKVQTr9BCZe9s.cache
257
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/T1pSAx767vY7X1UDN0vdF7YGEkI5wMSVUKopsdvp7kI.cache
258
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlSPFPDK05c7ImadRiRVKzsaa6e15RwX77QR3NYabME.cache
259
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7_BbgB9jgJIWYjDCsASySd26DTfPADAu_3DDnLlFog.cache
266
260
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/bSfZQxeyghTF4WIVnzGavxlg9afmSNuqcW6bA1Bm1OA.cache
267
261
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/fvD_ZNFRzd8Sc4PoTjyHPnkg4f7WMietFunnKqNjlvc.cache
262
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/g2xQygPqA5kMmp5L3wVGWaUIhdVsxFmOel9FF6M0Fuw.cache
268
263
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/hKbgrf5CbMO8pe9fCHc-rI5mp1ejAhivBfvfDxBNhQA.cache
264
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/kaif59owjUr3HBharCH5GUxU6KoW_zXD9a9JiTjIYPY.cache
269
265
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/kpvKX5UlhhoLJv-faeq7Ibv2KQh4ROjTiarh13gHuWI.cache
270
266
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/lfyrNtbNtwuTXAWlmPCKTS-D3FHoPTY6h53wnUN36-A.cache
271
267
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/lyDRhWNhfDw_YCCSbxQw_iOIV3eTfeAoX6mTREuVZSA.cache
272
268
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/p17lC0HAHCtk1ds_NHl9xhEyMtRjfQInw1c6fmFWguc.cache
269
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/p1cwnBd8RQBm9x5HzDmiiU7RhvnxhPX8VTfi0tTElJY.cache
270
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/qT6_0ti_v6fAjS3wETXqvTkr6W0LP4PB942uLYQzWK8.cache
273
271
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/qzU7DVwQZ7z6i6pYUpssYsAj0y33GN83B4O1bLvkW_4.cache
274
272
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/r56eI1z7iFKeySym_9zw5hVOPjb0d6IQPn5pAYTKk04.cache
275
273
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/rGWvoeLyiyqb813IXgfDpDxks23JQoLLZOa69bzKPE8.cache
276
- - test/expander_stack_test.rb
277
- - test/expander_test.rb
274
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/y8T65xpx0s3RgT_YiqWEEXIaBsgK4woCNSuZ1zjQZBk.cache
278
275
  - test/express_templates_test.rb
279
276
  - test/handler_test.rb
280
277
  - test/indenter_test.rb
281
278
  - test/interpolator_test.rb
282
- - test/markup/tag_test.rb
283
- - test/markup/wrapper_test.rb
284
- - test/markup/yielder_test.rb
285
279
  - test/performance_test.rb
286
280
  - test/test_helper.rb
287
281
  homepage: https://github.com/aelogica/express_templates
@@ -312,21 +306,13 @@ test_files:
312
306
  - test/compiler_test.rb
313
307
  - test/components/base_test.rb
314
308
  - test/components/capabilities/resourceful_test.rb
315
- - test/components/column_test.rb
316
- - test/components/conditionality_test.rb
317
309
  - test/components/configurable_test.rb
318
- - test/components/container_test.rb
319
- - test/components/content_for_test.rb
320
310
  - test/components/forms/basic_fields_test.rb
321
311
  - test/components/forms/checkbox_test.rb
322
312
  - test/components/forms/express_form_test.rb
323
313
  - test/components/forms/radio_test.rb
324
314
  - test/components/forms/select_test.rb
325
315
  - test/components/forms/submit_test.rb
326
- - test/components/iterating_test.rb
327
- - test/components/null_wrap_test.rb
328
- - test/components/row_test.rb
329
- - test/components/table_for_test.rb
330
316
  - test/components/tree_for_test.rb
331
317
  - test/core_extensions/proc_test.rb
332
318
  - test/core_extensions/string_test.rb
@@ -367,29 +353,40 @@ test_files:
367
353
  - test/dummy/test/controllers/hello_controller_test.rb
368
354
  - test/dummy/test/helpers/hello_helper_test.rb
369
355
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/-1ax0k6FO5drSUN6jbogg4G0JliUHLffvQUvzSePKxA.cache
356
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/-cDLO4NJHMndDHchOLz8KLD7QBc68WtaAbYxK2r6GsU.cache
357
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/0t68EIwZ96sAqQSxFka9MQyIk4viw8ZIoREMCGiJRx0.cache
370
358
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/28LzLLDYjhr3jmu0GxjZ-ms5Bol6JilDRXpg8Zgbjqs.cache
359
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/2zt1IbQCnmzGyeZS_I4sYQzrgneSCKIJBRxcffVHlWY.cache
371
360
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/5AeGDyXQbv_BTj3PD4MJpNnGVwUxLsA8H1VcwB69_wE.cache
372
361
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/B0RgtiEmqwrCQuw4AnDa3fdENtJeBtO_TqtGJuWOeNs.cache
373
362
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/bSfZQxeyghTF4WIVnzGavxlg9afmSNuqcW6bA1Bm1OA.cache
374
363
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/D-tMNp19G2zWOPPhnQRUm4K8DPa8SpKPfGALkkofTeE.cache
364
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/EDVlXrcn_wEfaZ5nc_4QJBT7lPiIBcX96jBo7PBz-vc.cache
365
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Eso3tkb79hXQ1XdQgjbV03KyQwSeZFAHxVHImsjQ-HQ.cache
375
366
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/fvD_ZNFRzd8Sc4PoTjyHPnkg4f7WMietFunnKqNjlvc.cache
367
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/g2xQygPqA5kMmp5L3wVGWaUIhdVsxFmOel9FF6M0Fuw.cache
376
368
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/hKbgrf5CbMO8pe9fCHc-rI5mp1ejAhivBfvfDxBNhQA.cache
369
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/I8LhheC1OlOyvp_qY8kWpqKcZFiqv_BO-l5bExvDEi0.cache
370
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/kaif59owjUr3HBharCH5GUxU6KoW_zXD9a9JiTjIYPY.cache
371
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Kf4VrP5sW-qzziYSN-m7p4nETjLiEwwwRfwUOm7rOr0.cache
377
372
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/kpvKX5UlhhoLJv-faeq7Ibv2KQh4ROjTiarh13gHuWI.cache
378
373
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/lfyrNtbNtwuTXAWlmPCKTS-D3FHoPTY6h53wnUN36-A.cache
379
374
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/lyDRhWNhfDw_YCCSbxQw_iOIV3eTfeAoX6mTREuVZSA.cache
380
375
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/p17lC0HAHCtk1ds_NHl9xhEyMtRjfQInw1c6fmFWguc.cache
376
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/p1cwnBd8RQBm9x5HzDmiiU7RhvnxhPX8VTfi0tTElJY.cache
381
377
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Pd5YOD1DAL7QtTnwETZYBCabg5DkCFgbjt4iuBOcSoY.cache
378
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/QJ0Z8hROMfWpY6f5Chb7GSuDHE4gpabKVQTr9BCZe9s.cache
379
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/qT6_0ti_v6fAjS3wETXqvTkr6W0LP4PB942uLYQzWK8.cache
382
380
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/qzU7DVwQZ7z6i6pYUpssYsAj0y33GN83B4O1bLvkW_4.cache
383
381
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/r56eI1z7iFKeySym_9zw5hVOPjb0d6IQPn5pAYTKk04.cache
384
382
  - test/dummy/tmp/cache/assets/test/sprockets/v3.0/rGWvoeLyiyqb813IXgfDpDxks23JQoLLZOa69bzKPE8.cache
385
- - test/expander_stack_test.rb
386
- - test/expander_test.rb
383
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/T1pSAx767vY7X1UDN0vdF7YGEkI5wMSVUKopsdvp7kI.cache
384
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/VlSPFPDK05c7ImadRiRVKzsaa6e15RwX77QR3NYabME.cache
385
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/Y7_BbgB9jgJIWYjDCsASySd26DTfPADAu_3DDnLlFog.cache
386
+ - test/dummy/tmp/cache/assets/test/sprockets/v3.0/y8T65xpx0s3RgT_YiqWEEXIaBsgK4woCNSuZ1zjQZBk.cache
387
387
  - test/express_templates_test.rb
388
388
  - test/handler_test.rb
389
389
  - test/indenter_test.rb
390
390
  - test/interpolator_test.rb
391
- - test/markup/tag_test.rb
392
- - test/markup/wrapper_test.rb
393
- - test/markup/yielder_test.rb
394
391
  - test/performance_test.rb
395
392
  - test/test_helper.rb
@@ -1,20 +0,0 @@
1
- module ExpressTemplates
2
- module Components
3
- module Capabilities
4
- module Adoptable
5
- # Adoptable adds the capability for a child to refer
6
- # to its parent. This is used by more complex
7
- # components which are intended to work together
8
- # such as form components where form elements may need
9
- # to use information known only to the parent.
10
-
11
- def self.included(base)
12
- base.class_eval do
13
- attr_accessor :parent
14
- end
15
- end
16
-
17
- end
18
- end
19
- end
20
- end
@@ -1,14 +0,0 @@
1
- module ExpressTemplates
2
- module Components
3
- module Capabilities
4
- module Building
5
- # commented this out because it's intercepting calls to rails helpers
6
- # TODO: fix this... I think the whole buiding approach is broken.
7
- # this class is empty and should probably go away.
8
- # def method_missing(name, *args)
9
- # raise "#{self.class.to_s} has no method '#{name}'"
10
- # end
11
- end
12
- end
13
- end
14
- end