Module | Kwartz::Expander |
In: |
kwartz/converter.rb
|
(abstract) expand ExpandStatement and ElementInfo
Handler class includes this module.
expand ElementInfo
# File kwartz/converter.rb, line 486 def expand_element_info(elem_info, stmt_list, content_only=false) expand_statements(elem_info.before, stmt_list, elem_info) if elem_info.before stmts = content_only ? [ ExpandStatement.new(:cont) ] : elem_info.logic stmts.each do |stmt| expand_statement(stmt, stmt_list, elem_info) end expand_statements(elem_info.after, stmt_list, elem_info) if elem_info.after end
expand ExpandStatement
# File kwartz/converter.rb, line 505 def expand_statement(stmt, stmt_list, elem_info) if stmt.is_a?(NativeStatement) if elem_info native_stmt = expand_attr_vars_in_native_stmt(stmt, elem_info.attr_info) else native_stmt = stmt end stmt_list << native_stmt return end if ! stmt.is_a?(ExpandStatement) stmt_list << stmt return end e = elem_info ## remove dummy <span> tag if @delspan && elem_info && elem_info.dummy_span_tag?('span') #e.stag_info.tagname = e.etag_info.tagname = nil e.stag_info.clear_as_dummy_tag() e.etag_info.clear_as_dummy_tag() 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, e.attr_info) 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, e.attr_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]) native_expr = expand_attr_vars_in_native_expr(e.cont_expr, e.attr_info) stmt_list << PrintStatement.new([native_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, e.attr_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 end
expand list of ExpandStatement
# File kwartz/converter.rb, line 497 def expand_statements(stmts, stmt_list, elem_info) stmts.each do |stmt| expand_statement(stmt, stmt_list, elem_info) end end
(abstract) get ElementInfo
# File kwartz/converter.rb, line 480 def get_element_info(name) not_implemented end