Module | Kwartz::ElementExpander |
In: |
kwartz/converter.rb
|
(abstract) expand ExpandStatement and ElementInfo
Handler class includes this module.
expand ElementInfo
# File kwartz/converter.rb, line 446 def expand_element_info(elem_info, stmt_list, content_only=false) #elem_ruleset = @ruleset_table[elem_info.name] elem_ruleset = get_element_ruleset(elem_info.name) if elem_ruleset && !elem_info.merged? elem_info.merge(elem_ruleset) end logic = content_only ? [ ExpandStatement.new(:cont, elem_info.name) ] : elem_info.logic logic.each do |stmt| expand_statement(stmt, stmt_list, elem_info) end #if content_only # stmt = ExpandStatement.new(:cont, elem_info.name) # expand_statement(stmt, stmt_list, elem_info) #else # elem_info.logic.each do |stmt| # expand_statement(stmt, stmt_list, elem_info) # end #end end
expand ExpandStatement
# File kwartz/converter.rb, line 468 def expand_statement(stmt, stmt_list, elem_info) if stmt.is_a?(ExpandStatement) e = elem_info ## delete dummy '<span>' tag if @delspan && e.stag_info.tagname == 'span' && e.attr_info.empty? && e.append_exprs.nil? e.stag_info.tagname = e.etag_info.tagname = nil end case stmt.kind when :stag assert unless elem_info if e.stag_expr assert unless e.stag_expr.is_a?(NativeExpression) stmt_list << build_print_expr_stmt(e.stag_expr, e.stag_info, nil) else stmt_list << build_print_stmt(e.stag_info, e.attr_info, e.append_exprs) end when :etag assert unless elem_info if e.etag_expr assert unless e.etag_expr.is_a?(NativeExpression) stmt_list << build_print_expr_stmt(e.etag_expr, nil, e.etag_info) elsif e.etag_info # e.etag_info is nil when <br>, <input>, <hr>, <img>, <meta> stmt_list << build_print_stmt(e.etag_info, nil, nil) end when :cont if e.cont_expr assert unless e.cont_expr.is_a?(NativeExpression) stmt_list << PrintStatement.new([e.cont_expr]) else elem_info.cont_stmts.each do |cont_stmt| expand_statement(cont_stmt, stmt_list, nil) end end when :elem assert unless elem_info if e.elem_expr assert unless e.elem_expr.is_a?(NativeExpression) stmt_list << build_print_expr_stmt(e.elem_expr, e.stag_info, e.etag_info) else stmt.kind = :stag expand_statement(stmt, stmt_list, elem_info) stmt.kind = :cont expand_statement(stmt, stmt_list, elem_info) stmt.kind = :etag expand_statement(stmt, stmt_list, elem_info) stmt.kind = :elem end when :element, :content content_only = stmt.kind == :content #elem_info = @elements[stmt.name] elem_info = get_element_info(stmt.name) unless elem_info raise convert_error("element '#{stmt.name}' is not found.", nil) end expand_element_info(elem_info, stmt_list, content_only) else assert end #case else stmt_list << stmt end #if end
(abstract) get ElementInfo
# File kwartz/converter.rb, line 440 def get_element_info(name) not_implemented end
(abstract) get ElementRuleset
# File kwartz/converter.rb, line 434 def get_element_ruleset(name) not_implemented end