src/Pure/General/xml.scala
changeset 36016 4f5c7a19ebe0
parent 36011 3ff725ac13a4
child 36686 b1956bc8f585
equal deleted inserted replaced
36015:6111de7c916a 36016:4f5c7a19ebe0
    32 
    32 
    33 
    33 
    34   /* string representation */
    34   /* string representation */
    35 
    35 
    36   private def append_text(text: String, s: StringBuilder) {
    36   private def append_text(text: String, s: StringBuilder) {
    37     if (text == null) s ++ text
    37     if (text == null) s ++= text
    38     else {
    38     else {
    39       for (c <- text.iterator) c match {
    39       for (c <- text.iterator) c match {
    40         case '<' => s ++ "&lt;"
    40         case '<' => s ++= "&lt;"
    41         case '>' => s ++ "&gt;"
    41         case '>' => s ++= "&gt;"
    42         case '&' => s ++ "&amp;"
    42         case '&' => s ++= "&amp;"
    43         case '"' => s ++ "&quot;"
    43         case '"' => s ++= "&quot;"
    44         case '\'' => s ++ "&apos;"
    44         case '\'' => s ++= "&apos;"
    45         case _ => s + c
    45         case _ => s += c
    46       }
    46       }
    47     }
    47     }
    48   }
    48   }
    49 
    49 
    50   private def append_elem(name: String, atts: Attributes, s: StringBuilder) {
    50   private def append_elem(name: String, atts: Attributes, s: StringBuilder) {
    51     s ++ name
    51     s ++= name
    52     for ((a, x) <- atts) {
    52     for ((a, x) <- atts) {
    53       s ++ " "; s ++ a; s ++ "=\""; append_text(x, s); s ++ "\""
    53       s ++= " "; s ++= a; s ++= "=\""; append_text(x, s); s ++= "\""
    54     }
    54     }
    55   }
    55   }
    56 
    56 
    57   private def append_tree(tree: Tree, s: StringBuilder) {
    57   private def append_tree(tree: Tree, s: StringBuilder) {
    58     tree match {
    58     tree match {
    59       case Elem(name, atts, Nil) =>
    59       case Elem(name, atts, Nil) =>
    60         s ++ "<"; append_elem(name, atts, s); s ++ "/>"
    60         s ++= "<"; append_elem(name, atts, s); s ++= "/>"
    61       case Elem(name, atts, ts) =>
    61       case Elem(name, atts, ts) =>
    62         s ++ "<"; append_elem(name, atts, s); s ++ ">"
    62         s ++= "<"; append_elem(name, atts, s); s ++= ">"
    63         for (t <- ts) append_tree(t, s)
    63         for (t <- ts) append_tree(t, s)
    64         s ++ "</"; s ++ name; s ++ ">"
    64         s ++= "</"; s ++= name; s ++= ">"
    65       case Text(text) => append_text(text, s)
    65       case Text(text) => append_text(text, s)
    66     }
    66     }
    67   }
    67   }
    68 
    68 
    69 
    69