mab 0.0.2 → 0.0.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 (113) hide show
  1. checksums.yaml +15 -0
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +3 -3
  4. data/Rakefile +10 -2
  5. data/lib/mab.rb +1 -0
  6. data/lib/mab/indentation.rb +2 -2
  7. data/lib/mab/mixin.rb +57 -57
  8. data/lib/mab/rails.rb +20 -0
  9. data/lib/mab/version.rb +1 -1
  10. data/test/rails/Rakefile +7 -0
  11. data/test/rails/app/assets/images/rails.png +0 -0
  12. data/test/rails/app/assets/javascripts/application.js +15 -0
  13. data/test/rails/app/assets/stylesheets/application.css +13 -0
  14. data/test/rails/app/controllers/application_controller.rb +17 -0
  15. data/test/rails/app/helpers/application_helper.rb +2 -0
  16. data/test/rails/app/views/application/content_for.html.mab +6 -0
  17. data/test/rails/app/views/application/normal.html.mab +2 -0
  18. data/test/rails/app/views/application/variables.html.mab +2 -0
  19. data/test/rails/app/views/layouts/application.html.mab +15 -0
  20. data/test/rails/config.ru +4 -0
  21. data/test/rails/config/application.rb +54 -0
  22. data/test/rails/config/boot.rb +6 -0
  23. data/test/rails/config/environment.rb +5 -0
  24. data/test/rails/config/environments/development.rb +27 -0
  25. data/test/rails/config/environments/production.rb +67 -0
  26. data/test/rails/config/environments/test.rb +29 -0
  27. data/test/rails/config/initializers/backtrace_silencers.rb +7 -0
  28. data/test/rails/config/initializers/inflections.rb +15 -0
  29. data/test/rails/config/initializers/mime_types.rb +5 -0
  30. data/test/rails/config/initializers/secret_token.rb +7 -0
  31. data/test/rails/config/initializers/session_store.rb +8 -0
  32. data/test/rails/config/initializers/wrap_parameters.rb +14 -0
  33. data/test/rails/config/locales/en.yml +5 -0
  34. data/test/rails/config/routes.rb +3 -0
  35. data/test/rails/script/rails +6 -0
  36. data/test/rails/test/helper.rb +7 -0
  37. data/test/rails/test/test_mab.rb +40 -0
  38. data/test/test_mab_mixin.rb +10 -6
  39. metadata +46 -88
  40. data/bench.rb +0 -37
  41. data/mab-0.0.1.gem +0 -0
  42. data/markaby/CHANGELOG.rdoc +0 -106
  43. data/markaby/Markaby.gemspec +0 -109
  44. data/markaby/README.rdoc +0 -317
  45. data/markaby/Rakefile +0 -78
  46. data/markaby/VERSION +0 -1
  47. data/markaby/garlic.rb +0 -29
  48. data/markaby/init.rb +0 -6
  49. data/markaby/lib/markaby.rb +0 -30
  50. data/markaby/lib/markaby/builder.rb +0 -314
  51. data/markaby/lib/markaby/builder_tags.rb +0 -64
  52. data/markaby/lib/markaby/cssproxy.rb +0 -55
  53. data/markaby/lib/markaby/kernel_method.rb +0 -7
  54. data/markaby/lib/markaby/rails.rb +0 -75
  55. data/markaby/lib/markaby/rails/current.rb +0 -85
  56. data/markaby/lib/markaby/rails/deprecated.rb +0 -124
  57. data/markaby/lib/markaby/rails/rails_builder.rb +0 -91
  58. data/markaby/lib/markaby/sinatra.rb +0 -18
  59. data/markaby/lib/markaby/tags.rb +0 -200
  60. data/markaby/lib/markaby/tilt.rb +0 -8
  61. data/markaby/spec/markaby/builder_spec.rb +0 -118
  62. data/markaby/spec/markaby/css_proxy_test.rb +0 -47
  63. data/markaby/spec/markaby/fragment_test.rb +0 -10
  64. data/markaby/spec/markaby/markaby_other_static.mab +0 -1
  65. data/markaby/spec/markaby/markaby_spec.rb +0 -184
  66. data/markaby/spec/markaby/markaby_test.rb +0 -251
  67. data/markaby/spec/markaby/rails/spec_helper.rb +0 -29
  68. data/markaby/spec/markaby/rails/views/layouts/layout.mab +0 -11
  69. data/markaby/spec/markaby/rails/views/markaby/_a_partial.mab +0 -3
  70. data/markaby/spec/markaby/rails/views/markaby/_form_for_with_body_in_erb.erb +0 -1
  71. data/markaby/spec/markaby/rails/views/markaby/_partial_child_with_locals.mab +0 -1
  72. data/markaby/spec/markaby/rails/views/markaby/access_to_helpers.mab +0 -1
  73. data/markaby/spec/markaby/rails/views/markaby/broken.mab +0 -7
  74. data/markaby/spec/markaby/rails/views/markaby/commented_out_template.mab +0 -1
  75. data/markaby/spec/markaby/rails/views/markaby/correct_template_values.mab +0 -5
  76. data/markaby/spec/markaby/rails/views/markaby/double_output.mab +0 -8
  77. data/markaby/spec/markaby/rails/views/markaby/form_for.mab +0 -2
  78. data/markaby/spec/markaby/rails/views/markaby/form_for_with_fields.mab +0 -3
  79. data/markaby/spec/markaby/rails/views/markaby/form_for_with_multiple_fields.mab +0 -4
  80. data/markaby/spec/markaby/rails/views/markaby/no_values_passed.mab +0 -3
  81. data/markaby/spec/markaby/rails/views/markaby/partial_parent.mab +0 -1
  82. data/markaby/spec/markaby/rails/views/markaby/partial_parent_with_locals.mab +0 -7
  83. data/markaby/spec/markaby/rails/views/markaby/render_erb_without_explicit_render_call.erb +0 -1
  84. data/markaby/spec/markaby/rails/views/markaby/render_explicit_but_empty_markaby_layout.mab +0 -0
  85. data/markaby/spec/markaby/rails/views/markaby/render_mab_without_explicit_render_call.mab +0 -3
  86. data/markaby/spec/markaby/rails/views/markaby/render_with_ivar.mab +0 -3
  87. data/markaby/spec/markaby/rails/views/markaby/renders_erb.rhtml +0 -1
  88. data/markaby/spec/markaby/rails/views/markaby/renders_form_for_with_erb_body.mab +0 -3
  89. data/markaby/spec/markaby/rails/views/markaby/routes.mab +0 -1
  90. data/markaby/spec/markaby/rails/views/markaby/yielding.mab +0 -3
  91. data/markaby/spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab +0 -5
  92. data/markaby/spec/markaby/rails/views/markaby/yielding_two.mab +0 -7
  93. data/markaby/spec/markaby/rails/views/markaby/yielding_with_content_for.mab +0 -3
  94. data/markaby/spec/markaby/rails_test.rb +0 -380
  95. data/markaby/spec/markaby/rails_version_spec.rb +0 -37
  96. data/markaby/spec/markaby/sinatra/app.rb +0 -49
  97. data/markaby/spec/markaby/sinatra/sinatra_spec.rb +0 -67
  98. data/markaby/spec/markaby/sinatra/views/helpers.mab +0 -1
  99. data/markaby/spec/markaby/sinatra/views/layout.mab +0 -7
  100. data/markaby/spec/markaby/sinatra/views/markaby_template.mab +0 -0
  101. data/markaby/spec/markaby/sinatra/views/scope_instance_variables.mab +0 -3
  102. data/markaby/spec/markaby/sinatra/views/simple_html.mab +0 -4
  103. data/markaby/spec/markaby/sinatra/views/variables.mab +0 -3
  104. data/markaby/spec/markaby/tilt/erb.erb +0 -1
  105. data/markaby/spec/markaby/tilt/locals.mab +0 -1
  106. data/markaby/spec/markaby/tilt/markaby.mab +0 -1
  107. data/markaby/spec/markaby/tilt/markaby_other_static.mab +0 -1
  108. data/markaby/spec/markaby/tilt/render_twice.mab +0 -1
  109. data/markaby/spec/markaby/tilt/scope.mab +0 -1
  110. data/markaby/spec/markaby/tilt/yielding.mab +0 -2
  111. data/markaby/spec/markaby/tilt_spec.rb +0 -75
  112. data/markaby/spec/spec.opts +0 -2
  113. data/markaby/spec/spec_helper.rb +0 -44
@@ -1,18 +0,0 @@
1
- require 'markaby/tilt'
2
- require 'sinatra'
3
-
4
- module Sinatra
5
- class Base
6
- # sinatra's #render looks for options in Sinatra::Application
7
- # by asking if it responds_to?(:mab)
8
- # Unfortunately, if the the mab kernel method is included,
9
- # Sinatra::Application will respond_to? it.
10
- set :mab, {}
11
- end
12
-
13
- module Templates
14
- def mab(template, options={}, locals={})
15
- render :mab, template, options, locals
16
- end
17
- end
18
- end
@@ -1,200 +0,0 @@
1
- module Markaby
2
- FORM_TAGS = [ :form, :input, :select, :textarea ]
3
- SELF_CLOSING_TAGS = [ :base, :meta, :link, :hr, :br, :param, :img, :area, :input, :col, :frame ]
4
-
5
- # Common sets of attributes.
6
- AttrCore = [:id, :class, :style, :title]
7
- AttrI18n = [:lang, 'xml:lang'.intern, :dir]
8
- AttrEvents = [:onclick,
9
- :ondblclick,
10
- :onmousedown,
11
- :onmouseup,
12
- :onmouseover,
13
- :onmousemove,
14
- :onmouseout,
15
- :onkeypress,
16
- :onkeydown,
17
- :onkeyup]
18
- AttrFocus = [:accesskey, :tabindex, :onfocus, :onblur]
19
- AttrHAlign = [:align, :char, :charoff]
20
- AttrVAlign = [:valign]
21
- Attrs = AttrCore + AttrI18n + AttrEvents
22
-
23
- AttrsBoolean = [
24
- :checked, :disabled, :multiple, :readonly, :selected, # standard forms
25
- :autofocus, :required, :novalidate, :formnovalidate, # HTML5 forms
26
- :defer, :ismap, # <script defer>, <img ismap>
27
- :compact, :declare, :noresize, :noshade, :nowrap # deprecated or unused
28
- ]
29
-
30
- # All the tags and attributes from XHTML 1.0 Strict
31
- class XHTMLStrict
32
- class << self
33
- attr_accessor :tags, :tagset, :forms, :self_closing, :doctype
34
- end
35
-
36
- @doctype = ['-//W3C//DTD XHTML 1.0 Strict//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd']
37
- @tagset = {
38
- :html => AttrI18n + [:id, :xmlns],
39
- :head => AttrI18n + [:id, :profile],
40
- :title => AttrI18n + [:id],
41
- :base => [:href, :id],
42
- :meta => AttrI18n + [:id, :http, :name, :content, :scheme, 'http-equiv'.intern],
43
- :link => Attrs + [:charset, :href, :hreflang, :type, :rel, :rev, :media],
44
- :style => AttrI18n + [:id, :type, :media, :title, 'xml:space'.intern],
45
- :script => [:id, :charset, :type, :src, :defer, 'xml:space'.intern],
46
- :noscript => Attrs,
47
- :body => Attrs + [:onload, :onunload],
48
- :div => Attrs,
49
- :p => Attrs,
50
- :ul => Attrs,
51
- :ol => Attrs,
52
- :li => Attrs,
53
- :dl => Attrs,
54
- :dt => Attrs,
55
- :dd => Attrs,
56
- :address => Attrs,
57
- :hr => Attrs,
58
- :pre => Attrs + ['xml:space'.intern],
59
- :blockquote => Attrs + [:cite],
60
- :ins => Attrs + [:cite, :datetime],
61
- :del => Attrs + [:cite, :datetime],
62
- :a => Attrs + AttrFocus + [:charset, :type, :name, :href, :hreflang, :rel, :rev, :shape, :coords],
63
- :span => Attrs,
64
- :bdo => AttrCore + AttrEvents + [:lang, 'xml:lang'.intern, :dir],
65
- :br => AttrCore,
66
- :em => Attrs,
67
- :strong => Attrs,
68
- :dfn => Attrs,
69
- :code => Attrs,
70
- :samp => Attrs,
71
- :kbd => Attrs,
72
- :var => Attrs,
73
- :cite => Attrs,
74
- :abbr => Attrs,
75
- :acronym => Attrs,
76
- :q => Attrs + [:cite],
77
- :sub => Attrs,
78
- :sup => Attrs,
79
- :tt => Attrs,
80
- :i => Attrs,
81
- :b => Attrs,
82
- :big => Attrs,
83
- :small => Attrs,
84
- :object => Attrs + [:declare, :classid, :codebase, :data, :type, :codetype, :archive, :standby, :height, :width, :usemap, :name, :tabindex],
85
- :param => [:id, :name, :value, :valuetype, :type],
86
- :img => Attrs + [:src, :alt, :longdesc, :height, :width, :usemap, :ismap],
87
- :map => AttrI18n + AttrEvents + [:id, :class, :style, :title, :name],
88
- :area => Attrs + AttrFocus + [:shape, :coords, :href, :nohref, :alt],
89
- :form => Attrs + [:action, :method, :enctype, :onsubmit, :onreset, :accept, :accept],
90
- :label => Attrs + [:for, :accesskey, :onfocus, :onblur],
91
- :input => Attrs + AttrFocus + [:type, :name, :value, :checked, :disabled, :readonly, :size, :maxlength, :src, :alt, :usemap, :onselect, :onchange, :accept],
92
- :select => Attrs + [:name, :size, :multiple, :disabled, :tabindex, :onfocus, :onblur, :onchange],
93
- :optgroup => Attrs + [:disabled, :label],
94
- :option => Attrs + [:selected, :disabled, :label, :value],
95
- :textarea => Attrs + AttrFocus + [:name, :rows, :cols, :disabled, :readonly, :onselect, :onchange],
96
- :fieldset => Attrs,
97
- :legend => Attrs + [:accesskey],
98
- :button => Attrs + AttrFocus + [:name, :value, :type, :disabled],
99
- :table => Attrs + [:summary, :width, :border, :frame, :rules, :cellspacing, :cellpadding],
100
- :caption => Attrs,
101
- :colgroup => Attrs + AttrHAlign + AttrVAlign + [:span, :width],
102
- :col => Attrs + AttrHAlign + AttrVAlign + [:span, :width],
103
- :thead => Attrs + AttrHAlign + AttrVAlign,
104
- :tfoot => Attrs + AttrHAlign + AttrVAlign,
105
- :tbody => Attrs + AttrHAlign + AttrVAlign,
106
- :tr => Attrs + AttrHAlign + AttrVAlign,
107
- :th => Attrs + AttrHAlign + AttrVAlign + [:abbr, :axis, :headers, :scope, :rowspan, :colspan],
108
- :td => Attrs + AttrHAlign + AttrVAlign + [:abbr, :axis, :headers, :scope, :rowspan, :colspan],
109
- :h1 => Attrs,
110
- :h2 => Attrs,
111
- :h3 => Attrs,
112
- :h4 => Attrs,
113
- :h5 => Attrs,
114
- :h6 => Attrs
115
- }
116
-
117
- @tags = @tagset.keys
118
- @forms = @tags & FORM_TAGS
119
- @self_closing = @tags & SELF_CLOSING_TAGS
120
- end
121
-
122
- # Additional tags found in XHTML 1.0 Transitional
123
- class XHTMLTransitional
124
- class << self
125
- attr_accessor :tags, :tagset, :forms, :self_closing, :doctype
126
- end
127
-
128
- @doctype = ['-//W3C//DTD XHTML 1.0 Transitional//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd']
129
- @tagset = XHTMLStrict.tagset.merge({
130
- :strike => Attrs,
131
- :center => Attrs,
132
- :dir => Attrs + [:compact],
133
- :noframes => Attrs,
134
- :basefont => [:id, :size, :color, :face],
135
- :u => Attrs,
136
- :menu => Attrs + [:compact],
137
- :iframe => AttrCore + [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :scrolling, :align, :height, :width],
138
- :font => AttrCore + AttrI18n + [:size, :color, :face],
139
- :s => Attrs,
140
- :applet => AttrCore + [:codebase, :archive, :code, :object, :alt, :name, :width, :height, :align, :hspace, :vspace],
141
- :isindex => AttrCore + AttrI18n + [:prompt]
142
- })
143
-
144
- # Additional attributes found in XHTML 1.0 Transitional
145
- additional_tags = {
146
- :script => [:language],
147
- :a => [:target],
148
- :td => [:bgcolor, :nowrap, :width, :height],
149
- :p => [:align],
150
- :h5 => [:align],
151
- :h3 => [:align],
152
- :li => [:type, :value],
153
- :div => [:align],
154
- :pre => [:width],
155
- :body => [:background, :bgcolor, :text, :link, :vlink, :alink],
156
- :ol => [:type, :compact, :start],
157
- :h4 => [:align],
158
- :h2 => [:align],
159
- :object => [:align, :border, :hspace, :vspace],
160
- :img => [:name, :align, :border, :hspace, :vspace],
161
- :link => [:target],
162
- :legend => [:align],
163
- :dl => [:compact],
164
- :input => [:align],
165
- :h6 => [:align],
166
- :hr => [:align, :noshade, :size, :width],
167
- :base => [:target],
168
- :ul => [:type, :compact],
169
- :br => [:clear],
170
- :form => [:name, :target],
171
- :area => [:target],
172
- :h1 => [:align]
173
- }
174
-
175
- additional_tags.each do |k, v|
176
- @tagset[k] += v
177
- end
178
-
179
- @tags = @tagset.keys
180
- @forms = @tags & FORM_TAGS
181
- @self_closing = @tags & SELF_CLOSING_TAGS
182
- end
183
-
184
- # Additional tags found in XHTML 1.0 Frameset
185
- class XHTMLFrameset
186
- class << self
187
- attr_accessor :tags, :tagset, :forms, :self_closing, :doctype
188
- end
189
-
190
- @doctype = ['-//W3C//DTD XHTML 1.0 Frameset//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd']
191
- @tagset = XHTMLTransitional.tagset.merge({
192
- :frameset => AttrCore + [:rows, :cols, :onload, :onunload],
193
- :frame => AttrCore + [:longdesc, :name, :src, :frameborder, :marginwidth, :marginheight, :noresize, :scrolling]
194
- })
195
-
196
- @tags = @tagset.keys
197
- @forms = @tags & FORM_TAGS
198
- @self_closing = @tags & SELF_CLOSING_TAGS
199
- end
200
- end
@@ -1,8 +0,0 @@
1
- require 'markaby'
2
- require 'tilt'
3
-
4
- module Markaby
5
- module Tilt
6
- Template = ::Tilt::MarkabyTemplate
7
- end
8
- end
@@ -1,118 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Markaby
4
- describe Builder do
5
- before do
6
- Markaby::Builder.restore_defaults!
7
- end
8
-
9
- after do
10
- Markaby::Builder.restore_defaults!
11
- end
12
-
13
- it "should have method missing as a private method" do
14
- private_methods = Markaby::Builder.private_instance_methods.dup
15
- private_methods.map! { |m| m.to_sym }
16
- private_methods.should include(:method_missing)
17
- end
18
-
19
- describe "setting options" do
20
- it "should be able to restore defaults after setting" do
21
- Markaby::Builder.set :indent, 2
22
- Markaby::Builder.restore_defaults!
23
-
24
- Markaby::Builder.get(:indent).should == 0
25
- end
26
-
27
- it "should be able to set global options" do
28
- Markaby::Builder.set :indent, 2
29
- Markaby::Builder.get(:indent).should == 2
30
- end
31
- end
32
-
33
- describe "hidden internal variables" do
34
- # internal clobbering by passed in assigns
35
- it "should not overwrite internal helpers ivar when assigning a :helpers key" do
36
- helper = Class.new do
37
- def some_method
38
- "a value"
39
- end
40
- end.new
41
-
42
- builder = Markaby::Builder.new({:helpers => nil}, helper)
43
- builder.some_method.should == "a value"
44
- end
45
- end
46
-
47
- describe "evaluating blocks" do
48
- it "should evaluate a pure-string block (without requiring a call to the text method)" do
49
- b = Builder.new do
50
- "foo"
51
- end
52
-
53
- b.to_s.should == "foo"
54
- end
55
-
56
- it "should only evaluate the last argument in a pure-string block" do
57
- b = Builder.new do
58
- "foo"
59
- "bar"
60
- end
61
-
62
- b.to_s.should == "bar"
63
- end
64
-
65
- it "should evaluate pure-strings inside an tag" do
66
- b = Builder.new do
67
- h1 do
68
- "foo"
69
- end
70
- end
71
-
72
- b.to_s.should == "<h1>foo</h1>"
73
- end
74
-
75
- it "should ignore a pure string in the block, even if comes last, if there has been any markup whatsoever" do
76
- b = Builder.new do
77
- h1
78
- "foo"
79
- end
80
-
81
- b.to_s.should == "<h1/>"
82
- end
83
- end
84
-
85
- describe "capture" do
86
- before do
87
- @builder = Builder.new
88
- end
89
-
90
- it "should return the string captured" do
91
- out = @builder.capture do
92
- h1 "TEST"
93
- h2 "CAPTURE ME"
94
- end
95
-
96
- out.should == "<h1>TEST</h1><h2>CAPTURE ME</h2>"
97
- end
98
-
99
- it "should not change the output buffer" do
100
- lambda {
101
- @builder.capture do
102
- h1 "FOO!"
103
- end
104
- }.should_not change { @builder.to_s }
105
- end
106
-
107
- it "should be able to capture inside a capture" do
108
- out = @builder.capture do
109
- capture do
110
- h1 "foo"
111
- end
112
- end
113
-
114
- out.should == "<h1>foo</h1>"
115
- end
116
- end
117
- end
118
- end
@@ -1,47 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- class CssProxyTest < Test::Unit::TestCase
4
- it "should have method_missing as private" do
5
- methods = Markaby::CssProxy.private_instance_methods.dup
6
- methods.map! { |m| m.to_sym }
7
-
8
- methods.should include(:method_missing)
9
- end
10
-
11
- def mock_builder
12
- mock_builder = Class.new do
13
- def tag!(*args); end
14
- end.new
15
- end
16
-
17
- def test_responds_to_everything
18
- proxy = Markaby::CssProxy.new(mock_builder, 'stream', :sym)
19
-
20
- assert proxy.respond_to?(:any_method)
21
- assert proxy.respond_to?(:foobarbazasdfasdfadfs)
22
- end
23
-
24
- def test_does_not_respond_to_method_missing
25
- proxy = Markaby::CssProxy.new(mock_builder, 'stream', :sym)
26
-
27
- assert !proxy.respond_to?(:method_missing)
28
- end
29
-
30
- def test_does_respond_to_private_instance_methods_with_private_flag_set_to_true
31
- proxy = Markaby::CssProxy.new(mock_builder, 'stream', :sym)
32
-
33
- assert proxy.respond_to?(:method_missing, true)
34
- end
35
-
36
- def test_does_not_respond_to_private_instance_methods_with_private_flag_set_to_false
37
- proxy = Markaby::CssProxy.new(mock_builder, 'stream', :sym)
38
-
39
- assert !proxy.respond_to?(:method_missing, false)
40
- end
41
-
42
- def test_respond_to_should_always_return_boolean
43
- proxy = Markaby::CssProxy.new(mock_builder, 'stream', :sym)
44
-
45
- assert_equal proxy.respond_to?(:method_missing, :a_value), true
46
- end
47
- end
@@ -1,10 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- class FragmentTest < Test::Unit::TestCase
4
- it "should have method_missing as a private instance method" do
5
- private_methods = Markaby::Fragment.private_instance_methods.dup
6
- private_methods.map! { |m| m.to_sym }
7
-
8
- private_methods.should include(:method_missing)
9
- end
10
- end
@@ -1 +0,0 @@
1
- text "_why?"
@@ -1,184 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- describe Markaby do
4
- it "can assign helpers after instantiation" do
5
- helper = mock 'helper', :foo => :bar
6
-
7
- builder = Markaby::Builder.new
8
- builder.helper = helper
9
- builder.foo.should == :bar
10
- end
11
-
12
- it "should be able to set a local" do
13
- builder = Markaby::Builder.new
14
- builder.locals = { :foo => "bar" }
15
- builder.foo.should == "bar"
16
- end
17
-
18
- it "should be able to set a different local value" do
19
- builder = Markaby::Builder.new
20
- builder.locals = { :foo => "baz" }
21
- builder.foo.should == "baz"
22
- end
23
-
24
- it "should assign the correct key" do
25
- builder = Markaby::Builder.new
26
- builder.locals = { :key => :value }
27
- builder.key.should == :value
28
- end
29
-
30
- it "should be able to assign multiple locals" do
31
- builder = Markaby::Builder.new
32
-
33
- builder.locals = { :one => "two", :three => "four" }
34
-
35
- builder.one.should == "two"
36
- builder.three.should == "four"
37
- end
38
-
39
- def test_builder_bang_methods
40
- assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>", mab { instruct! }
41
- end
42
-
43
- it "should be able to produce the correct html from a fragment" do
44
- str = ""
45
- str += "<div>"
46
- str += "<h1>Monkeys</h1>"
47
- str += "<h2>Giraffes <small>Miniature</small> and <strong>Large</strong></h2>"
48
- str += "<h3>Donkeys</h3>"
49
- str += "<h4>Parakeet <b><i>Innocent IV</i></b> in Classic Chartreuse</h4>"
50
- str += "</div>"
51
-
52
- generated = mab {
53
- div {
54
- h1 "Monkeys"
55
- h2 {
56
- "Giraffes #{small('Miniature')} and #{strong 'Large'}"
57
- }
58
- h3 "Donkeys"
59
- h4 { "Parakeet #{b { i 'Innocent IV' }} in Classic Chartreuse" }
60
- }
61
- }
62
-
63
- generated.should == str
64
- end
65
-
66
- def test_fragments
67
- assert_equal %{<div><h1>Monkeys</h1><h2>Giraffes <strong>Miniature</strong></h2><h3>Donkeys</h3></div>},
68
- mab { div { h1 "Monkeys"; h2 { "Giraffes #{strong 'Miniature' }" }; h3 "Donkeys" } }
69
-
70
- assert_equal %{<div><h1>Monkeys</h1><h2>Giraffes <small>Miniature</small> and <strong>Large</strong></h2><h3>Donkeys</h3><h4>Parakeet <strong>Large</strong> as well...</h4></div>},
71
- mab { div { @a = small 'Miniature'; @b = strong 'Large'; h1 "Monkeys"; h2 { "Giraffes #{@a} and #{@b}" }; h3 "Donkeys"; h4 { "Parakeet #{@b} as well..." } } }
72
- end
73
-
74
- def test_invalid_xhtml
75
- assert_exception(NoMethodError, "undefined method `dav'") { dav {} }
76
- assert_exception(Markaby::InvalidXhtmlError, "no attribute `styl' on div elements") { div(:styl => 'ok') {} }
77
- assert_exception(Markaby::InvalidXhtmlError, "no attribute `class' on tbody elements") { tbody.okay {} }
78
- end
79
-
80
- def test_full_doc_transitional
81
- doc = mab { xhtml_transitional { head { title 'OKay' } } }
82
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
83
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">})
84
- assert doc.include?(%{<title>OKay</title>})
85
- end
86
-
87
- def test_full_doc_strict
88
- doc = mab { xhtml_strict { head { title 'OKay' } } }
89
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
90
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">})
91
- assert doc.include?(%{<title>OKay</title>})
92
- end
93
-
94
- def test_full_doc_frameset
95
- doc = mab { xhtml_frameset { head { title 'OKay' } } }
96
- assert doc =~ /^<\?xml version="1.0" encoding="UTF-8"\?>/
97
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">})
98
- assert doc.include?(%{<title>OKay</title>})
99
- end
100
-
101
- def test_root_attributes_can_be_changed
102
- doc = mab { xhtml_strict(:lang => 'fr') { head { title { 'Salut!' } } } }
103
- assert doc.include?(%{"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">})
104
- assert doc.include?(%{<title>Salut!</title>})
105
- assert doc.include?(%{ lang="fr"})
106
- end
107
-
108
- def version_file
109
- File.expand_path(File.dirname(__FILE__) + "/../../VERSION")
110
- end
111
-
112
- def test_markaby_should_have_correct_version
113
- assert_equal Markaby::VERSION, File.read(version_file).strip
114
- end
115
-
116
- def test_duplicate_usage_of_same_id
117
- assert_raises Markaby::InvalidXhtmlError do
118
- mab do
119
- p.one!
120
- p.one!
121
- end
122
- end
123
- end
124
-
125
- # auto validation
126
-
127
- def test_tagging_with_invalid_tag_should_raise_error
128
- assert_raises Markaby::InvalidXhtmlError do
129
- mab do
130
- tag! :an_invalid_tag
131
- end
132
- end
133
- end
134
-
135
- def test_self_closing_html_tag_with_block_throws_errors
136
- assert_raises Markaby::InvalidXhtmlError do
137
- mab do
138
- html_tag :img do
139
- end
140
- end
141
- end
142
- end
143
-
144
- def test_local_assigning
145
- builder = Markaby::Builder.new(:variable => :a_value)
146
-
147
- assert_equal :a_value, builder.variable
148
- end
149
-
150
- def test_local_assignment_with_strings
151
- builder = Markaby::Builder.new("variable" => :a_value)
152
- assert_equal :a_value, builder.variable
153
- end
154
-
155
- def test_local_assignment_prefers_symbols_to_strings
156
- builder = Markaby::Builder.new("variable" => "string_value", :variable => :symbol_value)
157
- assert_equal :symbol_value, builder.variable
158
- end
159
-
160
- def test_method_missing_should_call_tag_if_no_tagset_present
161
- Markaby::Builder.set(:tagset, nil)
162
-
163
- builder = Markaby::Builder.new
164
- builder.something.should == "<something/>"
165
- end
166
-
167
- it "should copy instance variables from a helper object" do
168
- klass = Class.new do
169
- def initialize
170
- @hello = "hello there"
171
- end
172
- end
173
-
174
- builder = Markaby::Builder.new({}, klass.new)
175
- builder.capture { @hello }.should == "hello there"
176
- end
177
-
178
- describe Markaby::InvalidXhtmlError do
179
- it "should inherit from StandardError" do
180
- Markaby::InvalidXhtmlError.superclass.should == StandardError
181
- end
182
- end
183
- end
184
-