Branch: Tag:

2011-11-26

2011-11-26 15:45:01 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Tools.Standalone.autodoc_to_{,split_}html: Output tag attributes in a canonical order.

85:    return Parser.XML.Tree.text_quote(in);   }    + string render_tag(string tag, mapping(string:string) attrs, int|void term) + { +  string res = "<" + tag; +  foreach(sort(indices(attrs)), string attr) { +  res += " " + attr + "='" + attrs[attr] + "'"; +  } +  if (term) res += " /"; +  return res + ">"; + } +    Node get_first_element(Node n) {    foreach(n->get_children(), Node c)    if(c->get_node_type()==XML_ELEMENT) {
604:    case "image": // Not in XSLT    mapping m = c->get_attributes();    m->src = image_prefix() + m_delete(m, "file"); -  ret->add( sprintf("<img%{ %s='%s'%} />", (array)m) ); +  ret->add( render_tag("img", m, 1) );    break;       case "url": // Not in XSLT
616:    m = c->get_attributes();    if(!m->href)    m->href=c->value_of_node(); -  ret->add( sprintf("<a%{ %s='%s'%}>%s</a>", -  (array)m, c->value_of_node()) ); +  ret->add( sprintf("%s%s</a>", render_tag("a", m), c->value_of_node()) );    break;       case "section":
680:       // Not really allowed    case "br": -  ret->add( sprintf("<%s%{ %s='%s'%} />", c->get_any_name(), (array)c->get_attributes()) ); +  ret->add( render_tag(c->get_any_name(), c->get_attributes(), 1) );    break;    case "table":    case "td":    case "tr":    case "th": -  ret->add( sprintf("<%s%{ %s='%s'%}>%s</%s>", -  c->get_any_name(), (array)c->get_attributes(), +  ret->add( sprintf("%s%s</%s>", +  render_tag(c->get_any_name(), c->get_attributes()),    parse_text(c), c->get_any_name()) );    break;