src/Pure/PIDE/markup_tree.scala
changeset 55820 61869776ce1f
parent 55652 33ad12ef79ff
child 56299 8201790fdeb9
equal deleted inserted replaced
55817:0bc0217387a5 55820:61869776ce1f
    49     rev_markup: List[XML.Elem],
    49     rev_markup: List[XML.Elem],
    50     subtree: Markup_Tree)
    50     subtree: Markup_Tree)
    51   {
    51   {
    52     def markup: List[XML.Elem] = rev_markup.reverse
    52     def markup: List[XML.Elem] = rev_markup.reverse
    53 
    53 
    54     def filter_markup(pred: String => Boolean): List[XML.Elem] =
    54     def filter_markup(elements: Document.Elements): List[XML.Elem] =
    55     {
    55     {
    56       var result: List[XML.Elem] = Nil
    56       var result: List[XML.Elem] = Nil
    57       for { elem <- rev_markup; if (pred(elem.name)) }
    57       for { elem <- rev_markup; if (elements(elem.name)) }
    58         result ::= elem
    58         result ::= elem
    59       result.toList
    59       result.toList
    60     }
    60     }
    61 
    61 
    62     def + (markup: Text.Markup): Entry = copy(rev_markup = markup.info :: rev_markup)
    62     def + (markup: Text.Markup): Entry = copy(rev_markup = markup.info :: rev_markup)
   192   }
   192   }
   193 
   193 
   194   def to_XML(text: CharSequence): XML.Body =
   194   def to_XML(text: CharSequence): XML.Body =
   195     to_XML(Text.Range(0, text.length), text, (_: XML.Elem) => true)
   195     to_XML(Text.Range(0, text.length), text, (_: XML.Elem) => true)
   196 
   196 
   197   def cumulate[A](root_range: Text.Range, root_info: A, elements: String => Boolean,
   197   def cumulate[A](root_range: Text.Range, root_info: A, elements: Document.Elements,
   198     result: (A, Text.Markup) => Option[A]): List[Text.Info[A]] =
   198     result: (A, Text.Markup) => Option[A]): List[Text.Info[A]] =
   199   {
   199   {
   200     def results(x: A, entry: Entry): Option[A] =
   200     def results(x: A, entry: Entry): Option[A] =
   201     {
   201     {
   202       var y = x
   202       var y = x