Module Kwartz::Expander
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 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

[Source]

# 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

[Source]

# 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

[Source]

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

(abstract) get Ruleset

[Source]

# File kwartz/converter.rb, line 474
    def get_ruleset(selector)
      not_implemented
    end

[Validate]