Module Kwartz::ElementExpander
In: kwartz/converter.rb

.[abstract] expand ExpandStatement and ElementInfo

Handler class includes this module.

Methods

Included Modules

Assertion

Public Instance methods

expand ElementInfo

[Source]

# File kwartz/converter.rb, line 340
    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
      #  element.logic.each do |stmt|
      #    expand_statement(stmt, stmt_list, elem_info)
      #  end
      #end
    end

expand ExpandStatement

[Source]

# File kwartz/converter.rb, line 362
    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

[Source]

# File kwartz/converter.rb, line 334
    def get_element_info(name)
      not_implemented
    end

.[abstract] get ElementRuleset

[Source]

# File kwartz/converter.rb, line 328
    def get_element_ruleset(name)
      not_implemented
    end

[Validate]