476: def xx_define_tag_method tag_method, tag_name = nil
477:
478: tag_method = tag_method.to_s
479: tag_name ||= tag_method.gsub %r/_+$/, ""
480:
481: remove_method tag_method if instance_methods.include? tag_method
482: module_eval "def \#{ tag_method } *a, &b\nhashes, nothashes = a.partition{|x| Hash === x}\n\ndoc = xx_doc\nelement = ::REXML::Element::new '\#{ tag_name }'\n\nhashes.each{|h| h.each{|k,v| element.add_attribute k.to_s, v}}\nnothashes.each{|nh| element << ::REXML::Text::new(nh.to_s)}\n\ndoc.create element, &b\nend\n", __FILE__, __LINE__+1
483: tag_method
484:
485: end