src/Pure/PIDE/xml.scala
changeset 80434 6f1c8084f672
parent 80432 b42f95f18a71
child 80435 de2ea807edd2
equal deleted inserted replaced
80433:48776d779d94 80434:6f1c8084f672
    38   }
    38   }
    39   case class Text(content: String) extends Tree with Trav {
    39   case class Text(content: String) extends Tree with Trav {
    40     private lazy val hash: Int = content.hashCode()
    40     private lazy val hash: Int = content.hashCode()
    41     override def hashCode(): Int = hash
    41     override def hashCode(): Int = hash
    42   }
    42   }
    43 
       
    44   def elem(markup: Markup): XML.Elem = XML.Elem(markup, Nil)
       
    45   def elem(name: String, body: Body): XML.Elem = XML.Elem(Markup(name, Nil), body)
       
    46   def elem(name: String): XML.Elem = XML.Elem(Markup(name, Nil), Nil)
       
    47 
       
    48   val no_text: Text = Text("")
       
    49   val newline: Text = Text("\n")
       
    50 
       
    51   def string(s: String): Body = if (s.isEmpty) Nil else List(Text(s))
       
    52 
       
    53   def enclose(bg: String, en:String, body: Body): Body =
       
    54     string(bg) ::: body ::: string(en)
       
    55 
    43 
    56   trait Traversal {
    44   trait Traversal {
    57     def text(s: String): Unit
    45     def text(s: String): Unit
    58     def elem(markup: Markup, end: Boolean = false): Unit
    46     def elem(markup: Markup, end: Boolean = false): Unit
    59     def end_elem(name: String): Unit
    47     def end_elem(name: String): Unit
    72         }
    60         }
    73       trav(trees)
    61       trav(trees)
    74     }
    62     }
    75   }
    63   }
    76 
    64 
       
    65   def elem(markup: Markup): XML.Elem = XML.Elem(markup, Nil)
       
    66   def elem(name: String, body: Body): XML.Elem = XML.Elem(Markup(name, Nil), body)
       
    67   def elem(name: String): XML.Elem = XML.Elem(Markup(name, Nil), Nil)
       
    68 
       
    69   val no_text: Text = Text("")
       
    70   val newline: Text = Text("\n")
       
    71 
       
    72   def string(s: String): Body = if (s.isEmpty) Nil else List(Text(s))
       
    73 
       
    74   def enclose(bg: String, en:String, body: Body): Body =
       
    75     string(bg) ::: body ::: string(en)
       
    76 
    77 
    77 
    78   /* name space */
    78   /* name space */
    79 
    79 
    80   object Namespace {
    80   object Namespace {
    81     def apply(prefix: String, target: String): Namespace =
    81     def apply(prefix: String, target: String): Namespace =