mediawiki-extensions-Visual.../modules/ve/test
Catrope 1765e39b40 ve.dm.Transaction: Implement newFromDocumentInsertion
This function builds a transaction that takes a document slice and
inserts it back into the document it came from, applying any changes
that were made.

This makes editing document slices simple:
    slicedDoc = doc.getDocumentSlice( captionNode );
    // Edit slicedDoc using a surface
    tx = ve.dm.Transaction.newFromDocumentInsertion( doc, captionNode, slicedDoc );
    surface.change( tx );

Specifically, newFromDocumentInsertion replaces the node's contents
with the document's contents (meaning any changes made to the node in
the meantime are lost). It also merges the stores internal lists
of the two documents and remaps indexes accordingly. This means editing
of references inside of references is supported.

This functionality is not specific to slices, and can also be used to
safely insert data from a paste buffer, with internal list data being
transplanted correctly.

ve.dm.MetaLinearData:
* Make merge( [ undefined, undefined, ... ] ) return undefined rather
  than [].

ve.dm.Document:
* In getDocumentSlice, store a pointer to the original dm.Document in
  the new one, and also store the length of the internal list. This
  allows us to figure out which internal list items the two documents
  have in common when we insert the modified slice back into the main
  document.
* In getMetadataReplace, optionally take the inserted metadata as a
  parameter, to allow for operations that insert both data and metadata.
  Per Ed's review, rewrite this function to return null rather than {}
  if no metadata needs to be replaced.

ve.dm.InternalList:
* Add method to merge two internal lists

ve.dm.Transaction:
* Remove newFromNodeReplacement and replace it with newFromDocumentInsertion.
* In pushReplace, optionally take the inserted metadata as a parameter.

Change-Id: I786ee7bad796aa54bc242993b4de3ad18ad0773e
2013-06-19 17:27:50 -07:00
..
ce Refactor selectNodes tests 2013-06-17 20:08:08 +01:00
dm ve.dm.Transaction: Implement newFromDocumentInsertion 2013-06-19 17:27:50 -07:00
init Unit tests for browser compatibility list 2013-06-05 14:30:13 +02:00
ui Treat acronyms like words in camel case names 2013-05-28 12:51:41 +00:00
example.png Test: Fix 404 errors in example images. 2013-04-02 23:52:02 +02:00
index.php Refactor selectNodes tests 2013-06-17 20:08:08 +01:00
ve.BranchNode.test.js Bump copyright notice year range to -2013 over -2012 2013-02-19 15:37:34 -08:00
ve.Document.test.js Bump copyright notice year range to -2013 over -2012 2013-02-19 15:37:34 -08:00
ve.Element.test.js ve.Element: Add unit tests 2013-05-21 19:18:46 +02:00
ve.Factory.test.js Bump copyright notice year range to -2013 over -2012 2013-02-19 15:37:34 -08:00
ve.LeafNode.test.js Use static.name once for ce and dm nodes 2013-03-07 17:19:39 -08:00
ve.Node.test.js Store DM nodes in InternalList 2013-06-03 22:10:07 +01:00
ve.qunit.js ve.ce.Document: Introduce getRelativeRange method 2013-06-05 13:10:38 +01:00
ve.Range.test.js Minor comment and licence fixes 2013-03-19 20:54:01 +00:00
ve.test.js Remove tests for OOJS methods 2013-06-06 23:41:52 +00:00