39 val CLASS = "class" |
39 val CLASS = "class" |
40 |
40 |
41 |
41 |
42 // document markup |
42 // document markup |
43 |
43 |
44 def span(cls: String, body: List[XML.Tree]): XML.Elem = |
44 def span(cls: String, body: XML.Body): XML.Elem = |
45 XML.Elem(Markup(SPAN, List((CLASS, cls))), body) |
45 XML.Elem(Markup(SPAN, List((CLASS, cls))), body) |
46 |
46 |
47 def hidden(txt: String): XML.Elem = |
47 def hidden(txt: String): XML.Elem = |
48 span(Markup.HIDDEN, List(XML.Text(txt))) |
48 span(Markup.HIDDEN, List(XML.Text(txt))) |
49 |
49 |
50 def sub(txt: String): XML.Elem = XML.elem("sub", List(XML.Text(txt))) |
50 def sub(txt: String): XML.Elem = XML.elem("sub", List(XML.Text(txt))) |
51 def sup(txt: String): XML.Elem = XML.elem("sup", List(XML.Text(txt))) |
51 def sup(txt: String): XML.Elem = XML.elem("sup", List(XML.Text(txt))) |
52 |
52 |
53 def spans(input: XML.Tree, original_data: Boolean = false): List[XML.Tree] = |
53 def spans(input: XML.Tree, original_data: Boolean = false): XML.Body = |
54 { |
54 { |
55 def html_spans(tree: XML.Tree): List[XML.Tree] = |
55 def html_spans(tree: XML.Tree): XML.Body = |
56 tree match { |
56 tree match { |
57 case XML.Elem(Markup(name, _), ts) => |
57 case XML.Elem(Markup(name, _), ts) => |
58 if (original_data) |
58 if (original_data) |
59 List(XML.Elem(Markup.Data, List(tree, span(name, ts.flatMap(html_spans))))) |
59 List(XML.Elem(Markup.Data, List(tree, span(name, ts.flatMap(html_spans))))) |
60 else List(span(name, ts.flatMap(html_spans))) |
60 else List(span(name, ts.flatMap(html_spans))) |