瀏覽代碼

Changed: Change naming from "model-to-view-conversion" to "downcast" and from "view-to-model-conversion" to "upcast".

Szymon Cofalik 7 年之前
父節點
當前提交
c4ddc806c6
共有 32 個文件被更改,包括 585 次插入604 次删除
  1. 33 48
      packages/ckeditor5-engine/src/controller/datacontroller.js
  2. 17 25
      packages/ckeditor5-engine/src/controller/editingcontroller.js
  3. 16 16
      packages/ckeditor5-engine/src/conversion/conversion.js
  4. 22 23
      packages/ckeditor5-engine/src/conversion/model-to-view-converters.js
  5. 40 40
      packages/ckeditor5-engine/src/conversion/model-to-view-helpers.js
  6. 4 4
      packages/ckeditor5-engine/src/conversion/model-selection-to-view-converters.js
  7. 33 33
      packages/ckeditor5-engine/src/conversion/modelconversiondispatcher.js
  8. 4 4
      packages/ckeditor5-engine/src/conversion/modelconsumable.js
  9. 43 44
      packages/ckeditor5-engine/src/conversion/definition-conversion.js
  10. 3 3
      packages/ckeditor5-engine/src/conversion/view-to-model-converters.js
  11. 34 31
      packages/ckeditor5-engine/src/conversion/view-to-model-helpers.js
  12. 1 1
      packages/ckeditor5-engine/src/conversion/view-selection-to-model-converters.js
  13. 32 32
      packages/ckeditor5-engine/src/conversion/viewconversiondispatcher.js
  14. 21 21
      packages/ckeditor5-engine/src/dev-utils/model.js
  15. 3 3
      packages/ckeditor5-engine/src/model/markercollection.js
  16. 25 25
      packages/ckeditor5-engine/tests/controller/datacontroller.js
  17. 11 11
      packages/ckeditor5-engine/tests/controller/editingcontroller.js
  18. 4 4
      packages/ckeditor5-engine/tests/conversion/model-to-view-converters.js
  19. 69 69
      packages/ckeditor5-engine/tests/conversion/model-to-view-helpers.js
  20. 5 5
      packages/ckeditor5-engine/tests/conversion/model-selection-to-view-converters.js
  21. 5 5
      packages/ckeditor5-engine/tests/conversion/modelconversiondispatcher.js
  22. 30 30
      packages/ckeditor5-engine/tests/conversion/definition-conversion.js
  23. 4 4
      packages/ckeditor5-engine/tests/conversion/view-to-model-converters.js
  24. 77 77
      packages/ckeditor5-engine/tests/conversion/view-to-model-helpers.js
  25. 1 1
      packages/ckeditor5-engine/tests/conversion/view-selection-to-model-converters.js
  26. 8 8
      packages/ckeditor5-engine/tests/conversion/viewconversiondispatcher.js
  27. 10 10
      packages/ckeditor5-engine/tests/manual/highlight.js
  28. 9 5
      packages/ckeditor5-engine/tests/manual/markers.js
  29. 8 8
      packages/ckeditor5-engine/tests/manual/nestededitable.js
  30. 6 7
      packages/ckeditor5-engine/tests/manual/tickets/475/1.js
  31. 6 6
      packages/ckeditor5-engine/tests/tickets/699.js
  32. 1 1
      packages/ckeditor5-engine/tests/view/manual/uielement.js

+ 33 - 48
packages/ckeditor5-engine/src/controller/datacontroller.js

@@ -12,11 +12,11 @@ import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
 
 import Mapper from '../conversion/mapper';
 
-import ModelConversionDispatcher from '../conversion/modelconversiondispatcher';
-import { insertText } from '../conversion/model-to-view-converters';
+import DowncastDispatcher from '../conversion/downcastdispatcher';
+import { insertText } from '../conversion/downcast-converters';
 
-import ViewConversionDispatcher from '../conversion/viewconversiondispatcher';
-import { convertText, convertToModelFragment } from '../conversion/view-to-model-converters';
+import UpcastDispatcher from '../conversion/upcastdispatcher';
+import { convertText, convertToModelFragment } from '../conversion/upcast-converters';
 
 import ViewDocumentFragment from '../view/documentfragment';
 
@@ -26,11 +26,11 @@ import ModelRange from '../model/range';
  * Controller for the data pipeline. The data pipeline controls how data is retrieved from the document
  * and set inside it. Hence, the controller features two methods which allow to {@link ~DataController#get get}
  * and {@link ~DataController#set set} data of the {@link ~DataController#model model}
- * using the given:
+ * using given:
  *
  * * {@link module:engine/dataprocessor/dataprocessor~DataProcessor data processor},
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher model to view} and
- * * {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher view to model} converters.
+ * * downcast converters,
+ * * upcast converters.
  *
  * @mixes module:utils/observablemixin~ObservableMixin
  */
@@ -62,44 +62,30 @@ export default class DataController {
 		/**
 		 * Mapper used for the conversion. It has no permanent bindings, because they are created when getting data and
 		 * cleared directly after the data are converted. However, the mapper is defined as a class property, because
-		 * it needs to be passed to the `ModelConversionDispatcher` as a conversion API.
+		 * it needs to be passed to the `DowncastDispatcher` as a conversion API.
 		 *
 		 * @member {module:engine/conversion/mapper~Mapper}
 		 */
 		this.mapper = new Mapper();
 
 		/**
-		 * Model-to-view conversion dispatcher used by the {@link #get get method}.
-		 * To attach the model-to-view converter to the data pipeline you need to add a listener to this property:
-		 *
-		 *		data.modelToView( 'insert:$element', customInsertConverter );
-		 *
-		 * Or use {@link module:engine/conversion/buildmodelconverter~ModelConverterBuilder}:
-		 *
-		 *		buildModelConverter().for( data.modelToView ).fromAttribute( 'bold' ).toElement( 'b' );
+		 * Downcast dispatcher used by the {@link #get get method}. Downcast converters should be attached to it.
 		 *
 		 * @readonly
-		 * @member {module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}
+		 * @member {module:engine/conversion/downcastdispatcher~DowncastDispatcher}
 		 */
-		this.modelToView = new ModelConversionDispatcher( this.model, {
+		this.downcastDispatcher = new DowncastDispatcher( this.model, {
 			mapper: this.mapper
 		} );
-		this.modelToView.on( 'insert:$text', insertText(), { priority: 'lowest' } );
+		this.downcastDispatcher.on( 'insert:$text', insertText(), { priority: 'lowest' } );
 
 		/**
-		 * View-to-model conversion dispatcher used by the {@link #set set method}.
-		 * To attach the view-to-model converter to the data pipeline you need to add a listener to this property:
-		 *
-		 *		data.viewToModel( 'element', customElementConverter );
-		 *
-		 * Or use {@link module:engine/conversion/buildviewconverter~ViewConverterBuilder}:
-		 *
-		 *		buildViewConverter().for( data.viewToModel ).fromElement( 'b' ).toAttribute( 'bold', 'true' );
+		 * Upcast dispatcher used by the {@link #set set method}. Upcast converters should be attached to it.
 		 *
 		 * @readonly
-		 * @member {module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher}
+		 * @member {module:engine/conversion/upcastdispatcher~UpcastDispatcher}
 		 */
-		this.viewToModel = new ViewConversionDispatcher( this.model, {
+		this.upcastDispatcher = new UpcastDispatcher( this.model, {
 			schema: model.schema
 		} );
 
@@ -108,13 +94,13 @@ export default class DataController {
 		// Note that if there is no default converter for the element it will be skipped, for instance `<b>foo</b>` will be
 		// converted to nothing. We add `convertToModelFragment` as a last converter so it converts children of that
 		// element to the document fragment so `<b>foo</b>` will be converted to `foo` if there is no converter for `<b>`.
-		this.viewToModel.on( 'text', convertText(), { priority: 'lowest' } );
-		this.viewToModel.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
-		this.viewToModel.on( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );
+		this.upcastDispatcher.on( 'text', convertText(), { priority: 'lowest' } );
+		this.upcastDispatcher.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
+		this.upcastDispatcher.on( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );
 	}
 
 	/**
-	 * Returns the model's data converted by the {@link #modelToView model-to-view converters} and
+	 * Returns the model's data converted by downcast dispatchers attached to {@link #downcastDispatcher} and
 	 * formatted by the {@link #processor data processor}.
 	 *
 	 * @param {String} [rootName='main'] Root name.
@@ -127,9 +113,8 @@ export default class DataController {
 
 	/**
 	 * Returns the content of the given {@link module:engine/model/element~Element model's element} or
-	 * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the
-	 * {@link #modelToView model-to-view converters} and formatted by the
-	 * {@link #processor data processor}.
+	 * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the downcast converters
+	 * attached to {@link #downcastDispatcher} and formatted by the {@link #processor data processor}.
 	 *
 	 * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} modelElementOrFragment
 	 * Element whose content will be stringified.
@@ -145,8 +130,8 @@ export default class DataController {
 
 	/**
 	 * Returns the content of the given {@link module:engine/model/element~Element model element} or
-	 * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the
-	 * {@link #modelToView model-to-view converters} to a
+	 * {@link module:engine/model/documentfragment~DocumentFragment model document fragment} converted by the downcast
+	 * converters attached to {@link #downcastDispatcher} to a
 	 * {@link module:engine/view/documentfragment~DocumentFragment view document fragment}.
 	 *
 	 * @param {module:engine/model/element~Element|module:engine/model/documentfragment~DocumentFragment} modelElementOrFragment
@@ -160,7 +145,7 @@ export default class DataController {
 		const viewDocumentFragment = new ViewDocumentFragment();
 		this.mapper.bindElements( modelElementOrFragment, viewDocumentFragment );
 
-		this.modelToView.convertInsert( modelRange );
+		this.downcastDispatcher.convertInsert( modelRange );
 
 		if ( !modelElementOrFragment.is( 'documentFragment' ) ) {
 			// Then, if a document element is converted, convert markers.
@@ -168,7 +153,7 @@ export default class DataController {
 			const markers = _getMarkersRelativeToElement( modelElementOrFragment );
 
 			for ( const [ name, range ] of markers ) {
-				this.modelToView.convertMarkerAdd( name, range );
+				this.downcastDispatcher.convertMarkerAdd( name, range );
 			}
 		}
 
@@ -180,7 +165,7 @@ export default class DataController {
 
 	/**
 	 * Sets input data parsed by the {@link #processor data processor} and
-	 * converted by the {@link #viewToModel view-to-model converters}.
+	 * converted by the {@link #upcastDispatcher view-to-model converters}.
 	 *
 	 * This method also creates a batch with all the changes applied. If all you need is to parse data, use
 	 * the {@link #parse} method.
@@ -204,13 +189,13 @@ export default class DataController {
 	}
 
 	/**
-	 * Returns the data parsed by the {@link #processor data processor} and then
-	 * converted by the {@link #viewToModel view-to-model converters}.
+	 * Returns the data parsed by the {@link #processor data processor} and then converted by upcast converters
+	 * attached to the {@link #upcastDispatcher}.
 	 *
 	 * @see #set
 	 * @param {String} data Data to parse.
 	 * @param {module:engine/model/schema~SchemaContextDefinition} [context='$root'] Base context in which the view will
-	 * be converted to the model. See: {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#convert}.
+	 * be converted to the model. See: {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#convert}.
 	 * @returns {module:engine/model/documentfragment~DocumentFragment} Parsed data.
 	 */
 	parse( data, context = '$root' ) {
@@ -224,7 +209,7 @@ export default class DataController {
 	/**
 	 * Returns the result of the given {@link module:engine/view/element~Element view element} or
 	 * {@link module:engine/view/documentfragment~DocumentFragment view document fragment} converted by the
-	 * {@link #viewToModel view-to-model converters}, wrapped by {module:engine/model/documentfragment~DocumentFragment}.
+	 * {@link #upcastDispatcher view-to-model converters}, wrapped by {module:engine/model/documentfragment~DocumentFragment}.
 	 *
 	 * When marker elements were converted during the conversion process, it will be set as a document fragment's
 	 * {@link module:engine/model/documentfragment~DocumentFragment#markers static markers map}.
@@ -232,11 +217,11 @@ export default class DataController {
 	 * @param {module:engine/view/element~Element|module:engine/view/documentfragment~DocumentFragment} viewElementOrFragment
 	 * Element or document fragment whose content will be converted.
 	 * @param {module:engine/model/schema~SchemaContextDefinition} [context='$root'] Base context in which the view will
-	 * be converted to the model. See: {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#convert}.
+	 * be converted to the model. See: {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher#convert}.
 	 * @returns {module:engine/model/documentfragment~DocumentFragment} Output document fragment.
 	 */
 	toModel( viewElementOrFragment, context = '$root' ) {
-		return this.viewToModel.convert( viewElementOrFragment, context );
+		return this.upcastDispatcher.convert( viewElementOrFragment, context );
 	}
 
 	/**
@@ -247,7 +232,7 @@ export default class DataController {
 
 mix( DataController, ObservableMixin );
 
-// Helper function for converting part of a model to view.
+// Helper function for downcast conversion.
 //
 // Takes a document element (element that is added to a model document) and checks which markers are inside it
 // and which markers are containing it. If the marker is intersecting with element, the intersection is returned.

+ 17 - 25
packages/ckeditor5-engine/src/controller/editingcontroller.js

@@ -10,18 +10,18 @@
 import RootEditableElement from '../view/rooteditableelement';
 import ViewDocument from '../view/document';
 import Mapper from '../conversion/mapper';
-import ModelConversionDispatcher from '../conversion/modelconversiondispatcher';
+import DowncastDispatcher from '../conversion/downcastdispatcher';
 import {
 	insertText,
 	remove
-} from '../conversion/model-to-view-converters';
-import { convertSelectionChange } from '../conversion/view-selection-to-model-converters';
+} from '../conversion/downcast-converters';
+import { convertSelectionChange } from '../conversion/upcast-selection-converters';
 import {
 	convertRangeSelection,
 	convertCollapsedSelection,
 	clearAttributes,
 	clearFakeSelection
-} from '../conversion/model-selection-to-view-converters';
+} from '../conversion/downcast-selection-converters';
 
 import ObservableMixin from '@ckeditor/ckeditor5-utils/src/observablemixin';
 import mix from '@ckeditor/ckeditor5-utils/src/mix';
@@ -65,20 +65,12 @@ export default class EditingController {
 		this.mapper = new Mapper();
 
 		/**
-		 * Model-to-view conversion dispatcher that converts changes from the model to {@link #view the editing view}.
-		 *
-		 * To attach the model-to-view converter to the editing pipeline you need to add a listener to this dispatcher:
-		 *
-		 *		editing.modelToView( 'insert:$element', customInsertConverter );
-		 *
-		 * Or use {@link module:engine/conversion/buildmodelconverter~ModelConverterBuilder}:
-		 *
-		 *		buildModelConverter().for( editing.modelToView ).fromAttribute( 'bold' ).toElement( 'b' );
+		 * Downcast dispatcher that converts changes from the model to {@link #view the editing view}.
 		 *
 		 * @readonly
-		 * @member {module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher} #modelToView
+		 * @member {module:engine/conversion/downcastdispatcher~DowncastDispatcher} #downcastDispatcher
 		 */
-		this.modelToView = new ModelConversionDispatcher( this.model, {
+		this.downcastDispatcher = new DowncastDispatcher( this.model, {
 			mapper: this.mapper,
 			viewSelection: this.view.selection
 		} );
@@ -86,11 +78,11 @@ export default class EditingController {
 		const doc = this.model.document;
 
 		this.listenTo( doc, 'change', () => {
-			this.modelToView.convertChanges( doc.differ );
+			this.downcastDispatcher.convertChanges( doc.differ );
 		}, { priority: 'low' } );
 
 		this.listenTo( model, '_change', () => {
-			this.modelToView.convertSelection( doc.selection );
+			this.downcastDispatcher.convertSelection( doc.selection );
 			this.view.render();
 		}, { priority: 'low' } );
 
@@ -98,14 +90,14 @@ export default class EditingController {
 		this.listenTo( this.view, 'selectionChange', convertSelectionChange( this.model, this.mapper ) );
 
 		// Attach default model converters.
-		this.modelToView.on( 'insert:$text', insertText(), { priority: 'lowest' } );
-		this.modelToView.on( 'remove', remove(), { priority: 'low' } );
+		this.downcastDispatcher.on( 'insert:$text', insertText(), { priority: 'lowest' } );
+		this.downcastDispatcher.on( 'remove', remove(), { priority: 'low' } );
 
 		// Attach default model selection converters.
-		this.modelToView.on( 'selection', clearAttributes(), { priority: 'low' } );
-		this.modelToView.on( 'selection', clearFakeSelection(), { priority: 'low' } );
-		this.modelToView.on( 'selection', convertRangeSelection(), { priority: 'low' } );
-		this.modelToView.on( 'selection', convertCollapsedSelection(), { priority: 'low' } );
+		this.downcastDispatcher.on( 'selection', clearAttributes(), { priority: 'low' } );
+		this.downcastDispatcher.on( 'selection', clearFakeSelection(), { priority: 'low' } );
+		this.downcastDispatcher.on( 'selection', convertRangeSelection(), { priority: 'low' } );
+		this.downcastDispatcher.on( 'selection', convertCollapsedSelection(), { priority: 'low' } );
 
 		// Convert markers removal.
 		//
@@ -130,7 +122,7 @@ export default class EditingController {
 				if ( _operationAffectsMarker( operation, marker ) ) {
 					// And if the operation in any way modifies the marker, remove the marker from the view.
 					removedMarkers.add( marker.name );
-					this.modelToView.convertMarkerRemove( marker.name, markerRange );
+					this.downcastDispatcher.convertMarkerRemove( marker.name, markerRange );
 
 					// TODO: This stinks but this is the safest place to have this code.
 					this.model.document.differ.bufferMarkerChange( marker.name, markerRange, markerRange );
@@ -143,7 +135,7 @@ export default class EditingController {
 		this.listenTo( model.markers, 'remove', ( evt, marker ) => {
 			if ( !removedMarkers.has( marker.name ) ) {
 				removedMarkers.add( marker.name );
-				this.modelToView.convertMarkerRemove( marker.name, marker.getRange() );
+				this.downcastDispatcher.convertMarkerRemove( marker.name, marker.getRange() );
 			}
 		} );
 

+ 16 - 16
packages/ckeditor5-engine/src/conversion/conversion.js

@@ -28,8 +28,8 @@ export default class Conversion {
 	 * {@link module:utils/ckeditorerror~CKEditorError conversion-register-group-exists} error is thrown.
 	 *
 	 * @param {String} groupName A name for dispatchers group.
-	 * @param {Array.<module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher|
-	 * module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher>} dispatchers Dispatchers to register
+	 * @param {Array.<module:engine/conversion/downcastdispatcher~DowncastDispatcher|
+	 * module:engine/conversion/upcastdispatcher~UpcastDispatcher>} dispatchers Dispatchers to register
 	 * under given name.
 	 */
 	register( groupName, dispatchers ) {
@@ -49,7 +49,7 @@ export default class Conversion {
 	 * Provides chainable API to assign converters to dispatchers registered under given group name. Converters are added
 	 * by calling `.add()` method of an object returned by this function.
 	 *
-	 *		conversion.for( 'model' )
+	 *		conversion.for( 'downcast' )
 	 *			.add( conversionHelperA )
 	 *			.add( conversionHelperB );
 	 *
@@ -61,15 +61,15 @@ export default class Conversion {
 	 * Conversion helpers for most common cases are already provided. They are flexible enough to cover most use cases.
 	 * See documentation to learn how they can be configured.
 	 *
-	 * For model to view conversion, these are:
+	 * For downcast (model to view conversion), these are:
 	 *
-	 * * {@link module:engine/conversion/model-to-view-helpers~elementToElement model element to view element conversion helper},
-	 * * {@link module:engine/conversion/model-to-view-helpers~attributeToElement model attribute to view element conversion helper},
-	 * * {@link module:engine/conversion/model-to-view-helpers~attributeToAttribute model attribute to view attribute conversion helper}.
+	 * * {@link module:engine/conversion/downcast-helpers~elementToElement model element to view element conversion helper},
+	 * * {@link module:engine/conversion/downcast-helpers~attributeToElement model attribute to view element conversion helper},
+	 * * {@link module:engine/conversion/downcast-helpers~attributeToAttribute model attribute to view attribute conversion helper}.
 	 *
-	 * For view to model conversion, these are:
+	 * For upcast (view to model conversion), these are:
 	 *
-	 * * view element to model element conversion helper,
+	 * * {view element to model element conversion helper,
 	 * * view element to model attribute conversion helper,
 	 * * view attribute to model attribute conversion helper.
 	 *
@@ -79,12 +79,12 @@ export default class Conversion {
 	 *		const config = { model: 'paragraph', view: 'p' };
 	 *
 	 *		// Add converters to proper dispatchers using conversion helpers.
-	 *		conversion.for( 'model' ).add( modelElementToElement( config ) );
-	 *		conversion.for( 'view' ).add( viewElementToElement( config ) );
+	 *		conversion.for( 'downcast' ).add( modelElementToElement( config ) );
+	 *		conversion.for( 'upcast' ).add( viewElementToElement( config ) );
 	 *
 	 * An example of providing custom conversion helper that uses custom converter function:
 	 *
-	 *		conversion.for( 'model' ).add( dispatcher => {
+	 *		conversion.for( 'downcast' ).add( dispatcher => {
 	 *			// Adding custom `myConverter` converter for 'paragraph' element insertion, with default priority ('normal').
 	 *			dispatcher.on( 'insert:paragraph', myConverter );
 	 *		} );
@@ -112,8 +112,8 @@ export default class Conversion {
 	 *
 	 * @private
 	 * @param {String} groupName
-	 * @returns {Array.<module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher|
-	 * module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher>}
+	 * @returns {Array.<module:engine/conversion/downcastdispatcher~DowncastDispatcher|
+	 * module:engine/conversion/upcastdispatcher~UpcastDispatcher>}
 	 */
 	_getDispatchers( groupName ) {
 		const dispatchers = this._dispatchersGroups.get( groupName );
@@ -137,8 +137,8 @@ export default class Conversion {
 // adding converters to all specified dispatchers.
 //
 // @private
-// @param {Array.<module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher|
-// module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher>} dispatchers
+// @param {Array.<module:engine/conversion/downcastdispatcher~DowncastDispatcher|
+// module:engine/conversion/upcastdispatcher~UpcastDispatcher>} dispatchers
 // @param {Function} conversionHelper
 function _addToDispatchers( dispatchers, conversionHelper ) {
 	for ( const dispatcher of dispatchers ) {

+ 22 - 23
packages/ckeditor5-engine/src/conversion/model-to-view-converters.js

@@ -15,22 +15,21 @@ import viewWriter from '../view/writer';
 import DocumentSelection from '../model/documentselection';
 
 /**
- * Contains model to view converters for
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}.
+ * Contains downcast (model to view) converters for {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}.
  *
- * @module engine/conversion/model-to-view-converters
+ * @module engine/conversion/downcast-converters
  */
 
 /**
  * Function factory, creates a converter that converts node insertion changes from the model to the view.
  * The view element that will be added to the view depends on passed parameter. If {@link module:engine/view/element~Element} was passed,
  * it will be cloned and the copy will be inserted. If `Function` is provided, it is passed all the parameters of the
- * dispatcher's {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:insert insert event}.
+ * dispatcher's {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert insert event}.
  * It's expected that the function returns a {@link module:engine/view/element~Element}.
  * The result of the function will be inserted to the view.
  *
  * The converter automatically consumes corresponding value from consumables list, stops the event (see
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}) and bind model and view elements.
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}) and bind model and view elements.
  *
  *		modelDispatcher.on( 'insert:paragraph', insertElement( new ViewElement( 'p' ) ) );
  *
@@ -71,10 +70,10 @@ export function insertElement( elementCreator ) {
 }
 
 /**
- * Function factory, creates a default model-to-view converter for text insertion changes.
+ * Function factory, creates a default downcast converter for text insertion changes.
  *
  * The converter automatically consumes corresponding value from consumables list and stops the event (see
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}).
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).
  *
  *		modelDispatcher.on( 'insert:$text', insertText() );
  *
@@ -94,7 +93,7 @@ export function insertText() {
 }
 
 /**
- * Function factory, creates a default model-to-view converter for node remove changes.
+ * Function factory, creates a default downcast converter for node remove changes.
  *
  *		modelDispatcher.on( 'remove', remove() );
  *
@@ -186,7 +185,7 @@ export function insertUIElement( elementCreator ) {
 }
 
 /**
- * Function factory, creates a default model-to-view converter for removing {@link module:engine/view/uielement~UIElement ui element}
+ * Function factory, creates a default downcast converter for removing {@link module:engine/view/uielement~UIElement ui element}
  * basing on marker remove change.
  *
  * @param {module:engine/view/uielement~UIElement|Function} elementCreator View ui element, or function returning
@@ -239,7 +238,7 @@ export function removeUIElement( elementCreator ) {
  * **Note:** Provided attribute creator should always return the same `key` for given attribute from the model.
  *
  * The converter automatically consumes corresponding value from consumables list and stops the event (see
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}).
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).
  *
  *		modelDispatcher.on( 'attribute:customAttr:myElem', changeAttribute( ( value, data ) => {
  *			// Change attribute key from `customAttr` to `class` in view.
@@ -258,7 +257,7 @@ export function removeUIElement( elementCreator ) {
  * @param {Function} [attributeCreator] Function returning an object with two properties: `key` and `value`, which
  * represents attribute key and attribute value to be set on a {@link module:engine/view/element~Element view element}.
  * The function is passed all the parameters of the
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:attribute} event.
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute} event.
  * @returns {Function} Set/change attribute converter.
  */
 export function changeAttribute( attributeCreator ) {
@@ -301,13 +300,13 @@ export function changeAttribute( attributeCreator ) {
  *
  * The wrapping node depends on passed parameter. If {@link module:engine/view/element~Element} was passed, it will be cloned and
  * the copy will become the wrapping element. If `Function` is provided, it is passed attribute value and then all the parameters of the
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:attribute attribute event}.
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute attribute event}.
  * It's expected that the function returns a {@link module:engine/view/element~Element}.
  * The result of the function will be the wrapping element.
  * When provided `Function` does not return element, then will be no conversion.
  *
  * The converter automatically consumes corresponding value from consumables list, stops the event (see
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}).
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}).
  *
  *		modelDispatcher.on( 'attribute:bold', wrapItem( new ViewAttributeElement( 'strong' ) ) );
  *
@@ -358,7 +357,7 @@ export function wrap( elementCreator ) {
 /**
  * Function factory, creates converter that converts text inside marker's range. Converter wraps the text with
  * {@link module:engine/view/attributeelement~AttributeElement} created from provided descriptor.
- * See {link module:engine/conversion/model-to-view-converters~createViewElementFromHighlightDescriptor}.
+ * See {link module:engine/conversion/downcast-converters~createViewElementFromHighlightDescriptor}.
  *
  * Also can be used to convert selection that is inside a marker. In that case, an empty attribute element will be
  * created and the selection will be put inside it.
@@ -367,7 +366,7 @@ export function wrap( elementCreator ) {
  *
  * If the highlight descriptor will not provide `id` property, name of the marker will be used.
  *
- * @param {module:engine/conversion/model-to-view-converters~HighlightDescriptor|Function} highlightDescriptor
+ * @param {module:engine/conversion/downcast-converters~HighlightDescriptor|Function} highlightDescriptor
  * @return {Function}
  */
 export function highlightText( highlightDescriptor ) {
@@ -415,7 +414,7 @@ export function highlightText( highlightDescriptor ) {
  *
  * If the highlight descriptor will not provide `id` property, name of the marker will be used.
  *
- * @param {module:engine/conversion/model-to-view-converters~HighlightDescriptor|Function} highlightDescriptor
+ * @param {module:engine/conversion/downcast-converters~HighlightDescriptor|Function} highlightDescriptor
  * @return {Function}
  */
 export function highlightElement( highlightDescriptor ) {
@@ -460,7 +459,7 @@ export function highlightElement( highlightDescriptor ) {
  * Both text nodes and elements are handled by this converter by they are handled a bit differently.
  *
  * Text nodes are unwrapped using {@link module:engine/view/attributeelement~AttributeElement} created from provided
- * highlight descriptor. See {link module:engine/conversion/model-to-view-converters~highlightDescriptorToAttributeElement}.
+ * highlight descriptor. See {link module:engine/conversion/downcast-converters~highlightDescriptorToAttributeElement}.
  *
  * For elements, the converter checks if an element has `removeHighlight` function stored as
  * {@link module:engine/view/element~Element#setCustomProperty custom property}. If so, it uses it to remove the highlight.
@@ -473,7 +472,7 @@ export function highlightElement( highlightDescriptor ) {
  *
  * If the highlight descriptor will not provide `id` property, name of the marker will be used.
  *
- * @param {module:engine/conversion/model-to-view-converters~HighlightDescriptor|Function} highlightDescriptor
+ * @param {module:engine/conversion/downcast-converters~HighlightDescriptor|Function} highlightDescriptor
  * @return {Function}
  */
 export function removeHighlight( highlightDescriptor ) {
@@ -544,11 +543,11 @@ function _prepareDescriptor( highlightDescriptor, data, conversionApi ) {
 
 /**
  * Creates `span` {@link module:engine/view/attributeelement~AttributeElement view attribute element} from information
- * provided by {@link module:engine/conversion/model-to-view-converters~HighlightDescriptor} object. If priority
+ * provided by {@link module:engine/conversion/downcast-converters~HighlightDescriptor} object. If priority
  * is not provided in descriptor - default priority will be used.
  *
- * @param {module:engine/conversion/model-to-view-converters~HighlightDescriptor} descriptor
- * @return {module:engine/conversion/model-to-view-converters~HighlightAttributeElement}
+ * @param {module:engine/conversion/downcast-converters~HighlightDescriptor} descriptor
+ * @return {module:engine/conversion/downcast-converters~HighlightAttributeElement}
  */
 export function createViewElementFromHighlightDescriptor( descriptor ) {
 	const viewElement = new HighlightAttributeElement( 'span', descriptor.attributes );
@@ -575,7 +574,7 @@ export function createViewElementFromHighlightDescriptor( descriptor ) {
  * is {@link module:engine/view/attributeelement~AttributeElement#isSimilar} method.
  *
  * For `HighlightAttributeElement` it checks just `highlightDescriptorId` custom property, that is set during marker-to-highlight
- * conversion basing on {@link module:engine/conversion/model-to-view-converters~HighlightDescriptor} object.
+ * conversion basing on {@link module:engine/conversion/downcast-converters~HighlightDescriptor} object.
  * `HighlightAttributeElement`s with same `highlightDescriptorId` property are considered similar.
  */
 class HighlightAttributeElement extends ViewAttributeElement {
@@ -602,7 +601,7 @@ class HighlightAttributeElement extends ViewAttributeElement {
  *  * descriptor `id` is passed to the `removeHighlight` function upon conversion and should be used to remove the highlight of given
  *  id from the element.
  *
- * @typedef {Object} module:engine/conversion/model-to-view-converters~HighlightDescriptor
+ * @typedef {Object} module:engine/conversion/downcast-converters~HighlightDescriptor
  *
  * @property {String|Array.<String>} class CSS class or array of classes to set. If descriptor is used to
  * create {@link module:engine/view/attributeelement~AttributeElement} over text nodes, those classes will be set

+ 40 - 40
packages/ckeditor5-engine/src/conversion/model-to-view-helpers.js

@@ -10,12 +10,12 @@ import ViewUIElement from '../view/uielement';
 import {
 	insertElement, wrap, changeAttribute,
 	insertUIElement, removeUIElement, highlightText, highlightElement, removeHighlight
-} from './model-to-view-converters';
+} from './downcast-converters';
 
 import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
 
 /**
- * @module engine/conversion/model-to-view-helpers
+ * @module engine/conversion/downcast-helpers
  */
 
 /**
@@ -23,13 +23,13 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  *
  * This conversion results in creating a view element. For example, model `<paragraph>Foo</paragraph>` becomes `<p>Foo</p>` in the view.
  *
- *		elementToElement( { model: 'paragraph', view: 'p' } );
+ *		downcastElementToElement( { model: 'paragraph', view: 'p' } );
  *
- *		elementToElement( { model: 'paragraph', view: 'p' }, 'high' );
+ *		downcastElementToElement( { model: 'paragraph', view: 'p' }, 'high' );
  *
- *		elementToElement( { model: 'paragraph', view: new ViewContainerElement( 'p' ) } );
+ *		downcastElementToElement( { model: 'paragraph', view: new ViewContainerElement( 'p' ) } );
  *
- *		elementToElement( {
+ *		downcastElementToElement( {
  *			model: 'fancyParagraph',
  *			view: {
  *				name: 'p',
@@ -37,7 +37,7 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  *			}
  *		} );
  *
- * 		elementToElement( {
+ * 		downcastElementToElement( {
  * 			model: 'heading',
  * 			view: modelElement => new ViewContainerElement( 'h' + modelElement.getAttribute( 'level' ) )
  * 		} );
@@ -53,7 +53,7 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function elementToElement( config, priority = 'normal' ) {
+export function downcastElementToElement( config, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	_normalizeToElementConfig( config, ViewContainerElement );
@@ -69,20 +69,20 @@ export function elementToElement( config, priority = 'normal' ) {
  * This conversion results in wrapping view nodes in a view attribute element. For example, model text node with data
  * `"Foo"` and `bold` attribute becomes `<strong>Foo</strong>` in the view.
  *
- *		attributeToElement( 'bold', { view: 'strong' } );
+ *		downcastAttributeToElement( 'bold', { view: 'strong' } );
  *
- *		attributeToElement( 'bold', { view: 'strong' }, 'high' );
+ *		downcastAttributeToElement( 'bold', { view: 'strong' }, 'high' );
  *
- *		attributeToElement( 'bold', { view: new ViewAttributeElement( 'strong' ) } );
+ *		downcastAttributeToElement( 'bold', { view: new ViewAttributeElement( 'strong' ) } );
  *
- *		attributeToElement( 'bold', {
+ *		downcastAttributeToElement( 'bold', {
  *			view: {
  *				name: 'span',
  *				class: 'bold'
  *			}
  *		} );
  *
- *		attributeToElement( 'styled', {
+ *		downcastAttributeToElement( 'styled', {
  *			model: 'dark',
  *			view: {
  *				name: 'span',
@@ -90,7 +90,7 @@ export function elementToElement( config, priority = 'normal' ) {
  *			}
  *		} );
  *
- *		attributeToElement( 'fontSize', [
+ *		downcastAttributeToElement( 'fontSize', [
  *			{
  *				model: 'big',
  *				view: {
@@ -111,7 +111,7 @@ export function elementToElement( config, priority = 'normal' ) {
  *			}
  *		] );
  *
- * 		attributeToElement( 'bold', {
+ * 		downcastAttributeToElement( 'bold', {
  * 			view: modelAttributeValue => new ViewAttributeElement( 'span', { style: 'font-weight:' + modelAttributeValue } )
  * 		} );
  *
@@ -128,7 +128,7 @@ export function elementToElement( config, priority = 'normal' ) {
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function attributeToElement( modelAttributeKey, config, priority = 'normal' ) {
+export function downcastAttributeToElement( modelAttributeKey, config, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	_normalizeToElementConfig( config, ViewAttributeElement );
@@ -146,20 +146,20 @@ export function attributeToElement( modelAttributeKey, config, priority = 'norma
  * This conversion results in adding an attribute on a view node, basing on an attribute from a model node. For example,
  * `<image src='foo.jpg'></image>` is converted to `<img src='foo.jpg'></img>`.
  *
- *		attributeToAttribute( 'src' );
+ *		downcastAttributeToAttribute( 'src' );
  *
- *		attributeToAttribute( 'source', { view: 'src' } );
+ *		downcastAttributeToAttribute( 'source', { view: 'src' } );
  *
- *		attributeToAttribute( 'source', { view: 'src' }, 'high' );
+ *		downcastAttributeToAttribute( 'source', { view: 'src' }, 'high' );
  *
- *		attributeToAttribute( 'stylish', {
+ *		downcastAttributeToAttribute( 'stylish', {
  *			view: {
  *				key: 'class',
  *				value: 'styled'
  *			}
  *		} );
  *
- *		attributeToAttribute( 'styled', {
+ *		downcastAttributeToAttribute( 'styled', {
  *			model: 'dark',
  *			view: {
  *				key: 'class',
@@ -167,7 +167,7 @@ export function attributeToElement( modelAttributeKey, config, priority = 'norma
  *			}
  *		} );
  *
- *		attributeToAttribute( 'style', [
+ *		downcastAttributeToAttribute( 'style', [
  *			{
  *				model: 'dark',
  *				view: {
@@ -184,7 +184,7 @@ export function attributeToElement( modelAttributeKey, config, priority = 'norma
  *			}
  *		] );
  *
- *		attributeToAttribute( 'style', {
+ *		downcastAttributeToAttribute( 'style', {
  *			view: attributeValue => ( { key: 'class', value: 'style-' + attributeValue } )
  *		} );
  *
@@ -205,7 +205,7 @@ export function attributeToElement( modelAttributeKey, config, priority = 'norma
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function attributeToAttribute( modelAttributeKey, config = {}, priority = 'normal' ) {
+export function downcastAttributeToAttribute( modelAttributeKey, config = {}, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	_normalizeToAttributeConfig( modelAttributeKey, config );
@@ -224,13 +224,13 @@ export function attributeToAttribute( modelAttributeKey, config = {}, priority =
  * is collapsed, only one element is created. For example, model marker set like this `<paragraph>F[oo b]ar</paragraph>`
  * becomes `<p>F<span data-marker="search"></span>oo b<span data-marker="search"></span>ar</p>` in the view.
  *
- *		markerToElement( { model: 'search', view: 'marker-search' } );
+ *		downcastMarkerToElement( { model: 'search', view: 'marker-search' } );
  *
- *		markerToElement( { model: 'search', view: 'marker-search' }, 'high' );
+ *		downcastMarkerToElement( { model: 'search', view: 'marker-search' }, 'high' );
  *
- *		markerToElement( { model: 'search', view: new ViewUIElement( 'span', { data-marker: 'search' } ) } );
+ *		downcastMarkerToElement( { model: 'search', view: new ViewUIElement( 'span', { data-marker: 'search' } ) } );
  *
- *		markerToElement( {
+ *		downcastMarkerToElement( {
  *			model: 'search',
  *			view: {
  *				name: 'span',
@@ -240,7 +240,7 @@ export function attributeToAttribute( modelAttributeKey, config = {}, priority =
  *			}
  *		} );
  *
- * 		markerToElement( {
+ * 		downcastMarkerToElement( {
  * 			model: 'search',
  * 			view: data => {
  *	 			return new ViewUIElement( 'span', { 'data-marker': 'search', 'data-start': data.isOpening } );
@@ -250,7 +250,7 @@ export function attributeToAttribute( modelAttributeKey, config = {}, priority =
  * If function is passed as `config.view` parameter, it will be used to generate both boundary elements. The function
  * receives `data` object as parameter and should return an instance of {@link module:engine/view/uielement~UIElement view.UIElement}.
  * The `data` object properties are passed from
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:addMarker}. Additionally,
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker}. Additionally,
  * `data.isOpening` parameter is passed, which is set to `true` for marker start boundary element, and `false` to
  * marker end boundary element.
  *
@@ -266,7 +266,7 @@ export function attributeToAttribute( modelAttributeKey, config = {}, priority =
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function markerToElement( config, priority = 'normal' ) {
+export function downcastMarkerToElement( config, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	_normalizeToElementConfig( config, ViewUIElement );
@@ -281,7 +281,7 @@ export function markerToElement( config, priority = 'normal' ) {
  * Model marker to highlight conversion helper.
  *
  * This conversion results in creating a highlight on view nodes. For this kind of conversion,
- * {@link module:engine/conversion/model-to-view-converters~HighlightDescriptor} should be provided.
+ * {@link module:engine/conversion/downcast-converters~HighlightDescriptor} should be provided.
  *
  * For text nodes, a `span` {@link module:engine/view/attributeelement~AttributeElement} is created and it wraps all text nodes
  * in the converted marker range. For example, model marker set like this `<paragraph>F[oo b]ar</paragraph>` becomes
@@ -296,11 +296,11 @@ export function markerToElement( config, priority = 'normal' ) {
  * to a container element, it is the container element instance itself which applies values from highlight descriptor.
  * So, in a sense, converter takes care of stating what should be applied on what, while element decides how to apply that.
  *
- *		markerToHighlight( { model: 'comment', view: { class: 'comment' } } );
+ *		downcastMarkerToHighlight( { model: 'comment', view: { class: 'comment' } } );
  *
- *		markerToHighlight( { model: 'comment', view: { class: 'new-comment' } }, 'high' );
+ *		downcastMarkerToHighlight( { model: 'comment', view: { class: 'new-comment' } }, 'high' );
  *
- * 		markerToHighlight( {
+ * 		downcastMarkerToHighlight( {
  * 			model: 'comment',
  * 			view: data => {
  * 				// Assuming that marker name is in a form of comment:commentType.
@@ -315,18 +315,18 @@ export function markerToElement( config, priority = 'normal' ) {
  * If function is passed as `config.view` parameter, it will be used to generate highlight descriptor. The function
  * receives `data` object as parameter and should return an instance of {@link module:engine/view/uielement~UIElement view.UIElement}.
  * The `data` object properties are passed from
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:addMarker}.
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker}.
  *
  * See {@link module:engine/conversion/conversion~Conversion#for} to learn how to add converter to conversion process.
  *
  * @param {Object} config Conversion configuration.
  * @param {String} config.model Name of the model marker (or model marker group) to convert.
- * @param {module:engine/conversion/model-to-view-converters~HighlightDescriptor|Function} config.view Highlight descriptor
+ * @param {module:engine/conversion/downcast-converters~HighlightDescriptor|Function} config.view Highlight descriptor
  * which will be used for highlighting or a function that takes model marker data as a parameter and returns a highlight descriptor.
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function markerToHighlight( config, priority = 'normal' ) {
+export function downcastMarkerToHighlight( config, priority = 'normal' ) {
 	return dispatcher => {
 		dispatcher.on( 'addMarker:' + config.model, highlightText( config.view ), { priority } );
 		dispatcher.on( 'addMarker:' + config.model, highlightElement( config.view ), { priority } );
@@ -334,7 +334,7 @@ export function markerToHighlight( config, priority = 'normal' ) {
 	};
 }
 
-// Takes config and adds default parameters if they don't exist and normalizes other parameters to be used in model-to-view converters
+// Takes config and adds default parameters if they don't exist and normalizes other parameters to be used in downcast converters
 // for generating a view element.
 //
 // @param {Object} config Object with conversion helper configuration.
@@ -387,7 +387,7 @@ function _createViewElementFromDefinition( viewElementDefinition, ViewElementCla
 	return element;
 }
 
-// Takes config and adds default parameters if they don't exist and normalizes other parameters to be used in model-to-view converters
+// Takes config and adds default parameters if they don't exist and normalizes other parameters to be used in downcast converters
 // for generating view attribute.
 //
 // @param {String} modelAttributeKey Model attribute key for which config is defined.

+ 4 - 4
packages/ckeditor5-engine/src/conversion/model-selection-to-view-converters.js

@@ -8,9 +8,9 @@ import viewWriter from '../view/writer';
 /**
  * Contains {@link module:engine/model/selection~Selection model selection} to
  * {@link module:engine/view/selection~Selection view selection} converters for
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}.
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}.
  *
- * @module engine/conversion/model-selection-to-view-converters
+ * @module engine/conversion/downcast-selection-converters
  */
 
 /**
@@ -62,7 +62,7 @@ export function convertRangeSelection() {
  * converted, the broken attributes might be merged again, or the position where the selection is may be wrapped
  * in different, appropriate attribute elements.
  *
- * See also {@link module:engine/conversion/model-selection-to-view-converters~clearAttributes} which does a clean-up
+ * See also {@link module:engine/conversion/downcast-selection-converters~clearAttributes} which does a clean-up
  * by merging attributes.
  *
  * @returns {Function} Selection converter.
@@ -106,7 +106,7 @@ export function convertCollapsedSelection() {
  *
  *		modelDispatcher.on( 'selection', clearAttributes() );
  *
- * See {@link module:engine/conversion/model-selection-to-view-converters~convertCollapsedSelection}
+ * See {@link module:engine/conversion/downcast-selection-converters~convertCollapsedSelection}
  * which do the opposite by breaking attributes in the selection position.
  *
  * @returns {Function} Selection converter.

+ 33 - 33
packages/ckeditor5-engine/src/conversion/modelconversiondispatcher.js

@@ -4,7 +4,7 @@
  */
 
 /**
- * @module engine/conversion/modelconversiondispatcher
+ * @module engine/conversion/downcastdispatcher
  */
 
 import Consumable from './modelconsumable';
@@ -14,69 +14,69 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
 import extend from '@ckeditor/ckeditor5-utils/src/lib/lodash/extend';
 
 /**
- * `ModelConversionDispatcher` is a central point of model conversion, which is a process of reacting to changes
+ * `DowncastDispatcher` is a central point of downcasting (conversion from model to view), which is a process of reacting to changes
  * in the model and firing a set of events. Callbacks listening to those events are called converters. Those
  * converters role is to convert the model changes to changes in view (for example, adding view nodes or
  * changing attributes on view elements).
  *
- * During conversion process, `ModelConversionDispatcher` fires events, basing on state of the model and prepares
+ * During conversion process, `DowncastDispatcher` fires events, basing on state of the model and prepares
  * data for those events. It is important to understand that those events are connected with changes done on model,
- * for example: "node has been inserted" or "attribute has changed". This is in contrary to view to model conversion,
+ * for example: "node has been inserted" or "attribute has changed". This is in a contrary to upcasting (view to model conversion),
  * where we convert view state (view nodes) to a model tree.
  *
  * The events are prepared basing on a diff created by {@link module:engine/model/differ~Differ Differ}, which buffers them
- * and then passes to `ModelConversionDispatcher` as a diff between old model state and new model state.
+ * and then passes to `DowncastDispatcher` as a diff between old model state and new model state.
  *
  * Note, that because changes are converted there is a need to have a mapping between model structure and view structure.
- * To map positions and elements during model to view conversion use {@link module:engine/conversion/mapper~Mapper}.
+ * To map positions and elements during downcast (model to view conversion) use {@link module:engine/conversion/mapper~Mapper}.
  *
- * `ModelConversionDispatcher` fires following events for model tree changes:
+ * `DowncastDispatcher` fires following events for model tree changes:
  *
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:insert insert}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert insert}
  * if a range of nodes has been inserted to the model tree,
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:remove remove}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:remove remove}
  * if a range of nodes has been removed from the model tree,
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:attribute attribute}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute attribute}
  * if attribute has been added, changed or removed from a model node.
  *
- * For {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:insert insert}
- * and {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:attribute attribute},
- * `ModelConversionDispatcher` generates {@link module:engine/conversion/modelconsumable~ModelConsumable consumables}.
+ * For {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:insert insert}
+ * and {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute attribute},
+ * `DowncastDispatcher` generates {@link module:engine/conversion/modelconsumable~ModelConsumable consumables}.
  * These are used to have a control over which changes has been already consumed. It is useful when some converters
  * overwrite other or converts multiple changes (for example converts insertion of an element and also converts that
  * element's attributes during insertion).
  *
- * Additionally, `ModelConversionDispatcher` fires events for {@link module:engine/model/markercollection~Marker marker} changes:
+ * Additionally, `DowncastDispatcher` fires events for {@link module:engine/model/markercollection~Marker marker} changes:
  *
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:addMarker} if a marker has been added,
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:removeMarker} if a marker has been removed.
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker} if a marker has been added,
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:removeMarker} if a marker has been removed.
  *
  * Note, that changing a marker is done through removing the marker from the old range, and adding on the new range,
  * so both those events are fired.
  *
- * Finally, `ModelConversionDispatcher` also handles firing events for {@link module:engine/model/selection model selection}
+ * Finally, `DowncastDispatcher` also handles firing events for {@link module:engine/model/selection model selection}
  * conversion:
  *
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:selection}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:selection}
  * which converts selection from model to view,
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:attribute}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:attribute}
  * which is fired for every selection attribute,
- * * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:addMarker}
+ * * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker}
  * which is fired for every marker which contains selection.
  *
  * Unlike model tree and markers, events for selection are not fired for changes but for selection state.
  *
- * When providing custom listeners for `ModelConversionDispatcher` remember to check whether given change has not been
+ * When providing custom listeners for `DowncastDispatcher` remember to check whether given change has not been
  * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed} yet.
  *
- * When providing custom listeners for `ModelConversionDispatcher` keep in mind that any callback that had
+ * When providing custom listeners for `DowncastDispatcher` keep in mind that any callback that had
  * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed} a value from a consumable and
  * converted the change should also stop the event (for efficiency purposes).
  *
- * Example of a custom converter for `ModelConversionDispatcher`:
+ * Example of a custom converter for `DowncastDispatcher`:
  *
  *		// We will convert inserting "paragraph" model element into the model.
- *		modelDispatcher.on( 'insert:paragraph', ( evt, data, consumable, conversionApi ) => {
+ *		downcastDispatcher.on( 'insert:paragraph', ( evt, data, consumable, conversionApi ) => {
  *			// Remember to check whether the change has not been consumed yet and consume it.
  *			if ( consumable.consume( data.item, 'insert' ) ) {
  *				return;
@@ -98,9 +98,9 @@ import extend from '@ckeditor/ckeditor5-utils/src/lib/lodash/extend';
  *			evt.stop();
  *		} );
  */
-export default class ModelConversionDispatcher {
+export default class DowncastDispatcher {
 	/**
-	 * Creates a `ModelConversionDispatcher` instance.
+	 * Creates a `DowncastDispatcher` instance.
 	 *
 	 * @param {module:engine/model/model~Model} model Data model.
 	 * @param {Object} [conversionApi] Interface passed by dispatcher to the events calls.
@@ -443,7 +443,7 @@ export default class ModelConversionDispatcher {
 	 * @param {module:engine/model/item~Item} data.item Inserted item.
 	 * @param {module:engine/model/range~Range} data.range Range spanning over inserted item.
 	 * @param {module:engine/conversion/modelconsumable~ModelConsumable} consumable Values to consume.
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 
 	/**
@@ -460,7 +460,7 @@ export default class ModelConversionDispatcher {
 	 * @param {module:engine/model/position~Position} data.sourcePosition Position from where the range has been removed.
 	 * @param {module:engine/model/range~Range} data.range Removed range (in {@link module:engine/model/document~Document#graveyard
 	 * graveyard root}).
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 
 	/**
@@ -482,7 +482,7 @@ export default class ModelConversionDispatcher {
 	 * @param {*} data.attributeOldValue Attribute value before the change. This is `null` when selection attribute is converted.
 	 * @param {*} data.attributeNewValue New attribute value.
 	 * @param {module:engine/conversion/modelconsumable~ModelConsumable} consumable Values to consume.
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 
 	/**
@@ -491,7 +491,7 @@ export default class ModelConversionDispatcher {
 	 * @event selection
 	 * @param {module:engine/model/selection~Selection} selection Selection that is converted.
 	 * @param {module:engine/conversion/modelconsumable~ModelConsumable} consumable Values to consume.
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 
 	/**
@@ -526,7 +526,7 @@ export default class ModelConversionDispatcher {
 	 * @param {module:engine/model/range~Range} data.markerRange Marker range.
 	 * @param {String} data.markerName Marker name.
 	 * @param {module:engine/conversion/modelconsumable~ModelConsumable} consumable Values to consume.
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 
 	/**
@@ -541,11 +541,11 @@ export default class ModelConversionDispatcher {
 	 * @param {Object} data Additional information about the change.
 	 * @param {module:engine/model/range~Range} data.markerRange Marker range.
 	 * @param {String} data.markerName Marker name.
-	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `ModelConversionDispatcher` constructor.
+	 * @param {Object} conversionApi Conversion interface to be used by callback, passed in `DowncastDispatcher` constructor.
 	 */
 }
 
-mix( ModelConversionDispatcher, EmitterMixin );
+mix( DowncastDispatcher, EmitterMixin );
 
 // Helper function, checks whether change of `marker` at `modelPosition` should be converted. Marker changes are not
 // converted if they happen inside an element with custom conversion method.

+ 4 - 4
packages/ckeditor5-engine/src/conversion/modelconsumable.js

@@ -15,7 +15,7 @@ import TextProxy from '../model/textproxy';
  * Consumables are various aspects of the model. A model item can be broken down into singular properties that might be
  * taken into consideration when converting that item.
  *
- * `ModelConsumable` is used by {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher} while analyzing changed
+ * `ModelConsumable` is used by {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher} while analyzing changed
  * parts of {@link module:engine/model/document~Document the document}. The added / changed / removed model items are broken down
  * into singular properties (the item itself and it's attributes). All those parts are saved in `ModelConsumable`. Then,
  * during conversion, when given part of model item is converted (i.e. the view element has been inserted into the view,
@@ -24,12 +24,12 @@ import TextProxy from '../model/textproxy';
  * For model items, `ModelConsumable` stores consumable values of one of following types: `insert`, `addAttribute:<attributeKey>`,
  * `changeAttribute:<attributeKey>`, `removeAttribute:<attributeKey>`.
  *
- * In most cases, it is enough to let {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}
+ * In most cases, it is enough to let {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}
  * gather consumable values, so there is no need to use
- * @link module:engine/conversion/modelconsumable~ModelConsumable#add add method} directly.
+ * {@link module:engine/conversion/modelconsumable~ModelConsumable#add add method} directly.
  * However, it is important to understand how consumable values can be
  * {@link module:engine/conversion/modelconsumable~ModelConsumable#consume consumed}.
- * See {@link module:engine/conversion/model-selection-to-view-converters default model to view converters} for more information.
+ * See {@link module:engine/conversion/downcast-selection-converters default downcast converters} for more information.
  *
  * Keep in mind, that one conversion event may have multiple callbacks (converters) attached to it. Each of those is
  * able to convert one or more parts of the model. However, when one of those callbacks actually converts

+ 43 - 44
packages/ckeditor5-engine/src/conversion/definition-conversion.js

@@ -4,28 +4,28 @@
  */
 
 /**
- * @module engine/conversion/definition-conversion
+ * @module engine/conversion/two-way-helpers
  */
 
 import {
-	elementToElement as mtvElementToElement,
-	attributeToElement as mtvAttributeToElement,
-	attributeToAttribute as mtvAttributeToAttribute
-} from './model-to-view-helpers';
+	downcastElementToElement,
+	downcastAttributeToElement,
+	downcastAttributeToAttribute
+} from './downcast-helpers';
 
 import {
-	elementToElement as vtmElementToElement,
-	elementToAttribute as vtmElementToAttribute,
-	attributeToAttribute as vtmAttributeToAttribute
-} from './view-to-model-helpers';
+	upcastElementToElement,
+	upcastElementToAttribute,
+	upcastAttributeToAttribute
+} from './upcast-helpers';
 
 /**
  * Defines a conversion between the model and the view where a model element is represented as a view element (and vice versa).
  * For example, model `<paragraph>Foo</paragraph>` is `<p>Foo</p>` in the view.
  *
- *		modelElementIsViewElement( conversion, { model: 'paragraph', view: 'p' } );
+ *		elementToElement( conversion, { model: 'paragraph', view: 'p' } );
  *
- *		modelElementIsViewElement( conversion, {
+ *		elementToElement( conversion, {
  *			model: 'fancyParagraph',
  *			view: {
  *				name: 'p',
@@ -33,7 +33,7 @@ import {
  *			}
  *		} );
  *
- *		modelElementIsViewElement( conversion, {
+ *		elementToElement( conversion, {
  *			model: 'paragraph',
  *			view: 'p',
  *			upcastAlso: [
@@ -48,7 +48,7 @@ import {
  *			]
  *		} );
  *
- *		modelElementIsViewElement( conversion, {
+ *		elementToElement( conversion, {
  *			model: 'heading',
  *			view: 'h2',
  *			// Convert "headling-like" paragraphs to headings.
@@ -82,13 +82,13 @@ import {
  * @param {module:engine/view/matcher~MatcherPattern|Array.<module:engine/view/matcher~MatcherPattern>} [definition.upcastAlso]
  * Any view element matching `upcastAlso` will also be converted to the given model element.
  */
-export function modelElementIsViewElement( conversion, definition ) {
-	// Set model-to-view conversion.
-	conversion.for( 'model' ).add( mtvElementToElement( definition ) );
+export function elementToElement( conversion, definition ) {
+	// Set up downcast converter.
+	conversion.for( 'downcast' ).add( downcastElementToElement( definition ) );
 
-	// Set view-to-model conversion.
+	// Set up upcast converter.
 	for ( const view of _getAllViews( definition ) ) {
-		conversion.for( 'view' ).add( vtmElementToElement( {
+		conversion.for( 'upcast' ).add( upcastElementToElement( {
 			model: definition.model,
 			view
 		} ) );
@@ -99,16 +99,16 @@ export function modelElementIsViewElement( conversion, definition ) {
  * Defines a conversion between the model and the view where a model attribute is represented as a view element (and vice versa).
  * For example, model text node with data `"Foo"` and `bold` attribute is `<strong>Foo</strong>` in the view.
  *
- *		modelAttributeIsViewElement( conversion, 'bold', { view: 'strong' } );
+ *		attributeToElement( conversion, 'bold', { view: 'strong' } );
  *
- *		modelAttributeIsViewElement( conversion, 'bold', {
+ *		attributeToElement( conversion, 'bold', {
  *			view: {
  *				name: 'span',
  *				class: 'bold'
  *			}
  *		} );
  *
- *		modelAttributeIsViewElement( conversion, 'bold', {
+ *		attributeToElement( conversion, 'bold', {
  *			view: 'strong',
  *			upcastAlso: [
  *				'b',
@@ -135,7 +135,7 @@ export function modelElementIsViewElement( conversion, definition ) {
  *			]
  *		} );
  *
- *		modelAttributeIsViewElement( conversion, 'styled', {
+ *		attributeToElement( conversion, 'styled', {
  *			model: 'dark',
  *			view: {
  *				name: 'span',
@@ -143,7 +143,7 @@ export function modelElementIsViewElement( conversion, definition ) {
  *			}
  *		} );
  *
- *		modelAttributeIsViewElement( conversion, 'fontSize', [
+ *		attributeToElement( conversion, 'fontSize', [
  *			{
  *				model: 'big',
  *				view: {
@@ -164,7 +164,7 @@ export function modelElementIsViewElement( conversion, definition ) {
  *			}
  *		] );
  *
- *		modelAttributeIsViewElement( conversion, 'fontSize', [
+ *		attributeToElement( conversion, 'fontSize', [
  *			{
  *				model: 'big',
  *				view: {
@@ -230,18 +230,17 @@ export function modelElementIsViewElement( conversion, definition ) {
  * @param {module:engine/conversion/conversion~Conversion} conversion Conversion class instance with registered conversion dispatchers.
  * @param {String} modelAttributeKey The key of the model attribute to convert.
  * @param {Object|Array.<Object>} definition Conversion definition. It is possible to provide multiple definitions in an array.
- * @param {*} [definition.model] The value of the converted model attribute. If omitted, in model-to-view conversion,
- * the item will be treated as a default item, that will be used when no other item matches. In view-to-model conversion,
- * the model attribute value will be set to `true`.
+ * @param {*} [definition.model] The value of the converted model attribute. If omitted, when downcasted, the item will be treated
+ * as a default item, that will be used when no other item matches. When upcasted, the model attribute value will be set to `true`.
  * @param {module:engine/view/elementdefinition~ElementDefinition} definition.view Definition of a view element to convert from/to.
  * @param {module:engine/view/matcher~MatcherPattern|Array.<module:engine/view/matcher~MatcherPattern>} [definition.upcastAlso]
  * Any view element matching `upcastAlso` will also be converted to the given model element.
  */
-export function modelAttributeIsViewElement( conversion, modelAttributeKey, definition ) {
-	// Set model-to-view conversion.
-	conversion.for( 'model' ).add( mtvAttributeToElement( modelAttributeKey, definition ) );
+export function attributeToElement( conversion, modelAttributeKey, definition ) {
+	// Set downcast (model to view conversion).
+	conversion.for( 'downcast' ).add( downcastAttributeToElement( modelAttributeKey, definition ) );
 
-	// Set view-to-model conversion. In this case, we need to re-organise the definition config.
+	// Set upcast (view to model conversion). In this case, we need to re-organise the definition config.
 	if ( !Array.isArray( definition ) ) {
 		definition = [ definition ];
 	}
@@ -250,7 +249,7 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
 		const model = _getModelAttributeDefinition( modelAttributeKey, item.model );
 
 		for ( const view of _getAllViews( item ) ) {
-			conversion.for( 'view' ).add( vtmElementToAttribute( {
+			conversion.for( 'upcast' ).add( upcastElementToAttribute( {
 				view,
 				model
 			} ) );
@@ -262,11 +261,11 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
  * Defines a conversion between the model and the view where a model attribute is represented as a view attribute (and vice versa).
  * For example, `<image src='foo.jpg'></image>` is converted to `<img src='foo.jpg'></img>` (same attribute name and value).
  *
- *		modelAttributeIsViewAttribute( conversion, 'src' );
+ *		attributeToAttribute( conversion, 'src' );
  *
- *		modelAttributeIsViewAttribute( conversion, 'source', { view: 'src' } );
+ *		attributeToAttribute( conversion, 'source', { view: 'src' } );
  *
- *		modelAttributeIsViewAttribute( conversion, 'aside', {
+ *		attributeToAttribute( conversion, 'aside', {
  *			model: true,
  *			view: {
  *				name: 'img',
@@ -275,7 +274,7 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
  *			}
  *		} );
  *
- *		modelAttributeIsViewAttribute( conversion, 'styled', [
+ *		attributeToAttribute( conversion, 'styled', [
  *			{
  *				model: 'dark',
  *				view: {
@@ -292,7 +291,7 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
  *			}
  *		] );
  *
- *		modelAttributeIsViewAttribute( conversion, 'align', [
+ *		attributeToAttribute( conversion, 'align', [
  *			{
  *				model: 'right',
  *				view: {
@@ -328,8 +327,8 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
  * @param {Object|Array.<Object>} [definition] Conversion definition. It is possible to provide multiple definitions in an array.
  * If not set, the conversion helper will assume 1-to-1 conversion, that is the model attribute key and value will be same
  * as the view attribute key and value.
- * @param {*} [definition.model] The value of the converted model attribute. If omitted, in model-to-view conversion,
- * the item will be treated as a default item, that will be used when no other item matches. In view-to-model conversion,
+ * @param {*} [definition.model] The value of the converted model attribute. If omitted, when downcasting,
+ * the item will be treated as a default item, that will be used when no other item matches. When upcasting conversion,
  * the model attribute value will be set to the same value as in the view.
  * @param {Object} definition.view View attribute conversion details. Given object has required `key` property,
  * specifying view attribute key, optional `value` property, specifying view attribute value and optional `name`
@@ -338,11 +337,11 @@ export function modelAttributeIsViewElement( conversion, modelAttributeKey, defi
  * @param {module:engine/view/matcher~MatcherPattern|Array.<module:engine/view/matcher~MatcherPattern>} [definition.upcastAlso]
  * Any view element matching `upcastAlso` will also be converted to the given model element.
  */
-export function modelAttributeIsViewAttribute( conversion, modelAttributeKey, definition ) {
-	// Set model-to-view conversion.
-	conversion.for( 'model' ).add( mtvAttributeToAttribute( modelAttributeKey, definition ) );
+export function attributeToAttribute( conversion, modelAttributeKey, definition ) {
+	// Set up downcast converter.
+	conversion.for( 'downcast' ).add( downcastAttributeToAttribute( modelAttributeKey, definition ) );
 
-	// Set view-to-model conversion. In this case, we need to re-organise the definition config.
+	// Set up upcast converter. In this case, we need to re-organise the definition config.
 	if ( !definition ) {
 		definition = { view: modelAttributeKey };
 	}
@@ -355,7 +354,7 @@ export function modelAttributeIsViewAttribute( conversion, modelAttributeKey, de
 		const model = _getModelAttributeDefinition( modelAttributeKey, item.model );
 
 		for ( const view of _getAllViews( item ) ) {
-			conversion.for( 'view' ).add( vtmAttributeToAttribute( {
+			conversion.for( 'upcast' ).add( upcastAttributeToAttribute( {
 				view,
 				model
 			} ) );

+ 3 - 3
packages/ckeditor5-engine/src/conversion/view-to-model-converters.js

@@ -7,16 +7,16 @@ import Range from '../model/range';
 
 /**
  * Contains {@link module:engine/view/view view} to {@link module:engine/model/model model} converters for
- * {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher}.
+ * {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher}.
  *
- * @module engine/conversion/view-to-model-converters
+ * @module engine/conversion/upcast-converters
  */
 
 /**
  * Function factory, creates a converter that converts {@link module:engine/view/documentfragment~DocumentFragment view document fragment}
  * or all children of {@link module:engine/view/element~Element} into
  * {@link module:engine/model/documentfragment~DocumentFragment model document fragment}.
- * This is the "entry-point" converter for view to model conversion. This converter starts the conversion of all children
+ * This is the "entry-point" converter for upcast (view to model conversion). This converter starts the conversion of all children
  * of passed view document fragment. Those children {@link module:engine/view/node~Node view nodes} are then handled by other converters.
  *
  * This also a "default", last resort converter for all view elements that has not been converted by other converters.

+ 34 - 31
packages/ckeditor5-engine/src/conversion/view-to-model-helpers.js

@@ -11,7 +11,7 @@ import ModelPosition from '../model/position';
 import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
 
 /**
- * @module engine/conversion/view-to-model-helpers
+ * @module engine/conversion/upcast-helpers
  */
 
 /**
@@ -21,11 +21,11 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  *
  * Keep in mind that the element will be inserted only if it is allowed by {@link module:engine/model/schema~Schema schema} configuration.
  *
- *		elementToElement( { view: 'p', model: 'paragraph' } );
+ *		upcastElementToElement( { view: 'p', model: 'paragraph' } );
  *
- *		elementToElement( { view: 'p', model: 'paragraph' }, 'high' );
+ *		upcastElementToElement( { view: 'p', model: 'paragraph' }, 'high' );
  *
- *		elementToElement( {
+ *		upcastElementToElement( {
  *			view: {
  *				name: 'p',
  *				class: 'fancy'
@@ -33,7 +33,7 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  *			model: 'fancyParagraph'
  *		} );
  *
- *		elementToElement( {
+ *		upcastElementToElement( {
  *			view: {
  *				name: 'p',
  *				class: 'fancy'
@@ -41,7 +41,7 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  *			model: new ModelElement( 'p', { fancy: true } )
  *		} );
  *
- *		elementToElement( {
+ *		upcastElementToElement( {
  * 			view: {
  *				name: 'p',
  *				class: 'heading'
@@ -58,7 +58,7 @@ import cloneDeep from '@ckeditor/ckeditor5-utils/src/lib/lodash/cloneDeep';
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function elementToElement( config, priority = 'normal' ) {
+export function upcastElementToElement( config, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	const converter = _prepareToElementConverter( config );
@@ -79,11 +79,11 @@ export function elementToElement( config, priority = 'normal' ) {
  *
  * Keep in mind that the attribute will be set only if it is allowed by {@link module:engine/model/schema~Schema schema} configuration.
  *
- *		elementToAttribute( { view: 'strong', model: 'bold' } );
+ *		upcastElementToAttribute( { view: 'strong', model: 'bold' } );
  *
- *		elementToAttribute( { view: 'strong', model: 'bold' }, 'normal' );
+ *		upcastElementToAttribute( { view: 'strong', model: 'bold' }, 'normal' );
  *
- *		elementToAttribute( {
+ *		upcastElementToAttribute( {
  *			view: {
  *				name: 'span',
  *				class: 'bold'
@@ -91,7 +91,7 @@ export function elementToElement( config, priority = 'normal' ) {
  *			model: 'bold'
  *		} );
  *
- *		elementToAttribute( {
+ *		upcastElementToAttribute( {
  *			view: {
  *				name: 'span',
  *				class: [ 'styled', 'styled-dark' ]
@@ -102,7 +102,7 @@ export function elementToElement( config, priority = 'normal' ) {
  *			}
  *		} );
  *
- * 		elementToAttribute( {
+ * 		upcastElementToAttribute( {
  *			view: {
  *				name: 'span',
  *				style: {
@@ -136,12 +136,12 @@ export function elementToElement( config, priority = 'normal' ) {
  * @param {module:utils/priorities~PriorityString} [priority='low'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function elementToAttribute( config, priority = 'low' ) {
+export function upcastElementToAttribute( config, priority = 'low' ) {
 	config = cloneDeep( config );
 
 	_normalizeModelAttributeConfig( config );
 
-	const converter = _prepareToAttributeConverter( config, false );
+	const converter = _prepareToAttributeConverter( config, true );
 
 	const elementName = _getViewElementNameFromConfig( config );
 	const eventName = elementName ? 'element:' + elementName : 'element';
@@ -159,13 +159,13 @@ export function elementToAttribute( config, priority = 'low' ) {
  *
  * Keep in mind that the attribute will be set only if it is allowed by {@link module:engine/model/schema~Schema schema} configuration.
  *
- *		attributeToAttribute( { view: 'src', model: 'source' } );
+ *		upcastAttributeToAttribute( { view: 'src', model: 'source' } );
  *
- *		attributeToAttribute( { view: { key: 'src' }, model: 'source' } );
+ *		upcastAttributeToAttribute( { view: { key: 'src' }, model: 'source' } );
  *
- *		attributeToAttribute( { view: { key: 'src' }, model: 'source' }, 'normal' );
+ *		upcastAttributeToAttribute( { view: { key: 'src' }, model: 'source' }, 'normal' );
  *
- *		attributeToAttribute( {
+ *		upcastAttributeToAttribute( {
  *			view: {
  *				key: 'data-style',
  *				value: /[\s\S]+/
@@ -173,7 +173,7 @@ export function elementToAttribute( config, priority = 'low' ) {
  *			model: 'styled'
  *		} );
  *
- *		attributeToAttribute( {
+ *		upcastAttributeToAttribute( {
  *			view: {
  *				name: 'span',
  *				key: 'class',
@@ -185,7 +185,7 @@ export function elementToAttribute( config, priority = 'low' ) {
  *			}
  *		} );
  *
- *		attributeToAttribute( {
+ *		upcastAttributeToAttribute( {
  *			view: {
  *				key: 'class',
  *				value: /styled-[\S]+/
@@ -216,7 +216,7 @@ export function elementToAttribute( config, priority = 'low' ) {
  * @param {module:utils/priorities~PriorityString} [priority='low'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function attributeToAttribute( config, priority = 'low' ) {
+export function upcastAttributeToAttribute( config, priority = 'low' ) {
 	config = cloneDeep( config );
 
 	let viewKey = null;
@@ -227,7 +227,7 @@ export function attributeToAttribute( config, priority = 'low' ) {
 
 	_normalizeModelAttributeConfig( config, viewKey );
 
-	const converter = _prepareToAttributeConverter( config, true );
+	const converter = _prepareToAttributeConverter( config, false );
 
 	return dispatcher => {
 		dispatcher.on( 'element', converter, { priority } );
@@ -242,13 +242,16 @@ export function attributeToAttribute( config, priority = 'low' ) {
  * after the conversion is done, the marker will be available in
  * {@link module:engine/model/document~Document#markers model document markers}.
  *
- *		elementToMarker( { view: 'marker-search', model: 'search' } );
+ *		upcastElementToMarker( { view: 'marker-search', model: 'search' } );
  *
- *		elementToMarker( { view: 'marker-search', model: 'search' }, 'high' );
+ *		upcastElementToMarker( { view: 'marker-search', model: 'search' }, 'high' );
  *
- *		elementToMarker( { view: 'marker-search', model: viewElement => 'comment:' + viewElement.getAttribute( 'data-comment-id' ) } );
+ *		upcastElementToMarker( {
+ *			view: 'marker-search',
+ *			model: viewElement => 'comment:' + viewElement.getAttribute( 'data-comment-id' )
+ *		} );
  *
- *		elementToMarker( {
+ *		upcastElementToMarker( {
  *			view: {
  *				name: 'span',
  *				attribute: {
@@ -267,12 +270,12 @@ export function attributeToAttribute( config, priority = 'low' ) {
  * @param {module:utils/priorities~PriorityString} [priority='normal'] Converter priority.
  * @returns {Function} Conversion helper.
  */
-export function elementToMarker( config, priority = 'normal' ) {
+export function upcastElementToMarker( config, priority = 'normal' ) {
 	config = cloneDeep( config );
 
 	_normalizeToMarkerConfig( config );
 
-	return elementToElement( config, priority );
+	return upcastElementToElement( config, priority );
 }
 
 // Helper function for from-view-element conversion. Checks if `config.view` directly specifies converted view element's name
@@ -366,7 +369,7 @@ function _prepareToElementConverter( config ) {
 	};
 }
 
-// Helper function for view-to-model-element converter. Takes the model configuration, the converted view element
+// Helper function for upcasting-to-element converter. Takes the model configuration, the converted view element
 // and a writer instance and returns a model element instance to be inserted in the model.
 //
 // @param {String|Function|module:engine/model/element~Element} model Model conversion configuration.
@@ -500,8 +503,8 @@ function _setAttributeOn( modelRange, modelAttribute, conversionApi ) {
 	return result;
 }
 
-// Helper function for view-to-model-marker conversion. Takes the config in a format requested by `elementToMarker()`
-// function and converts it to a format that is supported by `elementToElement()` function.
+// Helper function for upcasting-to-marker conversion. Takes the config in a format requested by `upcastElementToMarker()`
+// function and converts it to a format that is supported by `upcastElementToElement()` function.
 //
 // @param {Object} config Conversion configuration.
 function _normalizeToMarkerConfig( config ) {

+ 1 - 1
packages/ckeditor5-engine/src/conversion/view-selection-to-model-converters.js

@@ -7,7 +7,7 @@
  * Contains {@link module:engine/view/selection~Selection view selection}
  * to {@link module:engine/model/selection~Selection model selection} conversion helpers.
  *
- * @module engine/conversion/view-selection-to-model-converters
+ * @module engine/conversion/upcast-selection-converters
  */
 
 import ModelSelection from '../model/selection';

+ 32 - 32
packages/ckeditor5-engine/src/conversion/viewconversiondispatcher.js

@@ -4,7 +4,7 @@
  */
 
 /**
- * @module engine/conversion/viewconversiondispatcher
+ * @module engine/conversion/upcastdispatcher
  */
 
 import ViewConsumable from './viewconsumable';
@@ -17,14 +17,14 @@ import EmitterMixin from '@ckeditor/ckeditor5-utils/src/emittermixin';
 import mix from '@ckeditor/ckeditor5-utils/src/mix';
 
 /**
- * `ViewConversionDispatcher` is a central point of {@link module:engine/view/view view} conversion, which is a process of
+ * `UpcastDispatcher` is a central point of {@link module:engine/view/view view} conversion, which is a process of
  * converting given {@link module:engine/view/documentfragment~DocumentFragment view document fragment} or
  * {@link module:engine/view/element~Element} into another structure.
  * In default application, {@link module:engine/view/view view} is converted to {@link module:engine/model/model}.
  *
  * During conversion process, for all {@link module:engine/view/node~Node view nodes} from the converted view document fragment,
- * `ViewConversionDispatcher` fires corresponding events. Special callbacks called "converters" should listen to
- * `ViewConversionDispatcher` for those events.
+ * `UpcastDispatcher` fires corresponding events. Special callbacks called "converters" should listen to
+ * `UpcastDispatcher` for those events.
  *
  * Each callback, as a first argument, is passed a special object `data` that has `viewItem`, `modelCursor` and
  * `modelRange` properties. `viewItem` property contains {@link module:engine/view/node~Node view node} or
@@ -33,15 +33,15 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
  * of conversion and is always a {@link module:engine/model/range~Range} when conversion result is correct.
  * `modelCursor` property is a {@link module:engine/model/position~Position position} on which conversion result will be inserted
  * and is a context according to {@link module:engine/model/schema~Schema schema} will be checked before the conversion.
- * See also {@link ~ViewConversionDispatcher#convert}. It is also shared by reference by all callbacks listening to given event.
+ * See also {@link ~UpcastDispatcher#convert}. It is also shared by reference by all callbacks listening to given event.
  *
- * The third parameter passed to a callback is an instance of {@link ~ViewConversionDispatcher}
+ * The third parameter passed to a callback is an instance of {@link ~UpcastDispatcher}
  * which provides additional tools for converters.
  *
- * Examples of providing callbacks for `ViewConversionDispatcher`:
+ * Examples of providing callbacks for `UpcastDispatcher`:
  *
  *		// Converter for paragraphs (<p>).
- *		viewDispatcher.on( 'element:p', ( evt, data, conversionApi ) => {
+ *		upcastDispatcher.on( 'element:p', ( evt, data, conversionApi ) => {
  *			// Create paragraph element.
  *			const paragraph = conversionApi.createElement( 'paragraph' );
  *
@@ -65,7 +65,7 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
  *		} );
  *
  *		// Converter for links (<a>).
- *		viewDispatcher.on( 'element:a', ( evt, data, conversionApi ) => {
+ *		upcastDispatcher.on( 'element:a', ( evt, data, conversionApi ) => {
  *			if ( conversionApi.consumable.consume( data.viewItem, { name: true, attributes: [ 'href' ] } ) ) {
  *				// <a> element is inline and is represented by an attribute in the model.
  *				// This is why we need to convert only children.
@@ -82,9 +82,9 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
  *		// Fire conversion.
  *		// Always take care where the converted model structure will be appended to. If this `viewDocumentFragment`
  *		// is going to be appended directly to a '$root' element, use that in `context`.
- *		viewDispatcher.convert( viewDocumentFragment, '$root' );
+ *		upcastDispatcher.convert( viewDocumentFragment, '$root' );
  *
- * Before each conversion process, `ViewConversionDispatcher` fires {@link ~ViewConversionDispatcher#event:viewCleanup}
+ * Before each conversion process, `UpcastDispatcher` fires {@link ~UpcastDispatcher#event:viewCleanup}
  * event which can be used to prepare tree view for conversion.
  *
  * @mixes module:utils/emittermixin~EmitterMixin
@@ -93,14 +93,14 @@ import mix from '@ckeditor/ckeditor5-utils/src/mix';
  * @fires text
  * @fires documentFragment
  */
-export default class ViewConversionDispatcher {
+export default class UpcastDispatcher {
 	/**
-	 * Creates a `ViewConversionDispatcher` that operates using passed API.
+	 * Creates a `UpcastDispatcher` that operates using passed API.
 	 *
-	 * @see module:engine/conversion/viewconversiondispatcher~ViewConversionApi
+	 * @see module:engine/conversion/upcastdispatcher~ViewConversionApi
 	 * @param {module:engine/model/model~Model} model Data model.
 	 * @param {Object} [conversionApi] Additional properties for interface that will be passed to events fired
-	 * by `ViewConversionDispatcher`.
+	 * by `UpcastDispatcher`.
 	 */
 	constructor( model, conversionApi = {} ) {
 		/**
@@ -140,12 +140,12 @@ export default class ViewConversionDispatcher {
 		/**
 		 * Interface passed by dispatcher to the events callbacks.
 		 *
-		 * @member {module:engine/conversion/viewconversiondispatcher~ViewConversionApi}
+		 * @member {module:engine/conversion/upcastdispatcher~ViewConversionApi}
 		 */
 		this.conversionApi = Object.assign( {}, conversionApi );
 
-		// `convertItem`, `convertChildren` and `splitToAllowedParent` are bound to this `ViewConversionDispatcher`
-		// instance and set on `conversionApi`. This way only a part of `ViewConversionDispatcher` API is exposed.
+		// `convertItem`, `convertChildren` and `splitToAllowedParent` are bound to this `UpcastDispatcher`
+		// instance and set on `conversionApi`. This way only a part of `UpcastDispatcher` API is exposed.
 		this.conversionApi.convertItem = this._convertItem.bind( this );
 		this.conversionApi.convertChildren = this._convertChildren.bind( this );
 		this.conversionApi.splitToAllowedParent = this._splitToAllowedParent.bind( this );
@@ -219,7 +219,7 @@ export default class ViewConversionDispatcher {
 
 	/**
 	 * @private
-	 * @see module:engine/conversion/viewconversiondispatcher~ViewConversionApi#convertItem
+	 * @see module:engine/conversion/upcastdispatcher~ViewConversionApi#convertItem
 	 */
 	_convertItem( viewItem, modelCursor ) {
 		const data = Object.assign( { viewItem, modelCursor, modelRange: null } );
@@ -249,7 +249,7 @@ export default class ViewConversionDispatcher {
 
 	/**
 	 * @private
-	 * @see module:engine/conversion/viewconversiondispatcher~ViewConversionApi#convertChildren
+	 * @see module:engine/conversion/upcastdispatcher~ViewConversionApi#convertChildren
 	 */
 	_convertChildren( viewItem, modelCursor ) {
 		const modelRange = new ModelRange( modelCursor );
@@ -269,7 +269,7 @@ export default class ViewConversionDispatcher {
 
 	/**
 	 * @private
-	 * @see module:engine/conversion/viewconversiondispatcher~ViewConversionApi#splitToAllowedParent
+	 * @see module:engine/conversion/upcastdispatcher~ViewConversionApi#splitToAllowedParent
 	 */
 	_splitToAllowedParent( node, modelCursor ) {
 		// Try to find allowed parent.
@@ -335,7 +335,7 @@ export default class ViewConversionDispatcher {
 	}
 
 	/**
-	 * Fired before the first conversion event, at the beginning of view to model conversion process.
+	 * Fired before the first conversion event, at the beginning of upcast (view to model conversion) process.
 	 *
 	 * @event viewCleanup
 	 * @param {module:engine/view/documentfragment~DocumentFragment|module:engine/view/element~Element}
@@ -359,7 +359,7 @@ export default class ViewConversionDispatcher {
 	 * @param {module:engine/model/range~Range} data.modelRange The current state of conversion result. Every change to
 	 * converted element should be reflected by setting or modifying this property.
 	 * @param {ViewConversionApi} conversionApi Conversion interface to be used by callback, passed in
-	 * `ViewConversionDispatcher` constructor.
+	 * `UpcastDispatcher` constructor.
 	 */
 
 	/**
@@ -377,7 +377,7 @@ export default class ViewConversionDispatcher {
 	 */
 }
 
-mix( ViewConversionDispatcher, EmitterMixin );
+mix( UpcastDispatcher, EmitterMixin );
 
 // Traverses given model item and searches elements which marks marker range. Found element is removed from
 // DocumentFragment but path of this element is stored in a Map which is then returned.
@@ -443,8 +443,8 @@ function createContextTree( contextDefinition, writer ) {
 }
 
 /**
- * Conversion interface that is registered for given {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher}
- * and is passed as one of parameters when {@link module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher dispatcher}
+ * Conversion interface that is registered for given {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher}
+ * and is passed as one of parameters when {@link module:engine/conversion/upcastdispatcher~UpcastDispatcher dispatcher}
  * fires it's events.
  *
  * @interface ViewConversionApi
@@ -458,9 +458,9 @@ function createContextTree( contextDefinition, writer ) {
  * The `modelRange` must be {@link module:engine/model/range~Range model range} or `null` (as set by default).
  *
  * @method #convertItem
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:element
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:text
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:documentFragment
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:text
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:documentFragment
  * @param {module:engine/view/item~Item} viewItem Item to convert.
  * @param {module:engine/model/position~Position} modelCursor Position of conversion.
  * @returns {Object} result Conversion result.
@@ -473,9 +473,9 @@ function createContextTree( contextDefinition, writer ) {
  * Starts conversion of all children of given item by firing appropriate events for all those children.
  *
  * @method #convertChildren
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:element
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:text
- * @fires module:engine/conversion/viewconversiondispatcher~ViewConversionDispatcher#event:documentFragment
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:element
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:text
+ * @fires module:engine/conversion/upcastdispatcher~UpcastDispatcher#event:documentFragment
  * @param {module:engine/view/item~Item} viewItem Item to convert.
  * @param {module:engine/model/position~Position} modelCursor Position of conversion.
  * @returns {Object} result Conversion result.

+ 21 - 21
packages/ckeditor5-engine/src/dev-utils/model.js

@@ -16,12 +16,12 @@ import Model from '../model/model';
 import Batch from '../model/batch';
 import ModelRange from '../model/range';
 import ModelPosition from '../model/position';
-import ModelConversionDispatcher from '../conversion/modelconversiondispatcher';
+import DowncastDispatcher from '../conversion/downcastdispatcher';
 import ModelSelection from '../model/selection';
 import ModelDocumentFragment from '../model/documentfragment';
 import DocumentSelection from '../model/documentselection';
 
-import ViewConversionDispatcher from '../conversion/viewconversiondispatcher';
+import UpcastDispatcher from '../conversion/upcastdispatcher';
 import ViewDocument from '../view/document';
 import ViewContainerElement from '../view/containerelement';
 import ViewAttributeElement from '../view/attributeelement';
@@ -32,8 +32,8 @@ import { parse as viewParse, stringify as viewStringify } from '../../src/dev-ut
 import {
 	convertRangeSelection,
 	convertCollapsedSelection,
-} from '../conversion/model-selection-to-view-converters';
-import { insertText, insertElement, wrap } from '../conversion/model-to-view-converters';
+} from '../conversion/downcast-selection-converters';
+import { insertText, insertElement, wrap } from '../conversion/downcast-converters';
 import isPlainObject from '@ckeditor/ckeditor5-utils/src/lib/lodash/isPlainObject';
 import toMap from '@ckeditor/ckeditor5-utils/src/tomap';
 
@@ -200,33 +200,33 @@ export function stringify( node, selectionOrPositionOrRange = null ) {
 	viewRoot.rootName = 'main';
 	viewDocument.roots.add( viewRoot );
 
-	// Create and setup model to view converter.
-	const modelToView = new ModelConversionDispatcher( model, { mapper, viewSelection: viewDocument.selection } );
+	// Create and setup downcast dispatcher.
+	const downcastDispatcher = new DowncastDispatcher( model, { mapper, viewSelection: viewDocument.selection } );
 
 	// Bind root elements.
 	mapper.bindElements( node.root, viewRoot );
 
-	modelToView.on( 'insert:$text', insertText() );
-	modelToView.on( 'attribute', wrap( ( value, data ) => {
+	downcastDispatcher.on( 'insert:$text', insertText() );
+	downcastDispatcher.on( 'attribute', wrap( ( value, data ) => {
 		if ( data.item instanceof ModelSelection || data.item instanceof DocumentSelection || data.item.is( 'textProxy' ) ) {
 			return new ViewAttributeElement( 'model-text-with-attributes', { [ data.attributeKey ]: stringifyAttributeValue( value ) } );
 		}
 	} ) );
-	modelToView.on( 'insert', insertElement( modelItem => {
+	downcastDispatcher.on( 'insert', insertElement( modelItem => {
 		// Stringify object types values for properly display as an output string.
 		const attributes = convertAttributes( modelItem.getAttributes(), stringifyAttributeValue );
 
 		return new ViewContainerElement( modelItem.name, attributes );
 	} ) );
-	modelToView.on( 'selection', convertRangeSelection() );
-	modelToView.on( 'selection', convertCollapsedSelection() );
+	downcastDispatcher.on( 'selection', convertRangeSelection() );
+	downcastDispatcher.on( 'selection', convertCollapsedSelection() );
 
 	// Convert model to view.
-	modelToView.convertInsert( range );
+	downcastDispatcher.convertInsert( range );
 
 	// Convert model selection to view selection.
 	if ( selection ) {
-		modelToView.convertSelection( selection );
+		downcastDispatcher.convertSelection( selection );
 	}
 
 	// Parse view to data string.
@@ -282,18 +282,18 @@ export function parse( data, schema, options = {} ) {
 		viewDocumentFragment = parsedResult;
 	}
 
-	// Setup view to model converter.
-	const viewToModel = new ViewConversionDispatcher( new Model(), { schema, mapper } );
+	// Set up upcast dispatcher.
+	const upcastDispatcher = new UpcastDispatcher( new Model(), { schema, mapper } );
 
-	viewToModel.on( 'documentFragment', convertToModelFragment() );
-	viewToModel.on( 'element:model-text-with-attributes', convertToModelText( true ) );
-	viewToModel.on( 'element', convertToModelElement() );
-	viewToModel.on( 'text', convertToModelText() );
+	upcastDispatcher.on( 'documentFragment', convertToModelFragment() );
+	upcastDispatcher.on( 'element:model-text-with-attributes', convertToModelText( true ) );
+	upcastDispatcher.on( 'element', convertToModelElement() );
+	upcastDispatcher.on( 'text', convertToModelText() );
 
-	viewToModel.isDebug = true;
+	upcastDispatcher.isDebug = true;
 
 	// Convert view to model.
-	let model = viewToModel.convert( viewDocumentFragment.root, options.context || '$root' );
+	let model = upcastDispatcher.convert( viewDocumentFragment.root, options.context || '$root' );
 
 	mapper.bindElements( model, viewDocumentFragment.root );
 

+ 3 - 3
packages/ckeditor5-engine/src/model/markercollection.js

@@ -271,9 +271,9 @@ mix( MarkerCollection, EmitterMixin );
  * markers as possible and remove them as soon as they are not needed anymore.
  *
  * Markers can be converted to view by adding appropriate converters for
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:addMarker} and
- * {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher#event:removeMarker}
- * events, or by building converters for {@link module:engine/conversion/modelconversiondispatcher~ModelConversionDispatcher}
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:addMarker} and
+ * {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher#event:removeMarker}
+ * events, or by building converters for {@link module:engine/conversion/downcastdispatcher~DowncastDispatcher}
  * using {@link module:engine/conversion/buildmodelconverter~buildModelConverter model converter builder}.
  */
 class Marker {

+ 25 - 25
packages/ckeditor5-engine/tests/controller/datacontroller.js

@@ -17,15 +17,15 @@ import { parse as parseView, stringify as stringifyView } from '../../src/dev-ut
 import count from '@ckeditor/ckeditor5-utils/src/count';
 
 import {
-	elementToElement as vtmElementToElement,
-	elementToAttribute as vtmElementToAttribute
-} from '../../src/conversion/view-to-model-helpers';
+	upcastElementToElement,
+	upcastElementToAttribute
+} from '../../src/conversion/upcast-helpers';
 
 import {
-	elementToElement as mtvElementToElement,
-	attributeToElement as mtvAttributeToElement,
-	markerToHighlight as mtvMarkerToHighlight
-} from '../../src/conversion/model-to-view-helpers';
+	downcastElementToElement,
+	downcastAttributeToElement,
+	downcastMarkerToHighlight
+} from '../../src/conversion/downcast-helpers';
 
 describe( 'DataController', () => {
 	let model, modelDocument, htmlDataProcessor, data, schema;
@@ -66,7 +66,7 @@ describe( 'DataController', () => {
 		it( 'should set paragraph', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 
-			vtmElementToElement( { view: 'p', model: 'paragraph' } )( data.viewToModel );
+			upcastElementToElement( { view: 'p', model: 'paragraph' } )( data.upcastDispatcher );
 
 			const output = data.parse( '<p>foo<b>bar</b></p>' );
 
@@ -77,7 +77,7 @@ describe( 'DataController', () => {
 		it( 'should set two paragraphs', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 
-			vtmElementToElement( { view: 'p', model: 'paragraph' } )( data.viewToModel );
+			upcastElementToElement( { view: 'p', model: 'paragraph' } )( data.upcastDispatcher );
 
 			const output = data.parse( '<p>foo</p><p>bar</p>' );
 
@@ -91,8 +91,8 @@ describe( 'DataController', () => {
 				allowAttributes: [ 'bold' ]
 			} );
 
-			vtmElementToElement( { view: 'p', model: 'paragraph' } )( data.viewToModel );
-			vtmElementToAttribute( { view: 'strong', model: 'bold' } )( data.viewToModel );
+			upcastElementToElement( { view: 'p', model: 'paragraph' } )( data.upcastDispatcher );
+			upcastElementToAttribute( { view: 'strong', model: 'bold' } )( data.upcastDispatcher );
 
 			const output = data.parse( '<p>foo<strong>bar</strong></p>' );
 
@@ -117,7 +117,7 @@ describe( 'DataController', () => {
 		beforeEach( () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 
-			vtmElementToElement( { view: 'p', model: 'paragraph' } )( data.viewToModel );
+			upcastElementToElement( { view: 'p', model: 'paragraph' } )( data.upcastDispatcher );
 		} );
 
 		it( 'should convert content of an element #1', () => {
@@ -220,7 +220,7 @@ describe( 'DataController', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			setData( model, '<paragraph>foo</paragraph>' );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>foo</p>' );
 		} );
@@ -229,7 +229,7 @@ describe( 'DataController', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			setData( model, '<paragraph></paragraph>' );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>&nbsp;</p>' );
 		} );
@@ -238,7 +238,7 @@ describe( 'DataController', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			setData( model, '<paragraph>foo</paragraph><paragraph>bar</paragraph>' );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>foo</p><p>bar</p>' );
 		} );
@@ -254,7 +254,7 @@ describe( 'DataController', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			setData( model, '<paragraph>foo<$text bold="true">bar</$text></paragraph>' );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>foobar</p>' );
 		} );
@@ -263,8 +263,8 @@ describe( 'DataController', () => {
 			schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			setData( model, '<paragraph>foo<$text bold="true">bar</$text></paragraph>' );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
-			mtvAttributeToElement( 'bold', { view: 'strong' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
+			downcastAttributeToElement( 'bold', { view: 'strong' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>foo<strong>bar</strong></p>' );
 		} );
@@ -276,8 +276,8 @@ describe( 'DataController', () => {
 			setData( model, '<paragraph>foo</paragraph>', { rootName: 'main' } );
 			setData( model, 'Bar', { rootName: 'title' } );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
-			mtvAttributeToElement( 'bold', { view: 'strong' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
+			downcastAttributeToElement( 'bold', { view: 'strong' } )( data.downcastDispatcher );
 
 			expect( data.get() ).to.equal( '<p>foo</p>' );
 			expect( data.get( 'main' ) ).to.equal( '<p>foo</p>' );
@@ -293,7 +293,7 @@ describe( 'DataController', () => {
 			schema.extend( '$block', { allowIn: 'div' } );
 			schema.extend( 'div', { allowIn: '$root' } );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 		} );
 
 		it( 'should stringify a content of an element', () => {
@@ -317,7 +317,7 @@ describe( 'DataController', () => {
 			schema.extend( '$block', { allowIn: 'div' } );
 			schema.extend( 'div', { allowIn: '$root' } );
 
-			mtvElementToElement( { model: 'paragraph', view: 'p' } )( data.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( data.downcastDispatcher );
 		} );
 
 		it( 'should convert a content of an element', () => {
@@ -338,7 +338,7 @@ describe( 'DataController', () => {
 			const modelElement = parseModel( '<div><paragraph>foobar</paragraph></div>', schema );
 			const modelRoot = model.document.getRoot();
 
-			mtvMarkerToHighlight( { model: 'marker:a', view: { class: 'a' } } )( data.modelToView );
+			downcastMarkerToHighlight( { model: 'marker:a', view: { class: 'a' } } )( data.downcastDispatcher );
 
 			model.change( writer => {
 				writer.insert( modelElement, modelRoot, 0 );
@@ -355,8 +355,8 @@ describe( 'DataController', () => {
 			const modelElement = parseModel( '<div><paragraph>foo</paragraph><paragraph>bar</paragraph></div>', schema );
 			const modelRoot = model.document.getRoot();
 
-			mtvMarkerToHighlight( { model: 'marker:a', view: { class: 'a' } } )( data.modelToView );
-			mtvMarkerToHighlight( { model: 'marker:b', view: { class: 'b' } } )( data.modelToView );
+			downcastMarkerToHighlight( { model: 'marker:a', view: { class: 'a' } } )( data.downcastDispatcher );
+			downcastMarkerToHighlight( { model: 'marker:b', view: { class: 'b' } } )( data.downcastDispatcher );
 
 			const modelP1 = modelElement.getChild( 0 );
 			const modelP2 = modelElement.getChild( 1 );

+ 11 - 11
packages/ckeditor5-engine/tests/controller/editingcontroller.js

@@ -12,9 +12,9 @@ import EditingController from '../../src/controller/editingcontroller';
 import ViewDocument from '../../src/view/document';
 
 import Mapper from '../../src/conversion/mapper';
-import ModelConversionDispatcher from '../../src/conversion/modelconversiondispatcher';
+import DowncastDispatcher from '../../src/conversion/downcastdispatcher';
 
-import { elementToElement, markerToHighlight } from '../../src/conversion/model-to-view-helpers';
+import { downcastElementToElement, downcastMarkerToHighlight } from '../../src/conversion/downcast-helpers';
 
 import Model from '../../src/model/model';
 import ModelPosition from '../../src/model/position';
@@ -41,7 +41,7 @@ describe( 'EditingController', () => {
 			expect( editing ).to.have.property( 'model' ).that.equals( model );
 			expect( editing ).to.have.property( 'view' ).that.is.instanceof( ViewDocument );
 			expect( editing ).to.have.property( 'mapper' ).that.is.instanceof( Mapper );
-			expect( editing ).to.have.property( 'modelToView' ).that.is.instanceof( ModelConversionDispatcher );
+			expect( editing ).to.have.property( 'downcastDispatcher' ).that.is.instanceof( DowncastDispatcher );
 
 			editing.destroy();
 		} );
@@ -91,9 +91,9 @@ describe( 'EditingController', () => {
 			model.schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			model.schema.register( 'div', { inheritAllFrom: '$block' } );
 
-			elementToElement( { model: 'paragraph', view: 'p' } )( editing.modelToView );
-			elementToElement( { model: 'div', view: 'div' } )( editing.modelToView );
-			markerToHighlight( { model: 'marker', view: {} } )( editing.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( editing.downcastDispatcher );
+			downcastElementToElement( { model: 'div', view: 'div' } )( editing.downcastDispatcher );
+			downcastMarkerToHighlight( { model: 'marker', view: {} } )( editing.downcastDispatcher );
 
 			// Note: The below code is highly overcomplicated due to #455.
 			model.change( writer => {
@@ -358,9 +358,9 @@ describe( 'EditingController', () => {
 			model.schema.register( 'paragraph', { inheritAllFrom: '$block' } );
 			model.schema.register( 'div', { inheritAllFrom: '$block' } );
 
-			elementToElement( { model: 'paragraph', view: 'p' } )( editing.modelToView );
-			elementToElement( { model: 'div', view: 'div' } )( editing.modelToView );
-			markerToHighlight( { model: 'marker', view: {} } )( editing.modelToView );
+			downcastElementToElement( { model: 'paragraph', view: 'p' } )( editing.downcastDispatcher );
+			downcastElementToElement( { model: 'div', view: 'div' } )( editing.downcastDispatcher );
+			downcastMarkerToHighlight( { model: 'marker', view: {} } )( editing.downcastDispatcher );
 
 			const modelData = new ModelDocumentFragment( parse(
 				'<paragraph>foo</paragraph>' +
@@ -375,7 +375,7 @@ describe( 'EditingController', () => {
 				writer.setSelection( ModelRange.createFromParentsAndOffsets( p1, 0, p1, 0 ) );
 			} );
 
-			mcd = editing.modelToView;
+			mcd = editing.downcastDispatcher;
 			sinon.spy( mcd, 'convertMarkerRemove' );
 		} );
 
@@ -571,7 +571,7 @@ describe( 'EditingController', () => {
 
 			const spy = sinon.spy();
 
-			editing.modelToView.on( 'insert:$element', spy );
+			editing.downcastDispatcher.on( 'insert:$element', spy );
 
 			editing.destroy();
 

+ 4 - 4
packages/ckeditor5-engine/tests/conversion/model-to-view-converters.js

@@ -25,11 +25,11 @@ import {
 	highlightText,
 	removeHighlight,
 	createViewElementFromHighlightDescriptor
-} from '../../src/conversion/model-to-view-converters';
+} from '../../src/conversion/downcast-converters';
 
 import EditingController from '../../src/controller/editingcontroller';
 
-describe( 'model-to-view-converters', () => {
+describe( 'downcast-converters', () => {
 	let dispatcher, modelDoc, modelRoot, viewRoot, controller, modelRootStart, model;
 
 	beforeEach( () => {
@@ -44,7 +44,7 @@ describe( 'model-to-view-converters', () => {
 		// This is a mock of attaching view root to dom root.
 		controller.view.getRoot()._name = 'div';
 
-		dispatcher = controller.modelToView;
+		dispatcher = controller.downcastDispatcher;
 
 		dispatcher.on( 'insert:paragraph', insertElement( () => new ViewContainerElement( 'p' ) ) );
 		dispatcher.on( 'attribute:class', changeAttribute() );
@@ -86,7 +86,7 @@ describe( 'model-to-view-converters', () => {
 	}
 
 	describe( 'insertText', () => {
-		it( 'should convert text insertion in model to view text', () => {
+		it( 'should downcast text', () => {
 			model.change( writer => {
 				writer.insert( new ModelText( 'foobar' ), modelRootStart );
 			} );

+ 69 - 69
packages/ckeditor5-engine/tests/conversion/model-to-view-helpers.js

@@ -4,8 +4,8 @@
  */
 
 import {
-	elementToElement, attributeToElement, attributeToAttribute, markerToElement, markerToHighlight
-} from '../../src/conversion/model-to-view-helpers';
+	downcastElementToElement, downcastAttributeToElement, downcastAttributeToAttribute, downcastMarkerToElement, downcastMarkerToHighlight
+} from '../../src/conversion/downcast-helpers';
 
 import Conversion from '../../src/conversion/conversion';
 import EditingController from '../../src/controller/editingcontroller';
@@ -19,7 +19,7 @@ import ViewUIElement from '../../src/view/uielement';
 
 import { stringify } from '../../src/dev-utils/view';
 
-describe( 'model-to-view-helpers', () => {
+describe( 'downcast-helpers', () => {
 	let conversion, model, modelRoot, viewRoot;
 
 	beforeEach( () => {
@@ -36,14 +36,14 @@ describe( 'model-to-view-helpers', () => {
 		viewRoot = controller.view.getRoot();
 
 		conversion = new Conversion();
-		conversion.register( 'model', [ controller.modelToView ] );
+		conversion.register( 'model', [ controller.downcastDispatcher ] );
 	} );
 
-	describe( 'elementToElement', () => {
+	describe( 'downcastElementToElement', () => {
 		it( 'config.view is a string', () => {
-			const helper = elementToElement( { model: 'paragraph', view: 'p' } );
+			const helper = downcastElementToElement( { model: 'paragraph', view: 'p' } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'paragraph', modelRoot, 0 );
@@ -53,10 +53,10 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = elementToElement( { model: 'paragraph', view: 'p' } );
-			const helperB = elementToElement( { model: 'paragraph', view: 'foo' }, 'high' );
+			const helperA = downcastElementToElement( { model: 'paragraph', view: 'p' } );
+			const helperB = downcastElementToElement( { model: 'paragraph', view: 'foo' }, 'high' );
 
-			conversion.for( 'model' ).add( helperA ).add( helperB );
+			conversion.for( 'downcast' ).add( helperA ).add( helperB );
 
 			model.change( writer => {
 				writer.insertElement( 'paragraph', modelRoot, 0 );
@@ -66,12 +66,12 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is an element instance', () => {
-			const helper = elementToElement( {
+			const helper = downcastElementToElement( {
 				model: 'paragraph',
 				view: new ViewContainerElement( 'p' )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'paragraph', modelRoot, 0 );
@@ -81,7 +81,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a view element definition', () => {
-			const helper = elementToElement( {
+			const helper = downcastElementToElement( {
 				model: 'fancyParagraph',
 				view: {
 					name: 'p',
@@ -89,7 +89,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'fancyParagraph', modelRoot, 0 );
@@ -99,12 +99,12 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a function', () => {
-			const helper = elementToElement( {
+			const helper = downcastElementToElement( {
 				model: 'heading',
 				view: modelElement => new ViewContainerElement( 'h' + modelElement.getAttribute( 'level' ) )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'heading', { level: 2 }, modelRoot, 0 );
@@ -114,11 +114,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 	} );
 
-	describe( 'attributeToElement', () => {
+	describe( 'downcastAttributeToElement', () => {
 		it( 'config.view is a string', () => {
-			const helper = attributeToElement( 'bold', { view: 'strong' } );
+			const helper = downcastAttributeToElement( 'bold', { view: 'strong' } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { bold: true }, modelRoot, 0 );
@@ -128,10 +128,10 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = attributeToElement( 'bold', { view: 'strong' } );
-			const helperB = attributeToElement( 'bold', { view: 'b' }, 'high' );
+			const helperA = downcastAttributeToElement( 'bold', { view: 'strong' } );
+			const helperB = downcastAttributeToElement( 'bold', { view: 'b' }, 'high' );
 
-			conversion.for( 'model' ).add( helperA ).add( helperB );
+			conversion.for( 'downcast' ).add( helperA ).add( helperB );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { bold: true }, modelRoot, 0 );
@@ -141,11 +141,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is an element instance', () => {
-			const helper = attributeToElement( 'bold', {
+			const helper = downcastAttributeToElement( 'bold', {
 				view: new ViewAttributeElement( 'strong' )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { bold: true }, modelRoot, 0 );
@@ -155,14 +155,14 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a view element definition', () => {
-			const helper = attributeToElement( 'bold', {
+			const helper = downcastAttributeToElement( 'bold', {
 				view: {
 					name: 'span',
 					class: 'bold'
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { bold: true }, modelRoot, 0 );
@@ -172,7 +172,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a view element definition, model attribute value specified', () => {
-			const helper = attributeToElement( 'styled', {
+			const helper = downcastAttributeToElement( 'styled', {
 				model: 'dark',
 				view: {
 					name: 'span',
@@ -180,7 +180,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { styled: 'dark' }, modelRoot, 0 );
@@ -196,7 +196,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'multiple config items', () => {
-			const helper = attributeToElement( 'fontSize', [
+			const helper = downcastAttributeToElement( 'fontSize', [
 				{
 					model: 'big',
 					view: {
@@ -217,7 +217,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			] );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { fontSize: 'big' }, modelRoot, 0 );
@@ -239,11 +239,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a function', () => {
-			const helper = attributeToElement( 'bold', {
+			const helper = downcastAttributeToElement( 'bold', {
 				view: attributeValue => new ViewAttributeElement( 'span', { style: 'font-weight:' + attributeValue } )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', { bold: '500' }, modelRoot, 0 );
@@ -253,15 +253,15 @@ describe( 'model-to-view-helpers', () => {
 		} );
 	} );
 
-	describe( 'attributeToAttribute', () => {
+	describe( 'downcastAttributeToAttribute', () => {
 		beforeEach( () => {
-			conversion.for( 'model' ).add( elementToElement( { model: 'image', view: 'img' } ) );
+			conversion.for( 'downcast' ).add( downcastElementToElement( { model: 'image', view: 'img' } ) );
 		} );
 
 		it( 'config not set', () => {
-			const helper = attributeToAttribute( 'src' );
+			const helper = downcastAttributeToAttribute( 'src' );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { src: 'foo.jpg' }, modelRoot, 0 );
@@ -271,9 +271,9 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a string', () => {
-			const helper = attributeToAttribute( 'source', { view: 'src' } );
+			const helper = downcastAttributeToAttribute( 'source', { view: 'src' } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { source: 'foo.jpg' }, modelRoot, 0 );
@@ -283,10 +283,10 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = attributeToAttribute( 'source', { view: 'href' } );
-			const helperB = attributeToAttribute( 'source', { view: 'src' }, 'high' );
+			const helperA = downcastAttributeToAttribute( 'source', { view: 'href' } );
+			const helperB = downcastAttributeToAttribute( 'source', { view: 'src' }, 'high' );
 
-			conversion.for( 'model' ).add( helperA ).add( helperB );
+			conversion.for( 'downcast' ).add( helperA ).add( helperB );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { source: 'foo.jpg' }, modelRoot, 0 );
@@ -296,9 +296,9 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is an object', () => {
-			const helper = attributeToAttribute( 'stylish', { view: { key: 'class', value: 'styled' } } );
+			const helper = downcastAttributeToAttribute( 'stylish', { view: { key: 'class', value: 'styled' } } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { stylish: true }, modelRoot, 0 );
@@ -308,7 +308,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is an object, model attribute value specified', () => {
-			const helper = attributeToAttribute( 'styled', {
+			const helper = downcastAttributeToAttribute( 'styled', {
 				model: 'dark',
 				view: {
 					key: 'class',
@@ -316,7 +316,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { styled: 'dark' }, modelRoot, 0 );
@@ -332,7 +332,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'multiple config items', () => {
-			const helper = attributeToAttribute( 'styled', [
+			const helper = downcastAttributeToAttribute( 'styled', [
 				{
 					model: 'dark',
 					view: {
@@ -349,7 +349,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			] );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { styled: 'dark' }, modelRoot, 0 );
@@ -371,11 +371,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a function', () => {
-			const helper = attributeToAttribute( 'styled', {
+			const helper = downcastAttributeToAttribute( 'styled', {
 				view: attributeValue => ( { key: 'class', value: 'styled-' + attributeValue } )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertElement( 'image', { styled: 'pull-out' }, modelRoot, 0 );
@@ -385,11 +385,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 	} );
 
-	describe( 'markerToElement', () => {
+	describe( 'downcastMarkerToElement', () => {
 		it( 'config.view is a string', () => {
-			const helper = markerToElement( { model: 'search', view: 'marker-search' } );
+			const helper = downcastMarkerToElement( { model: 'search', view: 'marker-search' } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -400,10 +400,10 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = markerToElement( { model: 'search', view: 'marker-search' } );
-			const helperB = markerToElement( { model: 'search', view: 'search' }, 'high' );
+			const helperA = downcastMarkerToElement( { model: 'search', view: 'marker-search' } );
+			const helperB = downcastMarkerToElement( { model: 'search', view: 'search' }, 'high' );
 
-			conversion.for( 'model' ).add( helperA ).add( helperB );
+			conversion.for( 'downcast' ).add( helperA ).add( helperB );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -414,12 +414,12 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is an element instance', () => {
-			const helper = markerToElement( {
+			const helper = downcastMarkerToElement( {
 				model: 'search',
 				view: new ViewUIElement( 'span', { 'data-marker': 'search' } )
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -430,7 +430,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a view element definition', () => {
-			const helper = markerToElement( {
+			const helper = downcastMarkerToElement( {
 				model: 'search',
 				view: {
 					name: 'span',
@@ -440,7 +440,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -451,14 +451,14 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a function', () => {
-			const helper = markerToElement( {
+			const helper = downcastMarkerToElement( {
 				model: 'search',
 				view: data => {
 					return new ViewUIElement( 'span', { 'data-marker': 'search', 'data-start': data.isOpening } );
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -469,11 +469,11 @@ describe( 'model-to-view-helpers', () => {
 		} );
 	} );
 
-	describe( 'markerToHighlight', () => {
+	describe( 'downcastMarkerToHighlight', () => {
 		it( 'config.view is a highlight descriptor', () => {
-			const helper = markerToHighlight( { model: 'comment', view: { class: 'comment' } } );
+			const helper = downcastMarkerToHighlight( { model: 'comment', view: { class: 'comment' } } );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -484,10 +484,10 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = markerToHighlight( { model: 'comment', view: { class: 'comment' } } );
-			const helperB = markerToHighlight( { model: 'comment', view: { class: 'new-comment' } }, 'high' );
+			const helperA = downcastMarkerToHighlight( { model: 'comment', view: { class: 'comment' } } );
+			const helperB = downcastMarkerToHighlight( { model: 'comment', view: { class: 'new-comment' } }, 'high' );
 
-			conversion.for( 'model' ).add( helperA ).add( helperB );
+			conversion.for( 'downcast' ).add( helperA ).add( helperB );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );
@@ -498,7 +498,7 @@ describe( 'model-to-view-helpers', () => {
 		} );
 
 		it( 'config.view is a function', () => {
-			const helper = markerToHighlight( {
+			const helper = downcastMarkerToHighlight( {
 				model: 'comment',
 				view: data => {
 					const commentType = data.markerName.split( ':' )[ 1 ];
@@ -509,7 +509,7 @@ describe( 'model-to-view-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'model' ).add( helper );
+			conversion.for( 'downcast' ).add( helper );
 
 			model.change( writer => {
 				writer.insertText( 'foo', modelRoot, 0 );

+ 5 - 5
packages/ckeditor5-engine/tests/conversion/model-selection-to-view-converters.js

@@ -15,13 +15,13 @@ import ViewUIElement from '../../src/view/uielement';
 import { mergeAttributes } from '../../src/view/writer';
 
 import Mapper from '../../src/conversion/mapper';
-import ModelConversionDispatcher from '../../src/conversion/modelconversiondispatcher';
+import DowncastDispatcher from '../../src/conversion/downcastdispatcher';
 import {
 	convertRangeSelection,
 	convertCollapsedSelection,
 	clearAttributes,
 	clearFakeSelection
-} from '../../src/conversion/model-selection-to-view-converters';
+} from '../../src/conversion/downcast-selection-converters';
 
 import {
 	insertElement,
@@ -30,13 +30,13 @@ import {
 	highlightElement,
 	highlightText,
 	removeHighlight
-} from '../../src/conversion/model-to-view-converters';
+} from '../../src/conversion/downcast-converters';
 
 import createViewRoot from '../view/_utils/createroot';
 import { stringify as stringifyView } from '../../src/dev-utils/view';
 import { setData as setModelData } from '../../src/dev-utils/model';
 
-describe( 'model-selection-to-view-converters', () => {
+describe( 'downcast-selection-converters', () => {
 	let dispatcher, mapper, model, modelDoc, modelRoot, docSelection, viewDoc, viewRoot, viewSelection, highlightDescriptor;
 
 	beforeEach( () => {
@@ -56,7 +56,7 @@ describe( 'model-selection-to-view-converters', () => {
 
 		highlightDescriptor = { class: 'marker', priority: 1 };
 
-		dispatcher = new ModelConversionDispatcher( model, { mapper, viewSelection } );
+		dispatcher = new DowncastDispatcher( model, { mapper, viewSelection } );
 
 		dispatcher.on( 'insert:$text', insertText() );
 		dispatcher.on( 'attribute:bold', wrap( new ViewAttributeElement( 'strong' ) ) );

+ 5 - 5
packages/ckeditor5-engine/tests/conversion/modelconversiondispatcher.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-import ModelConversionDispatcher from '../../src/conversion/modelconversiondispatcher';
+import DowncastDispatcher from '../../src/conversion/downcastdispatcher';
 import Model from '../../src/model/model';
 import ModelText from '../../src/model/text';
 import ModelElement from '../../src/model/element';
@@ -12,13 +12,13 @@ import ModelPosition from '../../src/model/position';
 
 import ViewContainerElement from '../../src/view/containerelement';
 
-describe( 'ModelConversionDispatcher', () => {
+describe( 'DowncastDispatcher', () => {
 	let dispatcher, doc, root, differStub, model;
 
 	beforeEach( () => {
 		model = new Model();
 		doc = model.document;
-		dispatcher = new ModelConversionDispatcher( model );
+		dispatcher = new DowncastDispatcher( model );
 		root = doc.createRoot();
 
 		differStub = {
@@ -29,9 +29,9 @@ describe( 'ModelConversionDispatcher', () => {
 	} );
 
 	describe( 'constructor()', () => {
-		it( 'should create ModelConversionDispatcher with given api', () => {
+		it( 'should create DowncastDispatcher with given api', () => {
 			const apiObj = {};
-			const dispatcher = new ModelConversionDispatcher( model, { apiObj } );
+			const dispatcher = new DowncastDispatcher( model, { apiObj } );
 
 			expect( dispatcher.conversionApi.apiObj ).to.equal( apiObj );
 		} );

+ 30 - 30
packages/ckeditor5-engine/tests/conversion/definition-conversion.js

@@ -4,13 +4,13 @@
  */
 
 import {
-	modelElementIsViewElement, modelAttributeIsViewElement, modelAttributeIsViewAttribute
-} from '../../src/conversion/definition-conversion';
+	elementToElement, attributeToElement, attributeToAttribute
+} from '../../src/conversion/two-way-helpers';
 
 import Conversion from '../../src/conversion/conversion';
-import ViewConversionDispatcher from '../../src/conversion/viewconversiondispatcher';
+import UpcastDispatcher from '../../src/conversion/upcastdispatcher';
 
-import { convertText, convertToModelFragment } from '../../src/conversion/view-to-model-converters';
+import { convertText, convertToModelFragment } from '../../src/conversion/upcast-converters';
 
 import EditingController from '../../src/controller/editingcontroller';
 
@@ -20,7 +20,7 @@ import ModelRange from '../../src/model/range';
 import { stringify as viewStringify, parse as viewParse } from '../../src/dev-utils/view';
 import { stringify as modelStringify } from '../../src/dev-utils/model';
 
-describe( 'definition-conversion', () => {
+describe( 'two-way-helpers', () => {
 	let viewDispatcher, model, schema, conversion, modelRoot, viewRoot;
 
 	beforeEach( () => {
@@ -45,19 +45,19 @@ describe( 'definition-conversion', () => {
 			inheritAllFrom: '$block'
 		} );
 
-		viewDispatcher = new ViewConversionDispatcher( model, { schema } );
+		viewDispatcher = new UpcastDispatcher( model, { schema } );
 		viewDispatcher.on( 'text', convertText() );
 		viewDispatcher.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
 		viewDispatcher.on( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );
 
 		conversion = new Conversion();
 		conversion.register( 'view', [ viewDispatcher ] );
-		conversion.register( 'model', [ controller.modelToView ] );
+		conversion.register( 'model', [ controller.downcastDispatcher ] );
 	} );
 
-	describe( 'modelElementIsViewElement', () => {
+	describe( 'elementToElement', () => {
 		it( 'config.view is a string', () => {
-			modelElementIsViewElement( conversion, { model: 'paragraph', view: 'p' } );
+			elementToElement( conversion, { model: 'paragraph', view: 'p' } );
 
 			test( '<p>Foo</p>', '<paragraph>Foo</paragraph>' );
 		} );
@@ -67,7 +67,7 @@ describe( 'definition-conversion', () => {
 				inheritAllFrom: 'paragraph'
 			} );
 
-			modelElementIsViewElement( conversion, {
+			elementToElement( conversion, {
 				model: 'fancyParagraph',
 				view: {
 					name: 'p',
@@ -79,7 +79,7 @@ describe( 'definition-conversion', () => {
 		} );
 
 		it( 'config.view is an object with upcastAlso defined', () => {
-			modelElementIsViewElement( conversion, {
+			elementToElement( conversion, {
 				model: 'paragraph',
 				view: 'p',
 				upcastAlso: [
@@ -104,7 +104,7 @@ describe( 'definition-conversion', () => {
 				inheritAllFrom: '$block'
 			} );
 
-			modelElementIsViewElement( conversion, {
+			elementToElement( conversion, {
 				model: 'heading',
 				view: 'h2',
 				upcastAlso: viewElement => {
@@ -130,7 +130,7 @@ describe( 'definition-conversion', () => {
 				}
 			} );
 
-			modelElementIsViewElement( conversion, {
+			elementToElement( conversion, {
 				model: 'paragraph',
 				view: 'p'
 			} );
@@ -143,19 +143,19 @@ describe( 'definition-conversion', () => {
 		} );
 	} );
 
-	describe( 'modelAttributeIsViewElement', () => {
+	describe( 'attributeToElement', () => {
 		beforeEach( () => {
-			modelElementIsViewElement( conversion, { model: 'paragraph', view: 'p' } );
+			elementToElement( conversion, { model: 'paragraph', view: 'p' } );
 		} );
 
 		it( 'config.view is a string', () => {
-			modelAttributeIsViewElement( conversion, 'bold', { view: 'strong' } );
+			attributeToElement( conversion, 'bold', { view: 'strong' } );
 
 			test( '<p><strong>Foo</strong> bar</p>', '<paragraph><$text bold="true">Foo</$text> bar</paragraph>' );
 		} );
 
 		it( 'config.view is an object', () => {
-			modelAttributeIsViewElement( conversion, 'bold', {
+			attributeToElement( conversion, 'bold', {
 				view: {
 					name: 'span',
 					class: 'bold'
@@ -166,7 +166,7 @@ describe( 'definition-conversion', () => {
 		} );
 
 		it( 'config.view is an object with upcastAlso defined', () => {
-			modelAttributeIsViewElement( conversion, 'bold', {
+			attributeToElement( conversion, 'bold', {
 				view: 'strong',
 				upcastAlso: [
 					'b',
@@ -234,7 +234,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			modelAttributeIsViewElement( conversion, 'styled', {
+			attributeToElement( conversion, 'styled', {
 				model: 'dark',
 				view: {
 					name: 'span',
@@ -250,7 +250,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'fontSize' ]
 			} );
 
-			modelAttributeIsViewElement( conversion, 'fontSize', [
+			attributeToElement( conversion, 'fontSize', [
 				{
 					model: 'big',
 					view: {
@@ -287,7 +287,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'fontSize' ]
 			} );
 
-			modelAttributeIsViewElement( conversion, 'fontSize', [
+			attributeToElement( conversion, 'fontSize', [
 				{
 					model: 'big',
 					view: {
@@ -380,9 +380,9 @@ describe( 'definition-conversion', () => {
 		} );
 	} );
 
-	describe( 'modelAttributeIsViewAttribute', () => {
+	describe( 'attributeToAttribute', () => {
 		beforeEach( () => {
-			modelElementIsViewElement( conversion, { model: 'image', view: 'img' } );
+			elementToElement( conversion, { model: 'image', view: 'img' } );
 
 			schema.register( 'image', {
 				inheritAllFrom: '$block',
@@ -394,7 +394,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'src' ]
 			} );
 
-			modelAttributeIsViewAttribute( conversion, 'src' );
+			attributeToAttribute( conversion, 'src' );
 
 			test( '<img src="foo.jpg"></img>', '<image src="foo.jpg"></image>' );
 		} );
@@ -404,7 +404,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'source' ]
 			} );
 
-			modelAttributeIsViewAttribute( conversion, 'source', { view: 'src' } );
+			attributeToAttribute( conversion, 'source', { view: 'src' } );
 
 			test( '<img src="foo.jpg"></img>', '<image source="foo.jpg"></image>' );
 		} );
@@ -414,7 +414,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'aside' ]
 			} );
 
-			modelAttributeIsViewAttribute( conversion, 'aside', {
+			attributeToAttribute( conversion, 'aside', {
 				model: true,
 				view: {
 					name: 'img',
@@ -423,7 +423,7 @@ describe( 'definition-conversion', () => {
 				}
 			} );
 
-			modelElementIsViewElement( conversion, { model: 'paragraph', view: 'p' } );
+			elementToElement( conversion, { model: 'paragraph', view: 'p' } );
 
 			test( '<img class="aside half-size"></img>', '<image aside="true"></image>' );
 			test( '<p class="aside half-size"></p>', '<paragraph></paragraph>', '<p></p>' );
@@ -434,7 +434,7 @@ describe( 'definition-conversion', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			modelAttributeIsViewAttribute( conversion, 'styled', [
+			attributeToAttribute( conversion, 'styled', [
 				{
 					model: 'dark',
 					view: {
@@ -456,13 +456,13 @@ describe( 'definition-conversion', () => {
 		} );
 
 		it( 'config is an array with upcastAlso defined', () => {
-			modelElementIsViewElement( conversion, { model: 'paragraph', view: 'p' } );
+			elementToElement( conversion, { model: 'paragraph', view: 'p' } );
 
 			schema.extend( 'paragraph', {
 				allowAttributes: [ 'align' ]
 			} );
 
-			modelAttributeIsViewAttribute( conversion, 'align', [
+			attributeToAttribute( conversion, 'align', [
 				{
 					model: 'right',
 					view: {

+ 4 - 4
packages/ckeditor5-engine/tests/conversion/view-to-model-converters.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-import ViewConversionDispatcher from '../../src/conversion/viewconversiondispatcher';
+import UpcastDispatcher from '../../src/conversion/upcastdispatcher';
 import ViewContainerElement from '../../src/view/containerelement';
 import ViewDocumentFragment from '../../src/view/documentfragment';
 import ViewText from '../../src/view/text';
@@ -15,9 +15,9 @@ import ModelText from '../../src/model/text';
 import ModelRange from '../../src/model/range';
 import ModelPosition from '../../src/model/position';
 
-import { convertToModelFragment, convertText } from '../../src/conversion/view-to-model-converters';
+import { convertToModelFragment, convertText } from '../../src/conversion/upcast-converters';
 
-describe( 'view-to-model-converters', () => {
+describe( 'upcast-converters', () => {
 	let dispatcher, schema, context, model;
 
 	beforeEach( () => {
@@ -29,7 +29,7 @@ describe( 'view-to-model-converters', () => {
 
 		context = [ '$root' ];
 
-		dispatcher = new ViewConversionDispatcher( model, { schema } );
+		dispatcher = new UpcastDispatcher( model, { schema } );
 	} );
 
 	describe( 'convertText()', () => {

+ 77 - 77
packages/ckeditor5-engine/tests/conversion/view-to-model-helpers.js

@@ -4,12 +4,12 @@
  */
 
 import {
-	elementToElement, elementToAttribute, attributeToAttribute, elementToMarker
-} from '../../src/conversion/view-to-model-helpers';
+	upcastElementToElement, upcastElementToAttribute, upcastAttributeToAttribute, upcastElementToMarker
+} from '../../src/conversion/upcast-helpers';
 
 import Model from '../../src/model/model';
 import Conversion from '../../src/conversion/conversion';
-import ViewConversionDispatcher from '../../src/conversion/viewconversiondispatcher';
+import UpcastDispatcher from '../../src/conversion/upcastdispatcher';
 
 import ModelElement from '../../src/model/element';
 
@@ -19,10 +19,10 @@ import ViewContainerElement from '../../src/view/containerelement';
 import ViewAttributeElement from '../../src/view/attributeelement';
 import ViewText from '../../src/view/text';
 
-import { convertText, convertToModelFragment } from '../../src/conversion/view-to-model-converters';
+import { convertText, convertToModelFragment } from '../../src/conversion/upcast-converters';
 import { stringify } from '../../src/dev-utils/model';
 
-describe( 'view-to-model-helpers', () => {
+describe( 'upcast-helpers', () => {
 	let dispatcher, model, schema, conversion;
 
 	beforeEach( () => {
@@ -46,7 +46,7 @@ describe( 'view-to-model-helpers', () => {
 			allowAttributes: [ 'bold' ]
 		} );
 
-		dispatcher = new ViewConversionDispatcher( model, { schema } );
+		dispatcher = new UpcastDispatcher( model, { schema } );
 		dispatcher.on( 'text', convertText() );
 		dispatcher.on( 'element', convertToModelFragment(), { priority: 'lowest' } );
 		dispatcher.on( 'documentFragment', convertToModelFragment(), { priority: 'lowest' } );
@@ -55,11 +55,11 @@ describe( 'view-to-model-helpers', () => {
 		conversion.register( 'view', [ dispatcher ] );
 	} );
 
-	describe( 'elementToElement', () => {
+	describe( 'upcastElementToElement', () => {
 		it( 'config.view is a string', () => {
-			const helper = elementToElement( { view: 'p', model: 'paragraph' } );
+			const helper = upcastElementToElement( { view: 'p', model: 'paragraph' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult( new ViewContainerElement( 'p' ), '<paragraph></paragraph>' );
 		} );
@@ -69,10 +69,10 @@ describe( 'view-to-model-helpers', () => {
 				inheritAllFrom: '$block'
 			} );
 
-			const helperA = elementToElement( { view: 'p', model: 'p' } );
-			const helperB = elementToElement( { view: 'p', model: 'paragraph' }, 'high' );
+			const helperA = upcastElementToElement( { view: 'p', model: 'p' } );
+			const helperB = upcastElementToElement( { view: 'p', model: 'paragraph' }, 'high' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult( new ViewContainerElement( 'p' ), '<paragraph></paragraph>' );
 		} );
@@ -82,8 +82,8 @@ describe( 'view-to-model-helpers', () => {
 				inheritAllFrom: '$block'
 			} );
 
-			const helperParagraph = elementToElement( { view: 'p', model: 'paragraph' } );
-			const helperFancy = elementToElement( {
+			const helperParagraph = upcastElementToElement( { view: 'p', model: 'paragraph' } );
+			const helperFancy = upcastElementToElement( {
 				view: {
 					name: 'p',
 					class: 'fancy'
@@ -91,7 +91,7 @@ describe( 'view-to-model-helpers', () => {
 				model: 'fancyParagraph'
 			}, 'high' );
 
-			conversion.for( 'view' ).add( helperParagraph ).add( helperFancy );
+			conversion.for( 'upcast' ).add( helperParagraph ).add( helperFancy );
 
 			expectResult( new ViewContainerElement( 'p' ), '<paragraph></paragraph>' );
 			expectResult( new ViewContainerElement( 'p', { class: 'fancy' } ), '<fancyParagraph></fancyParagraph>' );
@@ -102,7 +102,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'fancy' ]
 			} );
 
-			const helper = elementToElement( {
+			const helper = upcastElementToElement( {
 				view: {
 					name: 'p',
 					class: 'fancy'
@@ -110,7 +110,7 @@ describe( 'view-to-model-helpers', () => {
 				model: new ModelElement( 'paragraph', { fancy: true } )
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult( new ViewContainerElement( 'p', { class: 'fancy' } ), '<paragraph fancy="true"></paragraph>' );
 		} );
@@ -121,7 +121,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'level' ]
 			} );
 
-			const helper = elementToElement( {
+			const helper = upcastElementToElement( {
 				view: {
 					name: 'p',
 					class: 'heading'
@@ -129,23 +129,23 @@ describe( 'view-to-model-helpers', () => {
 				model: viewElement => new ModelElement( 'heading', { level: viewElement.getAttribute( 'data-level' ) } )
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult( new ViewContainerElement( 'p', { class: 'heading', 'data-level': 2 } ), '<heading level="2"></heading>' );
 		} );
 
 		it( 'should fire conversion of the element children', () => {
-			const helper = elementToElement( { view: 'p', model: 'paragraph' } );
+			const helper = upcastElementToElement( { view: 'p', model: 'paragraph' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult( new ViewContainerElement( 'p', null, new ViewText( 'foo' ) ), '<paragraph>foo</paragraph>' );
 		} );
 
 		it( 'should not insert a model element if it is not allowed by schema', () => {
-			const helper = elementToElement( { view: 'h2', model: 'heading' } );
+			const helper = upcastElementToElement( { view: 'h2', model: 'heading' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult( new ViewContainerElement( 'h2' ), '' );
 		} );
@@ -155,10 +155,10 @@ describe( 'view-to-model-helpers', () => {
 				inheritAllFrom: '$block'
 			} );
 
-			const helperParagraph = elementToElement( { view: 'p', model: 'paragraph' } );
-			const helperHeading = elementToElement( { view: 'h2', model: 'heading' } );
+			const helperParagraph = upcastElementToElement( { view: 'p', model: 'paragraph' } );
+			const helperHeading = upcastElementToElement( { view: 'h2', model: 'heading' } );
 
-			conversion.for( 'view' ).add( helperParagraph ).add( helperHeading );
+			conversion.for( 'upcast' ).add( helperParagraph ).add( helperHeading );
 
 			expectResult(
 				new ViewContainerElement( 'p', null, [
@@ -171,20 +171,20 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'should not do anything if returned model element is null', () => {
-			const helperA = elementToElement( { view: 'p', model: 'paragraph' } );
-			const helperB = elementToElement( { view: 'p', model: () => null }, 'high' );
+			const helperA = upcastElementToElement( { view: 'p', model: 'paragraph' } );
+			const helperB = upcastElementToElement( { view: 'p', model: () => null }, 'high' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult( new ViewContainerElement( 'p' ), '<paragraph></paragraph>' );
 		} );
 	} );
 
-	describe( 'elementToAttribute', () => {
+	describe( 'upcastElementToAttribute', () => {
 		it( 'config.view is string', () => {
-			const helper = elementToAttribute( { view: 'strong', model: 'bold' } );
+			const helper = upcastElementToAttribute( { view: 'strong', model: 'bold' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'strong', null, new ViewText( 'foo' ) ),
@@ -193,10 +193,10 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = elementToAttribute( { view: 'strong', model: 'strong' } );
-			const helperB = elementToAttribute( { view: 'strong', model: 'bold' }, 'high' );
+			const helperA = upcastElementToAttribute( { view: 'strong', model: 'strong' } );
+			const helperB = upcastElementToAttribute( { view: 'strong', model: 'bold' }, 'high' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult(
 				new ViewAttributeElement( 'strong', null, new ViewText( 'foo' ) ),
@@ -205,7 +205,7 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'config.view is an object', () => {
-			const helper = elementToAttribute( {
+			const helper = upcastElementToAttribute( {
 				view: {
 					name: 'span',
 					class: 'bold'
@@ -213,7 +213,7 @@ describe( 'view-to-model-helpers', () => {
 				model: 'bold'
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'span', { class: 'bold' }, new ViewText( 'foo' ) ),
@@ -226,7 +226,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			const helper = elementToAttribute( {
+			const helper = upcastElementToAttribute( {
 				view: {
 					name: 'span',
 					class: [ 'styled', 'styled-dark' ]
@@ -237,7 +237,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'span', { class: 'styled styled-dark' }, new ViewText( 'foo' ) ),
@@ -250,7 +250,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'fontSize' ]
 			} );
 
-			const helper = elementToAttribute( {
+			const helper = upcastElementToAttribute( {
 				view: {
 					name: 'span',
 					style: {
@@ -274,7 +274,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'span', { style: 'font-size:9px' }, new ViewText( 'foo' ) ),
@@ -293,9 +293,9 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'should not set an attribute if it is not allowed by schema', () => {
-			const helper = elementToAttribute( { view: 'em', model: 'italic' } );
+			const helper = upcastElementToAttribute( { view: 'em', model: 'italic' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'em', null, new ViewText( 'foo' ) ),
@@ -304,8 +304,8 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'should not do anything if returned model attribute is null', () => {
-			const helperA = elementToAttribute( { view: 'strong', model: 'bold' } );
-			const helperB = elementToAttribute( {
+			const helperA = upcastElementToAttribute( { view: 'strong', model: 'bold' } );
+			const helperB = upcastElementToAttribute( {
 				view: 'strong',
 				model: {
 					key: 'bold',
@@ -313,7 +313,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			}, 'high' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult(
 				new ViewAttributeElement( 'strong', null, new ViewText( 'foo' ) ),
@@ -322,9 +322,9 @@ describe( 'view-to-model-helpers', () => {
 		} );
 	} );
 
-	describe( 'attributeToAttribute', () => {
+	describe( 'upcastAttributeToAttribute', () => {
 		beforeEach( () => {
-			conversion.for( 'view' ).add( elementToElement( { view: 'img', model: 'image' } ) );
+			conversion.for( 'upcast' ).add( upcastElementToElement( { view: 'img', model: 'image' } ) );
 
 			schema.register( 'image', {
 				inheritAllFrom: '$block'
@@ -336,9 +336,9 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'source' ]
 			} );
 
-			const helper = attributeToAttribute( { view: 'src', model: 'source' } );
+			const helper = upcastAttributeToAttribute( { view: 'src', model: 'source' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { src: 'foo.jpg' } ),
@@ -351,9 +351,9 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'source' ]
 			} );
 
-			const helper = attributeToAttribute( { view: { key: 'src' }, model: 'source' } );
+			const helper = upcastAttributeToAttribute( { view: { key: 'src' }, model: 'source' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { src: 'foo.jpg' } ),
@@ -366,10 +366,10 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'src', 'source' ]
 			} );
 
-			const helperA = attributeToAttribute( { view: { key: 'src' }, model: 'src' } );
-			const helperB = attributeToAttribute( { view: { key: 'src' }, model: 'source' }, 'normal' );
+			const helperA = upcastAttributeToAttribute( { view: { key: 'src' }, model: 'src' } );
+			const helperB = upcastAttributeToAttribute( { view: { key: 'src' }, model: 'source' }, 'normal' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { src: 'foo.jpg' } ),
@@ -382,7 +382,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			const helper = attributeToAttribute( {
+			const helper = upcastAttributeToAttribute( {
 				view: {
 					key: 'data-style',
 					value: /[\s\S]*/
@@ -390,7 +390,7 @@ describe( 'view-to-model-helpers', () => {
 				model: 'styled'
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { 'data-style': 'dark' } ),
@@ -403,7 +403,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			const helper = attributeToAttribute( {
+			const helper = upcastAttributeToAttribute( {
 				view: {
 					name: 'img',
 					key: 'class',
@@ -415,9 +415,9 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'view' )
+			conversion.for( 'upcast' )
 				.add( helper )
-				.add( elementToElement( { view: 'p', model: 'paragraph' } ) );
+				.add( upcastElementToElement( { view: 'p', model: 'paragraph' } ) );
 
 			expectResult(
 				new ViewContainerElement( 'img', { class: 'styled-dark' } ),
@@ -440,7 +440,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			const helper = attributeToAttribute( {
+			const helper = upcastAttributeToAttribute( {
 				view: {
 					key: 'class',
 					value: /styled-[\S]+/
@@ -456,7 +456,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { 'class': 'styled-dark' } ),
@@ -465,9 +465,9 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'should not set an attribute if it is not allowed by schema', () => {
-			const helper = attributeToAttribute( { view: 'src', model: 'source' } );
+			const helper = upcastAttributeToAttribute( { view: 'src', model: 'source' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { src: 'foo.jpg' } ),
@@ -480,7 +480,7 @@ describe( 'view-to-model-helpers', () => {
 				allowAttributes: [ 'styled' ]
 			} );
 
-			const helperA = attributeToAttribute( {
+			const helperA = upcastAttributeToAttribute( {
 				view: {
 					key: 'class',
 					value: 'styled'
@@ -491,7 +491,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			const helperB = attributeToAttribute( {
+			const helperB = upcastAttributeToAttribute( {
 				view: {
 					key: 'class',
 					value: 'styled'
@@ -502,7 +502,7 @@ describe( 'view-to-model-helpers', () => {
 				}
 			} );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			expectResult(
 				new ViewAttributeElement( 'img', { class: 'styled' } ),
@@ -511,11 +511,11 @@ describe( 'view-to-model-helpers', () => {
 		} );
 	} );
 
-	describe( 'elementToMarker', () => {
+	describe( 'upcastElementToMarker', () => {
 		it( 'config.view is a string', () => {
-			const helper = elementToMarker( { view: 'marker-search', model: 'search' } );
+			const helper = upcastElementToMarker( { view: 'marker-search', model: 'search' } );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			const frag = new ViewDocumentFragment( [
 				new ViewText( 'fo' ),
@@ -531,10 +531,10 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'can be overwritten using priority', () => {
-			const helperA = elementToMarker( { view: 'marker-search', model: 'search-result' } );
-			const helperB = elementToMarker( { view: 'marker-search', model: 'search' }, 'high' );
+			const helperA = upcastElementToMarker( { view: 'marker-search', model: 'search-result' } );
+			const helperB = upcastElementToMarker( { view: 'marker-search', model: 'search' }, 'high' );
 
-			conversion.for( 'view' ).add( helperA ).add( helperB );
+			conversion.for( 'upcast' ).add( helperA ).add( helperB );
 
 			const frag = new ViewDocumentFragment( [
 				new ViewText( 'fo' ),
@@ -550,7 +550,7 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'config.view is an object', () => {
-			const helper = elementToMarker( {
+			const helper = upcastElementToMarker( {
 				view: {
 					name: 'span',
 					'data-marker': 'search'
@@ -558,7 +558,7 @@ describe( 'view-to-model-helpers', () => {
 				model: 'search'
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			const frag = new ViewDocumentFragment( [
 				new ViewText( 'f' ),
@@ -574,12 +574,12 @@ describe( 'view-to-model-helpers', () => {
 		} );
 
 		it( 'config.model is a function', () => {
-			const helper = elementToMarker( {
+			const helper = upcastElementToMarker( {
 				view: 'comment',
 				model: viewElement => 'comment:' + viewElement.getAttribute( 'data-comment-id' )
 			} );
 
-			conversion.for( 'view' ).add( helper );
+			conversion.for( 'upcast' ).add( helper );
 
 			const frag = new ViewDocumentFragment( [
 				new ViewText( 'foo' ),

+ 1 - 1
packages/ckeditor5-engine/tests/conversion/view-selection-to-model-converters.js

@@ -11,7 +11,7 @@ import createViewRoot from '../view/_utils/createroot';
 import Model from '../../src/model/model';
 
 import Mapper from '../../src/conversion/mapper';
-import { convertSelectionChange } from '../../src/conversion/view-selection-to-model-converters';
+import { convertSelectionChange } from '../../src/conversion/upcast-selection-converters';
 
 import { setData as modelSetData, getData as modelGetData } from '../../src/dev-utils/model';
 import { setData as viewSetData } from '../../src/dev-utils/view';

+ 8 - 8
packages/ckeditor5-engine/tests/conversion/viewconversiondispatcher.js

@@ -3,7 +3,7 @@
  * For licensing, see LICENSE.md.
  */
 
-import ViewConversionDispatcher from '../../src/conversion/viewconversiondispatcher';
+import UpcastDispatcher from '../../src/conversion/upcastdispatcher';
 import ViewContainerElement from '../../src/view/containerelement';
 import ViewDocumentFragment from '../../src/view/documentfragment';
 import ViewText from '../../src/view/text';
@@ -20,7 +20,7 @@ import ModelWriter from '../../src/model/writer';
 import first from '@ckeditor/ckeditor5-utils/src/first';
 import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror';
 
-describe( 'ViewConversionDispatcher', () => {
+describe( 'UpcastDispatcher', () => {
 	let model;
 
 	beforeEach( () => {
@@ -28,9 +28,9 @@ describe( 'ViewConversionDispatcher', () => {
 	} );
 
 	describe( 'constructor()', () => {
-		it( 'should create ViewConversionDispatcher with passed api', () => {
+		it( 'should create UpcastDispatcher with passed api', () => {
 			const apiObj = {};
-			const dispatcher = new ViewConversionDispatcher( model, { apiObj } );
+			const dispatcher = new UpcastDispatcher( model, { apiObj } );
 
 			expect( dispatcher.conversionApi.apiObj ).to.equal( apiObj );
 			expect( dispatcher.conversionApi ).to.have.property( 'convertItem' ).that.is.instanceof( Function );
@@ -39,7 +39,7 @@ describe( 'ViewConversionDispatcher', () => {
 		} );
 
 		it( 'should have properties', () => {
-			const dispatcher = new ViewConversionDispatcher( model );
+			const dispatcher = new UpcastDispatcher( model );
 
 			expect( dispatcher._removeIfEmpty ).to.instanceof( Set );
 		} );
@@ -49,7 +49,7 @@ describe( 'ViewConversionDispatcher', () => {
 		let dispatcher;
 
 		beforeEach( () => {
-			dispatcher = new ViewConversionDispatcher( model );
+			dispatcher = new UpcastDispatcher( model );
 		} );
 
 		it( 'should create api for current conversion process', () => {
@@ -335,7 +335,7 @@ describe( 'ViewConversionDispatcher', () => {
 		} );
 
 		it( 'should convert according to given context', () => {
-			dispatcher = new ViewConversionDispatcher( model, { schema: model.schema } );
+			dispatcher = new UpcastDispatcher( model, { schema: model.schema } );
 
 			const spy = sinon.spy();
 			const viewElement = new ViewContainerElement( 'third' );
@@ -397,7 +397,7 @@ describe( 'ViewConversionDispatcher', () => {
 			// Put nodes to documentFragment, this will mock root element and makes possible to create range on them.
 			rootMock = new ModelDocumentFragment( [ modelP, modelText ] );
 
-			dispatcher = new ViewConversionDispatcher( model, { schema: model.schema } );
+			dispatcher = new UpcastDispatcher( model, { schema: model.schema } );
 
 			dispatcher.on( 'element:p', ( evt, data ) => {
 				spyP();

+ 10 - 10
packages/ckeditor5-engine/tests/manual/highlight.js

@@ -10,13 +10,13 @@ import ViewContainerElement from '../../src/view/containerelement';
 import ViewText from '../../src/view/text';
 
 import {
-	elementToElement as vtmElementToElement,
-} from '../../src/conversion/view-to-model-helpers';
+	upcastElementToElement,
+} from '../../src/conversion/upcast-helpers';
 
 import {
-	elementToElement as mtvElementToElement,
-	markerToHighlight as mtvMarkerToHighlight
-} from '../../src/conversion/model-to-view-helpers';
+	downcastElementToElement,
+	downcastMarkerToHighlight
+} from '../../src/conversion/downcast-helpers';
 
 import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
 import Enter from '@ckeditor/ckeditor5-enter/src/enter';
@@ -48,19 +48,19 @@ class FancyWidget extends Plugin {
 		} );
 		schema.extend( 'fancywidget', { allowIn: '$root' } );
 
-		mtvElementToElement( {
+		downcastElementToElement( {
 			model: 'fancywidget',
 			view: () => {
 				const widgetElement = new ViewContainerElement( 'figure', { class: 'fancy-widget' }, new ViewText( 'widget' ) );
 
 				return toWidget( widgetElement );
 			}
-		} )( data.modelToView );
+		} )( data.downcastDispatcher );
 
-		vtmElementToElement( {
+		upcastElementToElement( {
 			view: 'figure',
 			model: 'fancywidget'
-		} )( data.viewToModel );
+		} )( data.upcastDispatcher );
 	}
 }
 
@@ -71,7 +71,7 @@ ClassicEditor.create( global.document.querySelector( '#editor' ), {
 	.then( editor => {
 		window.editor = editor;
 
-		mtvMarkerToHighlight( {
+		downcastMarkerToHighlight( {
 			model: 'marker',
 			view: data => ( {
 				class: 'highlight-' + data.markerName.split( ':' )[ 1 ]

+ 9 - 5
packages/ckeditor5-engine/tests/manual/markers.js

@@ -15,7 +15,10 @@ import List from '@ckeditor/ckeditor5-list/src/list';
 import Heading from '@ckeditor/ckeditor5-heading/src/heading';
 import Undo from '@ckeditor/ckeditor5-undo/src/undo';
 
-import buildModelConverter from '../../src/conversion/buildmodelconverter';
+import {
+	downcastMarkerToHighlight
+} from '../../src/conversion/downcast-helpers';
+
 import Position from '../../src/model/position';
 import Range from '../../src/model/range';
 
@@ -32,16 +35,17 @@ ClassicEditor
 		window.editor = editor;
 		model = editor.model;
 
-		buildModelConverter().for( editor.editing.modelToView )
-			.fromMarker( 'highlight' )
-			.toHighlight( data => {
+		downcastMarkerToHighlight( {
+			model: 'highlight',
+			view: data => {
 				const color = data.markerName.split( ':' )[ 1 ];
 
 				return {
 					class: 'h-' + color,
 					priority: 1
 				};
-			} );
+			}
+		} );
 
 		window.document.getElementById( 'add-yellow' ).addEventListener( 'mousedown', e => {
 			e.preventDefault();

+ 8 - 8
packages/ckeditor5-engine/tests/manual/nestededitable.js

@@ -6,12 +6,12 @@
 /* global console */
 
 import {
-	elementToElement as vtmElementToElement
-} from '../../src/conversion/view-to-model-helpers';
+	upcastElementToElement
+} from '../../src/conversion/upcast-helpers';
 
 import {
-	elementToElement as mtvElementToElement
-} from '../../src/conversion/model-to-view-helpers';
+	downcastElementToElement
+} from '../../src/conversion/downcast-helpers';
 
 import ViewEditableElement from '../../src/view/editableelement';
 import { getData } from '../../src/dev-utils/model';
@@ -43,7 +43,7 @@ class NestedEditable extends Plugin {
 			allowIn: [ 'figure', 'figcaption' ]
 		} );
 
-		editor.conversion.for( 'model' ).add( mtvElementToElement( {
+		editor.conversion.for( 'downcast' ).add( downcastElementToElement( {
 			model: 'figure',
 			view: {
 				name: 'figure',
@@ -53,12 +53,12 @@ class NestedEditable extends Plugin {
 			}
 		} ) );
 
-		editor.conversion.for( 'view' ).add( vtmElementToElement( {
+		editor.conversion.for( 'upcast' ).add( upcastElementToElement( {
 			model: 'figure',
 			view: 'figure'
 		} ) );
 
-		editor.conversion.for( 'model' ).add( mtvElementToElement( {
+		editor.conversion.for( 'downcast' ).add( downcastElementToElement( {
 			model: 'figcaption',
 			view: () => {
 				const element = new ViewEditableElement( 'figcaption', { contenteditable: 'true' } );
@@ -76,7 +76,7 @@ class NestedEditable extends Plugin {
 			}
 		} ) );
 
-		editor.conversion.for( 'view' ).add( vtmElementToElement( {
+		editor.conversion.for( 'upcast' ).add( upcastElementToElement( {
 			model: 'figcaption',
 			view: 'figcaption'
 		} ) );

+ 6 - 7
packages/ckeditor5-engine/tests/manual/tickets/475/1.js

@@ -12,12 +12,12 @@ import Range from '../../../../src/model/range';
 import LivePosition from '../../../../src/model/liveposition';
 
 import {
-	elementToAttribute as vtmElementToAttribute
-} from '../../../../src/conversion/view-to-model-helpers';
+	upcastElementToAttribute
+} from '../../../../src/conversion/upcast-helpers';
 
 import {
-	attributeToElement as mtvAttributeToElement,
-} from '../../../../src/conversion/model-to-view-helpers';
+	downcastAttributeToElement,
+} from '../../../../src/conversion/downcast-helpers';
 
 import AttributeElement from '../../../../src/view/attributeelement';
 
@@ -33,12 +33,11 @@ class Link extends Plugin {
 		// Allow bold attribute on all inline nodes.
 		editor.model.schema.extend( '$text', { allowAttributes: 'link' } );
 
-		editor.conversion.for( 'model' ).add( mtvAttributeToElement( {
-			model: 'link',
+		editor.conversion.for( 'downcast' ).add( downcastAttributeToElement( 'link', {
 			view: attributeValue => new AttributeElement( 'a', { href: attributeValue } )
 		} ) );
 
-		editor.conversion.for( 'view' ).add( vtmElementToAttribute( {
+		editor.conversion.for( 'upcast' ).add( upcastElementToAttribute( {
 			view: 'a',
 			model: {
 				key: 'link',

+ 6 - 6
packages/ckeditor5-engine/tests/tickets/699.js

@@ -9,12 +9,12 @@ import ClassicTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/classictest
 import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
 
 import {
-	elementToElement as vtmElementToElement
-} from '../../src/conversion/view-to-model-helpers';
+	upcastElementToElement
+} from '../../src/conversion/upcast-helpers';
 
 import {
-	elementToElement as mtvElementToElement
-} from '../../src/conversion/model-to-view-helpers';
+	downcastElementToElement
+} from '../../src/conversion/downcast-helpers';
 
 import { getData as getModelData } from '../../src/dev-utils/model';
 import { getData as getViewData } from '../../src/dev-utils/view';
@@ -54,12 +54,12 @@ function WidgetPlugin( editor ) {
 	} );
 	schema.extend( 'widget', { allowIn: '$root' } );
 
-	editor.conversion.for( 'model' ).add( mtvElementToElement( {
+	editor.conversion.for( 'downcast' ).add( downcastElementToElement( {
 		model: 'widget',
 		view: 'widget'
 	} ) );
 
-	editor.conversion.for( 'view' ).add( vtmElementToElement( {
+	editor.conversion.for( 'upcast' ).add( upcastElementToElement( {
 		model: 'widget',
 		view: 'widget'
 	} ) );

+ 1 - 1
packages/ckeditor5-engine/tests/view/manual/uielement.js

@@ -51,7 +51,7 @@ class UIElementTestPlugin extends Plugin {
 		const editing = editor.editing;
 
 		// Add some UIElement to each paragraph.
-		editing.modelToView.on( 'insert:paragraph', ( evt, data, consumable, conversionApi ) => {
+		editing.downcastDispatcher.on( 'insert:paragraph', ( evt, data, consumable, conversionApi ) => {
 			const viewP = conversionApi.mapper.toViewElement( data.item );
 			viewP.appendChildren( createEndingUIElement() );
 		}, { priority: 'lowest' } );