93 |
93 |
94 def cat_errors(msg2: String): Header = |
94 def cat_errors(msg2: String): Header = |
95 copy(errors = errors.map(msg1 => Exn.cat_message(msg1, msg2))) |
95 copy(errors = errors.map(msg1 => Exn.cat_message(msg1, msg2))) |
96 } |
96 } |
97 |
97 |
98 val no_header = Header() |
98 val no_header: Header = Header() |
99 def bad_header(msg: String): Header = Header(errors = List(msg)) |
99 def bad_header(msg: String): Header = Header(errors = List(msg)) |
100 |
100 |
101 object Name |
101 object Name |
102 { |
102 { |
103 val empty = Name("") |
103 val empty: Name = Name("") |
104 |
104 |
105 object Ordering extends scala.math.Ordering[Name] |
105 object Ordering extends scala.math.Ordering[Name] |
106 { |
106 { |
107 def compare(name1: Name, name2: Name): Int = name1.node compare name2.node |
107 def compare(name1: Name, name2: Name): Int = name1.node compare name2.node |
108 } |
108 } |
373 val graph1 = graph.default_node(name, Node.empty) |
373 val graph1 = graph.default_node(name, Node.empty) |
374 graph1.is_maximal(name) && graph1.get_node(name).is_empty |
374 graph1.is_maximal(name) && graph1.get_node(name).is_empty |
375 } |
375 } |
376 |
376 |
377 def purge_suppressed: Option[Nodes] = |
377 def purge_suppressed: Option[Nodes] = |
378 graph.keys_iterator.filter(is_suppressed(_)).toList match { |
378 graph.keys_iterator.filter(is_suppressed).toList match { |
379 case Nil => None |
379 case Nil => None |
380 case del => Some(new Nodes((graph /: del)(_.del_node(_)))) |
380 case del => Some(new Nodes((graph /: del)(_.del_node(_)))) |
381 } |
381 } |
382 |
382 |
383 def + (entry: (Node.Name, Node)): Nodes = |
383 def + (entry: (Node.Name, Node)): Nodes = |
735 def accumulate(id: Document_ID.Generic, message: XML.Elem, xml_cache: XML.Cache) |
735 def accumulate(id: Document_ID.Generic, message: XML.Elem, xml_cache: XML.Cache) |
736 : (Command.State, State) = |
736 : (Command.State, State) = |
737 { |
737 { |
738 execs.get(id) match { |
738 execs.get(id) match { |
739 case Some(st) => |
739 case Some(st) => |
740 val new_st = st.accumulate(self_id(st), other_id _, message, xml_cache) |
740 val new_st = st.accumulate(self_id(st), other_id, message, xml_cache) |
741 val execs1 = execs + (id -> new_st) |
741 val execs1 = execs + (id -> new_st) |
742 (new_st, copy(execs = execs1, commands_redirection = redirection(new_st))) |
742 (new_st, copy(execs = execs1, commands_redirection = redirection(new_st))) |
743 case None => |
743 case None => |
744 commands.get(id) match { |
744 commands.get(id) match { |
745 case Some(st) => |
745 case Some(st) => |
746 val new_st = st.accumulate(self_id(st), other_id _, message, xml_cache) |
746 val new_st = st.accumulate(self_id(st), other_id, message, xml_cache) |
747 val commands1 = commands + (id -> new_st) |
747 val commands1 = commands + (id -> new_st) |
748 (new_st, copy(commands = commands1, commands_redirection = redirection(new_st))) |
748 (new_st, copy(commands = commands1, commands_redirection = redirection(new_st))) |
749 case None => fail |
749 case None => fail |
750 } |
750 } |
751 } |
751 } |
1037 val is_outdated: Boolean = pending_edits.nonEmpty || latest != stable |
1037 val is_outdated: Boolean = pending_edits.nonEmpty || latest != stable |
1038 |
1038 |
1039 |
1039 |
1040 /* local node content */ |
1040 /* local node content */ |
1041 |
1041 |
1042 def convert(offset: Text.Offset) = (offset /: edits)((i, edit) => edit.convert(i)) |
1042 def convert(offset: Text.Offset): Text.Offset = (offset /: edits)((i, edit) => edit.convert(i)) |
1043 def revert(offset: Text.Offset) = (offset /: reverse_edits)((i, edit) => edit.revert(i)) |
1043 def revert(offset: Text.Offset): Text.Offset = (offset /: reverse_edits)((i, edit) => edit.revert(i)) |
1044 |
1044 |
1045 def convert(range: Text.Range) = range.map(convert(_)) |
1045 def convert(range: Text.Range): Text.Range = range.map(convert) |
1046 def revert(range: Text.Range) = range.map(revert(_)) |
1046 def revert(range: Text.Range): Text.Range = range.map(revert) |
1047 |
1047 |
1048 val node_name: Node.Name = name |
1048 val node_name: Node.Name = name |
1049 val node: Node = version.nodes(name) |
1049 val node: Node = version.nodes(name) |
1050 |
1050 |
1051 def nodes: List[(Node.Name, Node)] = |
1051 def nodes: List[(Node.Name, Node)] = |
1164 res(x) match { |
1164 res(x) match { |
1165 case None => None |
1165 case None => None |
1166 case some => Some(some) |
1166 case some => Some(some) |
1167 } |
1167 } |
1168 } |
1168 } |
1169 for (Text.Info(r, Some(x)) <- cumulate(range, None, elements, result1 _, status)) |
1169 for (Text.Info(r, Some(x)) <- cumulate(range, None, elements, result1, status)) |
1170 yield Text.Info(r, x) |
1170 yield Text.Info(r, x) |
1171 } |
1171 } |
1172 |
1172 |
1173 |
1173 |
1174 /* command results */ |
1174 /* command results */ |