# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com
# All files in this distribution are subject to the terms of the Ruby license.
require 'erector'
module Ramaze
module Helper
##
# Allows you to use some shortcuts for Erector in your Controller.
#
# use this inside your controller to directly build Erector
# Refer to the Erector-documentation and testsuite for more examples.
#
# @example
# erector { h1 "Apples & Oranges" } #=> "
Apples & Oranges
"
# erector { h1(:class => 'fruits&floots'){ text 'Apples' } }
#
module Erector
include ::Erector::Mixin
class ::Erector::Widget
alias :raw! :rawtext
alias :old_css :css
##
# Method that generates a XHTML 1.0 Strict doctype.
#
# @example
#
# strict_html do
# head do
# title "Ramaze Rocks!"
# end
# body
# div do
#
# end
# end
# end
#
# @param [Hash] args Hash containing extra options such as the xml:lang
# and xmlns attribute.
# @param [Block] block Block that contains the inner data of the
# element.
#
def strict_xhtml(*args, &block)
raw! ''
raw! ''
html(:xmlns => "http://www.w3.org/1999/xhtml", :"xml:lang" => "en", :lang => "en", &block)
end
##
# Generate a Javascript tag.
#
# @example
#
# js 'javascript/jquery.js'
#
# @param [String] src The full or relative path to the Javascript file.
#
def js(src)
script :src => src
end
##
# Generate a pair of conditional tags for a specific browser.
#
# @example
#
# ie_if 'IE' do
# ......
# end
#
# @param [String] expr The if expression, such as 'IE' or 'lte IE7'.
# @param [block] block Block that contains the data that needs to be
# loaded for the specified browser.
#
def ie_if(expr, &block)
raw! ""
end
##
# Inspect the specified element.
#
# @param [String] elem The element to inspect.
#
def inspect(elem)
text elem.inspect
end
##
# Generate a stylesheet tag.
#
# @example
#
# css 'css/reset.css', :media => 'print'
#
# @param [String] href The path (either absolute or relative) to the CSS
# file.
# @param [Hash] args A hash containing additional arguments to add to
# the CSS tag.
#
def css(href, args = {})
attrs = {
:rel => "stylesheet",
:href => href,
:type => "text/css"
}.merge(args)
link attrs
end
end # Erector::Widget
end # Erector
end # Helper
end # Ramaze