equal
deleted
inserted
replaced
129 |
129 |
130 sealed case class Markup_Index(status: Boolean, chunk_name: Symbol.Text_Chunk.Name) |
130 sealed case class Markup_Index(status: Boolean, chunk_name: Symbol.Text_Chunk.Name) |
131 |
131 |
132 object Markups |
132 object Markups |
133 { |
133 { |
|
134 type Entry = (Markup_Index, Markup_Tree) |
134 val empty: Markups = new Markups(Map.empty) |
135 val empty: Markups = new Markups(Map.empty) |
135 def init(markup: Markup_Tree): Markups = new Markups(Map(Markup_Index.markup -> markup)) |
136 def init(markup: Markup_Tree): Markups = new Markups(Map(Markup_Index.markup -> markup)) |
|
137 def make(args: TraversableOnce[Entry]): Markups = (empty /: args)(_ + _) |
136 def merge(args: TraversableOnce[Markups]): Markups = (empty /: args)(_ ++ _) |
138 def merge(args: TraversableOnce[Markups]): Markups = (empty /: args)(_ ++ _) |
137 } |
139 } |
138 |
140 |
139 final class Markups private(private val rep: Map[Markup_Index, Markup_Tree]) |
141 final class Markups private(private val rep: Map[Markup_Index, Markup_Tree]) |
140 { |
142 { |
144 rep.getOrElse(index, Markup_Tree.empty) |
146 rep.getOrElse(index, Markup_Tree.empty) |
145 |
147 |
146 def add(index: Markup_Index, markup: Text.Markup): Markups = |
148 def add(index: Markup_Index, markup: Text.Markup): Markups = |
147 new Markups(rep + (index -> (this(index) + markup))) |
149 new Markups(rep + (index -> (this(index) + markup))) |
148 |
150 |
149 def + (entry: (Markup_Index, Markup_Tree)): Markups = |
151 def + (entry: Markups.Entry): Markups = |
150 { |
152 { |
151 val (index, tree) = entry |
153 val (index, tree) = entry |
152 new Markups(rep + (index -> (this(index).merge(tree, Text.Range.full, Markup.Elements.full)))) |
154 new Markups(rep + (index -> (this(index).merge(tree, Text.Range.full, Markup.Elements.full)))) |
153 } |
155 } |
154 |
156 |