# File lib/kwartz/converter.rb, line 710
    def handle_directives(directive, elem_info, stmt_list)
      e = elem_info
      linenum = elem_info.stag_info.linenum
      append_exprs = nil

      if directive.dattr == 'id'
        ## nothing
      else
        ## handle 'attr:' and 'append:' directives
        d_str = nil
        directive.str.split(/;/).each do |d_str|
          d_str.strip!
          unless d_str =~ self.directive_pattern     # ex. /\A(\w+):\s*(.*)\z/
            raise convert_error("'#{d_str}': invalid directive pattern", linenum)
          end
          d_name = $1.intern   # directive name
          d_arg  = $2 || ''    # directive arg
          case d_name
          when :attr, :Attr, :ATTR
            directive2 = Directive.new(:name=>d_name, :arg=>d_arg, :sr=>d_str)
            handle(directive2, elem_info, stmt_list)
          when :append, :Append, :APPEND
            append_exprs ||= []
            elem_info.append_exprs = append_exprs
            directive2 = Directive.new(:name=>d_name, :arg=>d_arg, :sr=>d_str)
            handle(directive2, elem_info, stmt_list)
          else
            if directive.name
              raise convert_error("'#{d_str}': not available with '#{directive.name}' directive.", linenum)
            end
            directive.name = d_name
            directive.arg  = d_arg
            directive.str  = d_str
          end #case
        end
      end

      ## remove dummy <span> tag
      if @delspan && 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

      ## handle other directives
      if directive.name
        handled = handle(directive, elem_info, stmt_list)
        handled or raise convert_error("'#{directive.str}': unknown directive.", linenum)
      else   # for 'attr' and 'append' directive
        assert unless !elem_info.attr_info.empty? || !elem_info.append_exprs.empty?
        stmt_list << stag_stmt(elem_info)
        stmt_list.concat(elem_info.cont_stmts)
        stmt_list << etag_stmt(elem_info) if elem_info.etag_info   # when empty-tag
      end

    end