markaby 0.7.2 → 0.8.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 (73) hide show
  1. data/.gitignore +21 -0
  2. data/{spec/spec.opts → .rspec} +0 -0
  3. data/Gemfile +8 -0
  4. data/Markaby.gemspec +20 -105
  5. data/README.rdoc +12 -94
  6. data/Rakefile +19 -50
  7. data/lib/markaby.rb +1 -5
  8. data/lib/markaby/builder.rb +15 -1
  9. data/lib/markaby/builder_tags.rb +22 -2
  10. data/lib/markaby/kernel_method.rb +1 -0
  11. data/lib/markaby/tags.rb +91 -2
  12. data/lib/markaby/version.rb +3 -0
  13. data/spec/markaby/{css_proxy_test.rb → css_proxy_spec.rb} +12 -17
  14. data/spec/markaby/{fragment_test.rb → fragment_spec.rb} +0 -0
  15. data/spec/markaby/html5_spec.rb +100 -0
  16. data/spec/markaby/markaby_spec.rb +1 -1
  17. data/spec/markaby/{markaby_test.rb → markaby_test_unit_spec.rb} +1 -1
  18. data/spec/spec_helper.rb +0 -5
  19. metadata +70 -76
  20. data/garlic.rb +0 -29
  21. data/init.rb +0 -6
  22. data/lib/markaby/rails.rb +0 -75
  23. data/lib/markaby/rails/current.rb +0 -85
  24. data/lib/markaby/rails/deprecated.rb +0 -124
  25. data/lib/markaby/rails/rails_builder.rb +0 -91
  26. data/lib/markaby/sinatra.rb +0 -18
  27. data/lib/markaby/tilt.rb +0 -8
  28. data/spec/markaby/markaby_other_static.mab +0 -1
  29. data/spec/markaby/rails/spec_helper.rb +0 -29
  30. data/spec/markaby/rails/views/layouts/layout.mab +0 -11
  31. data/spec/markaby/rails/views/markaby/_a_partial.mab +0 -3
  32. data/spec/markaby/rails/views/markaby/_form_for_with_body_in_erb.erb +0 -1
  33. data/spec/markaby/rails/views/markaby/_partial_child_with_locals.mab +0 -1
  34. data/spec/markaby/rails/views/markaby/access_to_helpers.mab +0 -1
  35. data/spec/markaby/rails/views/markaby/broken.mab +0 -7
  36. data/spec/markaby/rails/views/markaby/commented_out_template.mab +0 -1
  37. data/spec/markaby/rails/views/markaby/correct_template_values.mab +0 -5
  38. data/spec/markaby/rails/views/markaby/double_output.mab +0 -8
  39. data/spec/markaby/rails/views/markaby/form_for.mab +0 -2
  40. data/spec/markaby/rails/views/markaby/form_for_with_fields.mab +0 -3
  41. data/spec/markaby/rails/views/markaby/form_for_with_multiple_fields.mab +0 -4
  42. data/spec/markaby/rails/views/markaby/no_values_passed.mab +0 -3
  43. data/spec/markaby/rails/views/markaby/partial_parent.mab +0 -1
  44. data/spec/markaby/rails/views/markaby/partial_parent_with_locals.mab +0 -7
  45. data/spec/markaby/rails/views/markaby/render_erb_without_explicit_render_call.erb +0 -1
  46. data/spec/markaby/rails/views/markaby/render_explicit_but_empty_markaby_layout.mab +0 -0
  47. data/spec/markaby/rails/views/markaby/render_mab_without_explicit_render_call.mab +0 -3
  48. data/spec/markaby/rails/views/markaby/render_with_ivar.mab +0 -3
  49. data/spec/markaby/rails/views/markaby/renders_erb.rhtml +0 -1
  50. data/spec/markaby/rails/views/markaby/renders_form_for_with_erb_body.mab +0 -3
  51. data/spec/markaby/rails/views/markaby/routes.mab +0 -1
  52. data/spec/markaby/rails/views/markaby/yielding.mab +0 -3
  53. data/spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab +0 -5
  54. data/spec/markaby/rails/views/markaby/yielding_two.mab +0 -7
  55. data/spec/markaby/rails/views/markaby/yielding_with_content_for.mab +0 -3
  56. data/spec/markaby/rails_test.rb +0 -380
  57. data/spec/markaby/rails_version_spec.rb +0 -37
  58. data/spec/markaby/sinatra/app.rb +0 -49
  59. data/spec/markaby/sinatra/sinatra_spec.rb +0 -67
  60. data/spec/markaby/sinatra/views/helpers.mab +0 -1
  61. data/spec/markaby/sinatra/views/layout.mab +0 -7
  62. data/spec/markaby/sinatra/views/markaby_template.mab +0 -0
  63. data/spec/markaby/sinatra/views/scope_instance_variables.mab +0 -3
  64. data/spec/markaby/sinatra/views/simple_html.mab +0 -4
  65. data/spec/markaby/sinatra/views/variables.mab +0 -3
  66. data/spec/markaby/tilt/erb.erb +0 -1
  67. data/spec/markaby/tilt/locals.mab +0 -1
  68. data/spec/markaby/tilt/markaby.mab +0 -1
  69. data/spec/markaby/tilt/markaby_other_static.mab +0 -1
  70. data/spec/markaby/tilt/render_twice.mab +0 -1
  71. data/spec/markaby/tilt/scope.mab +0 -1
  72. data/spec/markaby/tilt/yielding.mab +0 -2
  73. data/spec/markaby/tilt_spec.rb +0 -75
@@ -0,0 +1,21 @@
1
+ .garlic
2
+ pkg
3
+ _site
4
+
5
+ *.gem
6
+ *.rbc
7
+ .bundle
8
+ .config
9
+ .yardoc
10
+ Gemfile.lock
11
+ InstalledFiles
12
+ _yardoc
13
+ coverage
14
+ doc/
15
+ lib/bundler/man
16
+ pkg
17
+ rdoc
18
+ spec/reports
19
+ test/tmp
20
+ test/version_tmp
21
+ tmp
File without changes
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'builder'
4
+
5
+ group :test do
6
+ gem 'rake'
7
+ gem 'rspec'
8
+ end
@@ -1,109 +1,24 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'markaby/version'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{markaby}
8
- s.version = "0.7.2"
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "markaby"
8
+ spec.version = Markaby::VERSION
9
+ spec.authors = ["Scott Taylor", "judofyr", "_why"]
10
+ spec.email = ["scott@railsnewbie.com"]
11
+ spec.description = "_why's markaby templating language"
12
+ spec.summary = "A pure ruby based, html markup language"
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
9
15
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{_why}, %q{Tim Fletcher}, %q{John Barton}, %q{spox}, %q{smtlaissezfaire}]
12
- s.date = %q{2011-08-23}
13
- s.description = %q{Tim Fletcher and _why's ruby driven HTML templating system}
14
- s.email = %q{scott@railsnewbie.com}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "CHANGELOG.rdoc",
20
- "Markaby.gemspec",
21
- "README.rdoc",
22
- "Rakefile",
23
- "VERSION",
24
- "garlic.rb",
25
- "init.rb",
26
- "lib/markaby.rb",
27
- "lib/markaby/builder.rb",
28
- "lib/markaby/builder_tags.rb",
29
- "lib/markaby/cssproxy.rb",
30
- "lib/markaby/kernel_method.rb",
31
- "lib/markaby/rails.rb",
32
- "lib/markaby/rails/current.rb",
33
- "lib/markaby/rails/deprecated.rb",
34
- "lib/markaby/rails/rails_builder.rb",
35
- "lib/markaby/sinatra.rb",
36
- "lib/markaby/tags.rb",
37
- "lib/markaby/tilt.rb",
38
- "spec/markaby/builder_spec.rb",
39
- "spec/markaby/css_proxy_test.rb",
40
- "spec/markaby/fragment_test.rb",
41
- "spec/markaby/markaby_other_static.mab",
42
- "spec/markaby/markaby_spec.rb",
43
- "spec/markaby/markaby_test.rb",
44
- "spec/markaby/rails/spec_helper.rb",
45
- "spec/markaby/rails/views/layouts/layout.mab",
46
- "spec/markaby/rails/views/markaby/_a_partial.mab",
47
- "spec/markaby/rails/views/markaby/_form_for_with_body_in_erb.erb",
48
- "spec/markaby/rails/views/markaby/_partial_child_with_locals.mab",
49
- "spec/markaby/rails/views/markaby/access_to_helpers.mab",
50
- "spec/markaby/rails/views/markaby/broken.mab",
51
- "spec/markaby/rails/views/markaby/commented_out_template.mab",
52
- "spec/markaby/rails/views/markaby/correct_template_values.mab",
53
- "spec/markaby/rails/views/markaby/double_output.mab",
54
- "spec/markaby/rails/views/markaby/form_for.mab",
55
- "spec/markaby/rails/views/markaby/form_for_with_fields.mab",
56
- "spec/markaby/rails/views/markaby/form_for_with_multiple_fields.mab",
57
- "spec/markaby/rails/views/markaby/no_values_passed.mab",
58
- "spec/markaby/rails/views/markaby/partial_parent.mab",
59
- "spec/markaby/rails/views/markaby/partial_parent_with_locals.mab",
60
- "spec/markaby/rails/views/markaby/render_erb_without_explicit_render_call.erb",
61
- "spec/markaby/rails/views/markaby/render_explicit_but_empty_markaby_layout.mab",
62
- "spec/markaby/rails/views/markaby/render_mab_without_explicit_render_call.mab",
63
- "spec/markaby/rails/views/markaby/render_with_ivar.mab",
64
- "spec/markaby/rails/views/markaby/renders_erb.rhtml",
65
- "spec/markaby/rails/views/markaby/renders_form_for_with_erb_body.mab",
66
- "spec/markaby/rails/views/markaby/routes.mab",
67
- "spec/markaby/rails/views/markaby/yielding.mab",
68
- "spec/markaby/rails/views/markaby/yielding_content_for_with_block_helper.mab",
69
- "spec/markaby/rails/views/markaby/yielding_two.mab",
70
- "spec/markaby/rails/views/markaby/yielding_with_content_for.mab",
71
- "spec/markaby/rails_test.rb",
72
- "spec/markaby/rails_version_spec.rb",
73
- "spec/markaby/sinatra/app.rb",
74
- "spec/markaby/sinatra/sinatra_spec.rb",
75
- "spec/markaby/sinatra/views/helpers.mab",
76
- "spec/markaby/sinatra/views/layout.mab",
77
- "spec/markaby/sinatra/views/markaby_template.mab",
78
- "spec/markaby/sinatra/views/scope_instance_variables.mab",
79
- "spec/markaby/sinatra/views/simple_html.mab",
80
- "spec/markaby/sinatra/views/variables.mab",
81
- "spec/markaby/tilt/erb.erb",
82
- "spec/markaby/tilt/locals.mab",
83
- "spec/markaby/tilt/markaby.mab",
84
- "spec/markaby/tilt/markaby_other_static.mab",
85
- "spec/markaby/tilt/render_twice.mab",
86
- "spec/markaby/tilt/scope.mab",
87
- "spec/markaby/tilt/yielding.mab",
88
- "spec/markaby/tilt_spec.rb",
89
- "spec/spec.opts",
90
- "spec/spec_helper.rb"
91
- ]
92
- s.homepage = %q{http://markaby.github.com/markaby/}
93
- s.require_paths = [%q{lib}]
94
- s.rubygems_version = %q{1.8.6}
95
- s.summary = %q{Markup as Ruby, write HTML in your native Ruby tongue}
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
96
20
 
97
- if s.respond_to? :specification_version then
98
- s.specification_version = 3
99
-
100
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
101
- s.add_runtime_dependency(%q<builder>, [">= 2.0.0"])
102
- else
103
- s.add_dependency(%q<builder>, [">= 2.0.0"])
104
- end
105
- else
106
- s.add_dependency(%q<builder>, [">= 2.0.0"])
107
- end
21
+ spec.add_dependency "builder"
22
+ spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "rake"
108
24
  end
109
-
@@ -5,70 +5,27 @@ It is an alternative to ERb which weaves the two languages together.
5
5
  Also a replacement for templating languages which use primitive languages
6
6
  that blend with HTML.
7
7
 
8
- == Using Markaby as a Rails plugin / gem
9
-
10
- Write Rails templates in pure Ruby. Example layout:
11
-
12
- html do
13
- head do
14
- title 'Products: ' + action_name
15
- stylesheet_link_tag 'scaffold'
16
- end
17
-
18
- body do
19
- p flash[:notice], :style => "color: green"
20
-
21
- div.signup! do
22
- form_for @user do |f|
23
- f.text_field :email
24
- end
25
- end
26
-
27
- yield
28
- end
29
- end
30
-
31
- Markaby templates end in .mab
32
-
33
- Markaby supports many versions of rails, including the latest rails:
34
-
35
- 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 2.2.0,
36
- 2.2.1, 2.2.2, 2.2.3, 2.3.1, 2.3.2, 2.3.2.1,
37
- 2.3.3, 2.3.3.1, 2.3.4, 2.3.5, 2.3.6, 2.3.7,
38
- 2.3.8
39
-
40
- Rails 3.0 support is planned.
41
-
42
- === Install it as a plugin
43
-
44
- script/plugin install git://github.com/markaby/markaby.git
45
-
46
8
  === Install it as a gem
47
9
 
48
10
  gem install markaby
49
11
 
50
- If you are loading it in a different way (from a gem), make sure
51
- it's on the $LOAD_PATH, and add the following in
52
- an initializer (config/initializers/markaby.rb will work):
53
-
54
- require 'markaby'
55
- require 'markaby/rails'
56
-
57
- Markaby::Rails.load
58
-
59
- Or, you could try config.gem, but that's now known as a bad idea.
60
-
61
-
62
12
  == Using Markaby with Sinatra (1.0+)
63
13
 
64
- require 'markaby/sinatra'
65
-
66
14
  get '/foo' do
67
15
  mab :my_template # my_template.mab in the sinatra view path
68
16
  end
69
17
 
70
18
  If you are looking for sinatra support pre 0.7, see http://github.com/sbfaulkner/sinatra-markaby
71
19
 
20
+ A note on Tilt - using markaby with html5 doesn't quite yet work properly. If you'd like to render a template with html 5, call this at the start of a .mab template:
21
+
22
+ enable_html5!
23
+
24
+ Or enable html 5 globally:
25
+
26
+ Markaby::Builder.class_eval do
27
+ @@options = Markaby::Builder::HTML5_OPTIONS
28
+ end
72
29
 
73
30
  == Using Markaby with other frameworks
74
31
 
@@ -174,15 +131,15 @@ Which results in:
174
131
  == 3. Validate Your XHTML 1.0 Output
175
132
 
176
133
  If you'd like Markaby to help you assemble valid XHTML documents,
177
- you can use the <tt>xhtml_transitional</tt> or <tt>xhtml_strict</tt>
134
+ you can use the <tt>html5</tt>, <tt>xhtml_transitional</tt> or <tt>xhtml_strict</tt>
178
135
  methods in place of the normal <tt>html</tt> tag.
179
136
 
180
- xhtml_strict do
137
+ html5 do
181
138
  head { ... }
182
139
  body { ... }
183
140
  end
184
141
 
185
- This will add the XML instruction and the doctype tag to your document.
142
+ This will add the XML instruction and the doctype tag to your document (for xhtml_strict and xhtml_transitional).
186
143
  Also, a character set meta tag will be placed inside your <tt>head</tt>
187
144
  tag.
188
145
 
@@ -263,45 +220,6 @@ won't work with this technique.
263
220
  end
264
221
  end
265
222
 
266
- = A Note About Rails Helpers
267
-
268
- When used in Rails templates, the Rails helper object is passed into
269
- Markaby::Builder. When you call helper methods inside Markaby, the output
270
- from those methods will be output to the stream. This is incredibly
271
- handy, since most Rails helpers output HTML tags.
272
-
273
- head do
274
- javascript_include_tag 'prototype'
275
- autodiscovery_link_tag
276
- end
277
-
278
- However, some methods are designed to give back a String which you can use
279
- elsewhere. That's okay! Every method returns a Fragment object, which can
280
- be used as a string.
281
-
282
- p { "Total is: #{number_to_human_size @file_bytes}" }
283
-
284
- Also see the Quick Tour above, specifically the stuff about auto-stringification.
285
-
286
- If for any reason you have trouble with fragments, you can just
287
- call the <tt>@helpers</tt> object with the method and you'll get
288
- the String back and nothing will be output.
289
-
290
- p { "Total is: #{@helpers.number_to_human_size @file_bytes}" }
291
-
292
- Conversely, you may call instance variables from your controller by using
293
- a method and its value will be returned, nothing will be output.
294
-
295
- # Inside imaginary ProductController
296
- def list
297
- @products = Product.find :all
298
- end
299
-
300
- # Inside app/views/product/list.mab
301
- products.each do |product|
302
- p product.title
303
- end
304
-
305
223
  = Credits
306
224
 
307
225
  Markaby is a work of immense hope by Tim Fletcher and why the lucky stiff.
data/Rakefile CHANGED
@@ -1,43 +1,12 @@
1
1
  require 'rake'
2
+ require "bundler/gem_tasks"
2
3
  require 'rspec/core/rake_task'
3
- require 'rake/testtask'
4
4
  require 'rake/clean'
5
5
 
6
- begin
7
- require 'hanna/rdoctask'
8
-
9
- Rake::RDocTask.new do |rdoc|
10
- rdoc.rdoc_dir = 'doc/rdoc'
11
- rdoc.options << '--line-numbers'
12
- rdoc.rdoc_files.add(['README.rdoc', 'CHANGELOG.rdoc', 'lib/**/*.rb'])
13
- end
14
- rescue LoadError
15
- puts "Could not load hanna-rdoc. Please install with mislav-hanna package"
16
- end
17
-
18
- task :default => [:spec, :test]
19
-
20
- Rake::TestTask.new(:test) do |t|
21
- t.pattern = 'spec/markaby/*_test.rb'
22
- end
23
-
24
6
  RSpec::Core::RakeTask.new(:spec)
7
+ task :default => :spec
25
8
 
26
- begin
27
- require 'jeweler'
28
-
29
- Jeweler::Tasks.new do |gemspec|
30
- gemspec.name = "markaby"
31
- gemspec.summary = "Markup as Ruby, write HTML in your native Ruby tongue"
32
- gemspec.description = "Tim Fletcher and _why's ruby driven HTML templating system"
33
- gemspec.email = "scott@railsnewbie.com"
34
- gemspec.homepage = "http://markaby.github.com/markaby/"
35
- gemspec.authors = ["_why", "Tim Fletcher", "John Barton", "spox", "smtlaissezfaire"]
36
- gemspec.add_dependency 'builder', '>=2.0.0'
37
- end
38
- rescue LoadError
39
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
40
- end
9
+ Bundler::GemHelper.install_tasks
41
10
 
42
11
  desc "List any Markaby specific warnings"
43
12
  task :warnings do
@@ -60,19 +29,19 @@ namespace :gemspec do
60
29
  end
61
30
  end
62
31
 
63
- namespace :release do
64
- task :patch => [:spec, "version:bump:patch", :update_gemspec, :rerdoc, :tag_release, :build, :push_tags]
65
-
66
- task :update_gemspec => ["gemspec:generate", "gemspec:validate", "gemspec:commit"]
67
- task :tag_release do
68
- require File.dirname(__FILE__) + "/lib/markaby"
69
- version = "v#{Markaby::VERSION}"
70
- sh "git tag #{version}"
71
- end
72
-
73
- task :push_tags do
74
- sh "git push --tags"
75
- end
76
- end
77
-
78
- task :release => "release:patch"
32
+ # namespace :release do
33
+ # task :patch => [:spec, "version:bump:patch", :update_gemspec, :rerdoc, :tag_release, :build, :push_tags]
34
+ #
35
+ # task :update_gemspec => ["gemspec:generate", "gemspec:validate", "gemspec:commit"]
36
+ # task :tag_release do
37
+ # require File.dirname(__FILE__) + "/lib/markaby"
38
+ # version = "v#{Markaby::VERSION}"
39
+ # sh "git tag #{version}"
40
+ # end
41
+ #
42
+ # task :push_tags do
43
+ # sh "git push --tags"
44
+ # end
45
+ # end
46
+ #
47
+ # task :release => "release:patch"
@@ -16,15 +16,11 @@ $:.unshift File.expand_path(File.dirname(__FILE__))
16
16
  # * Markaby::MetAid: metaprogramming helper methods.
17
17
  # * Markaby::Tags: lists the roles of various XHTML tags to help Builder
18
18
  # use these tags as they are intended.
19
- # * Markaby::Template: a class for hooking Markaby into Rails as a
20
- # proper templating language.
21
19
  module Markaby
22
- version_file = File.expand_path(File.dirname(__FILE__) + "/../VERSION")
23
- VERSION = File.read(version_file).strip
24
-
25
20
  class InvalidXhtmlError < StandardError; end
26
21
  end
27
22
 
23
+ require "markaby/version"
28
24
  require 'builder' unless defined?(Builder)
29
25
  require 'markaby/builder'
30
26
  require 'markaby/cssproxy'
@@ -28,7 +28,7 @@ module Markaby
28
28
  :indent => 0,
29
29
  :output_helpers => true,
30
30
  :output_xml_instruction => true,
31
- :output_meta_tag => true,
31
+ :output_meta_tag => 'xhtml',
32
32
  :auto_validation => true,
33
33
  :tagset => Markaby::XHTMLTransitional,
34
34
  :root_attributes => {
@@ -38,12 +38,26 @@ module Markaby
38
38
  }
39
39
  }
40
40
 
41
+ HTML5_OPTIONS = {
42
+ :indent => 0,
43
+ :output_helpers => true,
44
+ :output_xml_instruction => false,
45
+ :output_meta_tag => 'html5',
46
+ :auto_validation => true,
47
+ :tagset => Markaby::HTML5,
48
+ :root_attributes => {}
49
+ }
50
+
41
51
  @@options = DEFAULT_OPTIONS.dup
42
52
 
43
53
  def self.restore_defaults!
44
54
  @@options = DEFAULT_OPTIONS.dup
45
55
  end
46
56
 
57
+ def self.set_html5_options!
58
+ @@options = HTML5_OPTIONS.dup
59
+ end
60
+
47
61
  def self.set(option, value)
48
62
  @@options[option] = value
49
63
  end
@@ -1,6 +1,6 @@
1
1
  module Markaby
2
2
  module BuilderTags
3
- (XHTMLTransitional.tags - [:head]).each do |k|
3
+ (HTML5.tags - [:head]).each do |k|
4
4
  class_eval <<-CODE, __FILE__, __LINE__
5
5
  def #{k}(*args, &block)
6
6
  html_tag(#{k.inspect}, *args, &block)
@@ -28,7 +28,8 @@ module Markaby
28
28
  # set to <tt>text/html; charset=utf-8</tt>.
29
29
  def head(*args, &block)
30
30
  tag!(:head, *args) do
31
- tag!(:meta, "http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8") if @output_meta_tag
31
+ tag!(:meta, "http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8") if @output_meta_tag == 'xhtml'
32
+ tag!(:meta, "charset" => "utf-8") if @output_meta_tag == 'html5'
32
33
  instance_eval(&block)
33
34
  end
34
35
  end
@@ -53,6 +54,20 @@ module Markaby
53
54
  xhtml_html(attrs, &block)
54
55
  end
55
56
 
57
+ # Builds an html tag with HTML5 doctype instead.
58
+ def html5(attrs = {}, &block)
59
+ enable_html5!
60
+ html5_html(attrs, &block)
61
+ end
62
+
63
+ def enable_html5!
64
+ self.tagset = Markaby::HTML5
65
+
66
+ Markaby::Builder::HTML5_OPTIONS.each do |k, v|
67
+ self.instance_variable_set("@#{k}".to_sym, v)
68
+ end
69
+ end
70
+
56
71
  private
57
72
 
58
73
  def xhtml_html(attrs = {}, &block)
@@ -60,5 +75,10 @@ module Markaby
60
75
  declare!(:DOCTYPE, :html, :PUBLIC, *tagset.doctype)
61
76
  tag!(:html, @root_attributes.merge(attrs), &block)
62
77
  end
78
+
79
+ def html5_html(attrs = {}, &block)
80
+ declare!(:DOCTYPE, :html)
81
+ tag!(:html, @root_attributes.merge(attrs), &block)
82
+ end
63
83
  end
64
84
  end