8
0

viewconversiondispatcher.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.
  3. * For licensing, see LICENSE.md.
  4. */
  5. 'use strict';
  6. import Consumable from './viewconsumable.js';
  7. import ConversionController from './viewconversioncontroller.js';
  8. import EmitterMixin from '../../utils/emittermixin.js';
  9. import utils from '../../utils/utils.js';
  10. /**
  11. *
  12. * coversionDispatcher.on( 'element:p', ( data, controller ) => {
  13. * const paragraph = new ModelElement( 'paragraph' );
  14. * const schemaQuery = {
  15. * name: 'paragraph',
  16. * inside: data.context
  17. * };
  18. *
  19. * if ( controller.schema.checkQuery( schemaQuery ) ) {
  20. * if ( !controller.consumable.consume( data.input, { name: true } ) ) {
  21. * const context = data.context.concat( paragraph );
  22. * const children = controller.convertToFragment( data.input, context );
  23. * paragraph.appendChildren( children );
  24. * data.output = paragraph;
  25. * }
  26. * }
  27. * } );
  28. *
  29. * coversionDispatcher.on( 'element:a', ( data, controller ) => {
  30. * if ( controller.consumable.consume( data.input, { name: true, attributes: [ 'href' ] } ) ) {
  31. * for ( let item of Range.createFrom( data.output ) ) {
  32. * const schemaQuery = {
  33. * name: item.name || '$text',
  34. * attribute: 'link',
  35. * inside: data.context
  36. * };
  37. * if ( controller.schema.checkQuery( schemaQuery ) ) {
  38. * item.setAttribute( 'link', data.input.getAttribute( 'href' ) );
  39. * }
  40. * }
  41. * }
  42. * }
  43. */
  44. export default class ViewConversionDispatcher {
  45. convert( viewDocumentFragment ) {
  46. const consumable = Consumable.createFrom( viewDocumentFragment );
  47. const conversionContext = new ConversionController( this, consumable );
  48. return conversionContext.convert( viewDocumentFragment );
  49. }
  50. }
  51. utils.mix( ViewConversionDispatcher, EmitterMixin );