def handle_directives(directive, elem_info, stmt_list)
e = elem_info
linenum = elem_info.stag_info.linenum
append_exprs = nil
if directive.dattr == 'id'
else
d_str = nil
directive.str.split(/;/).each do |d_str|
d_str.strip!
unless d_str =~ self.directive_pattern
raise convert_error("'#{d_str}': invalid directive pattern", linenum)
end
d_name = $1.intern
d_arg = $2 || ''
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
end
end
if @delspan && elem_info.dummy_span_tag?('span')
e.stag_info.clear_as_dummy_tag()
e.etag_info.clear_as_dummy_tag()
end
if directive.name
handled = handle(directive, elem_info, stmt_list)
handled or raise convert_error("'#{directive.str}': unknown directive.", linenum)
else
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
end
end