mediawiki-extensions-Visual.../modules/ve/dm
Roan Kattouw ccef625a08 Rewrite MetaList.onTransact
The previous implementation couldn't deal with transactions that
replaced both data and metadata at the same time (rather than replacing
data while moving metadata around), and extending its approach to
deal with that case would have made it much more complex.

So I rewrote the algorithm from scratch. The previous implementation
scheduled deferred moves for existing items, but immediately processed
insertions and removals. This is problematic for replacements and
maintaining the order in the binary search list. So instead, this new
implementation builds an array representing what the new item list
should be, then processes insertions, removals and moves in the correct
order to achieve that state.

It looks like the previous implementation didn't always work correctly,
which was masked because the test suite passed full=false to
assertItemsMatchMetadata(). This rewrite fixes this.

Also remove setMove/applyMove from MetaItem, because we don't need them
anymore and they're evil anyway; and add isAttached(), because the new
algorithm needs it.

Change-Id: I899d2b3c94c2cfa55823879bca95456750f64382
2013-09-11 15:29:28 -07:00
..
annotations Make tools generic and add fancy tool groups 2013-09-03 11:27:39 -07:00
lineardata docs: Minor improvements 2013-09-05 23:56:59 +00:00
metaitems ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
nodes Actually use GeneratedContentNode in AlienNode 2013-08-27 13:53:17 -07:00
ve.dm.Annotation.js ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
ve.dm.AnnotationFactory.js Convert AnnotationFactory and MetaItemFactory to NamedClassFactories 2013-04-09 12:05:05 -07:00
ve.dm.AnnotationSet.js Speed up openAndCloseAnnotations by using store indexes 2013-07-26 18:11:01 -07:00
ve.dm.BranchNode.js Store DM nodes in InternalList 2013-06-03 22:10:07 +01:00
ve.dm.Converter.js Remove inserted leading whitespace 2013-08-02 19:01:22 +00:00
ve.dm.DataString.js Code style fixes 2013-05-06 12:36:52 +01:00
ve.dm.Document.js Remove no-insertion metadata corner case from ve.dm.Transaction.pushReplace(). 2013-09-06 01:07:37 +00:00
ve.dm.DocumentSlice.js ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
ve.dm.DocumentSynchronizer.js doc: Clean up spacing that caused <pre> or broken <ul>/<ol> 2013-07-25 04:02:50 +02:00
ve.dm.IndexValueStore.js ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
ve.dm.InternalList.js Always give references names. Ignore if used once. 2013-08-28 12:47:33 -07:00
ve.dm.js
ve.dm.LeafNode.js
ve.dm.LinearData.js docs: Minor improvements 2013-09-05 23:56:59 +00:00
ve.dm.MetaItem.js Rewrite MetaList.onTransact 2013-09-11 15:29:28 -07:00
ve.dm.MetaItemFactory.js Make .static.storeHtmlAttributes more versatile 2013-05-07 14:45:26 -07:00
ve.dm.MetaList.js Rewrite MetaList.onTransact 2013-09-11 15:29:28 -07:00
ve.dm.Model.js Add .static.getMatchRdfaTypes() wrapper 2013-08-07 17:39:24 +08:00
ve.dm.ModelRegistry.js Fix deprioritization of regex matches in ModelRegistry 2013-08-08 02:52:45 +00:00
ve.dm.Node.js ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
ve.dm.NodeFactory.js ve.copy: Remove obsolete copyArray and copyObject 2013-07-30 01:44:22 +02:00
ve.dm.Surface.js Merge "Make ve.dm.Surface.{start,stop}HistoryTracking idempotent." 2013-08-27 16:27:41 +00:00
ve.dm.SurfaceFragment.js Compare annotations by name only when clearing/toggling 2013-07-16 00:05:11 +01:00
ve.dm.Transaction.js Allow replace operations to replace metadata as well 2013-09-11 15:26:12 -07:00
ve.dm.TransactionProcessor.js Fix processing of double metadata replacements 2013-09-11 15:26:12 -07:00