Gestalt is the custom HTML/XML builder for Ramaze, based on a very simple DSL it will build your markup.
@example
html = Gestalt.build do html do head do title "Hello, World!" end body do h1 "Hello, World!" end end end
The default way to start building your markup. Takes a block and returns the markup.
@param [Block] block
# File lib/ramaze/gestalt.rb, line 31 31: def self.build(&block) 32: self.new(&block).to_s 33: end
Gestalt.new is like ::build but will return itself. you can either access # or .to_s it, which will return the actual markup.
Useful for distributed building of one page.
@param [Block] block
# File lib/ramaze/gestalt.rb, line 44 44: def initialize(&block) 45: @out = [] 46: instance_eval(&block) if block_given? 47: end
Build a tag for `name`, using `args` and an optional block that will be yielded.
@param [String] name @param [Hash] attr @param [Hash] text
# File lib/ramaze/gestalt.rb, line 110 110: def _gestalt_build_tag(name, attr = {}, text = []) 111: @out << "<#{name}" 112: @out << attr.map{|(k,v)| %[ #{k}="#{_gestalt_escape_entities(v)}"] }.join 113: if text != [] or block_given? 114: @out << ">" 115: @out << _gestalt_escape_entities([text].join) 116: if block_given? 117: text = yield 118: @out << text.to_str if text != @out and text.respond_to?(:to_str) 119: end 120: @out << "</#{name}>" 121: else 122: @out << ' />' 123: end 124: end
Calls a particular tag based on the specified parameters.
@param [String] name @param [Hash] args @param [Block] block
# File lib/ramaze/gestalt.rb, line 89 89: def _gestalt_call_tag(name, args, &block) 90: if args.size == 1 and args[0].kind_of? Hash 91: # args are just attributes, children in block... 92: _gestalt_build_tag name, args[0], &block 93: elsif args[1].kind_of? Hash 94: # args are text and attributes ie. a('mylink', :href => '/mylink') 95: _gestalt_build_tag(name, args[1], args[0], &block) 96: else 97: # no attributes, but text 98: _gestalt_build_tag name, {}, args, &block 99: end 100: end
Replace common HTML characters such as “ and < with their entities.
@param [String] s The HTML string that needs to be escaped.
# File lib/ramaze/gestalt.rb, line 131 131: def _gestalt_escape_entities(s) 132: s.to_s.gsub(/&/, '&'). 133: gsub(/"/, '"'). 134: gsub(/'/, '''). 135: gsub(/</, '<'). 136: gsub(/>/, '>') 137: end
Catching all the tags. passing it to _gestalt_build_tag
@param [String] method The method that was called. @param [Hash] args Additional arguments passed to the called method. @param [Block] block
# File lib/ramaze/gestalt.rb, line 56 56: def method_missing(meth, *args, &block) 57: _gestalt_call_tag meth, args, &block 58: end
Workaround for Kernel#p to make
tags possible.@param [Hash] args Extra arguments that should be processed before
creating the paragraph tag.
@param [Block] block
# File lib/ramaze/gestalt.rb, line 67 67: def p(*args, &block) 68: _gestalt_call_tag :p, args, &block 69: end
Workaround for Kernel#select to make work.
@param [Hash] args Extra arguments that should be processed before
creating the select tag.
@param [Block] block
# File lib/ramaze/gestalt.rb, line 78 78: def select(*args, &block) 79: _gestalt_call_tag(:select, args, &block) 80: end
Shortcut for building tags,
@param [String] name @param [Hash] args @param [Block] block
# File lib/ramaze/gestalt.rb, line 146 146: def tag(name, *args, &block) 147: _gestalt_call_tag(name.to_s, args, &block) 148: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.