@ckeditor/ckeditor5-engine
Version:
The editing engine of CKEditor 5 – the best browser-based rich text editor.
63 lines (62 loc) • 3.19 kB
TypeScript
/**
* @license Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module engine/dataprocessor/dataprocessor
*/
import { type ViewDocumentFragment } from '../view/documentfragment.js';
import type { MatcherPattern } from '../view/matcher.js';
/**
* The data processor interface. It should be implemented by actual data processors.
*
* Each data processor implements a certain format of the data. For example, {@glink features/markdown Markdown data processor}
* will convert the data (a Markdown string) to a {@link module:engine/view/documentfragment~ViewDocumentFragment document fragment}
* and back.
*
* **Note:** While the CKEditor 5 architecture supports changing the data format, in most scenarios we do recommend sticking to
* the default format which is HTML (supported by the {@link module:engine/dataprocessor/htmldataprocessor~HtmlDataProcessor}).
* HTML remains [the best standard for rich-text data](https://medium.com/content-uneditable/a-standard-for-rich-text-data-4b3a507af552).
*
* And please do remember – using Markdown [does not automatically make your
* application/website secure](https://github.com/ckeditor/ckeditor5-markdown-gfm/issues/16#issuecomment-375752994).
*/
export interface DataProcessor {
/**
* Converts a {@link module:engine/view/documentfragment~ViewDocumentFragment document fragment} to data.
*
* @param viewFragment The document fragment to be processed.
*/
toData(viewFragment: ViewDocumentFragment): string;
/**
* Converts the data to a {@link module:engine/view/documentfragment~ViewDocumentFragment document fragment}.
*
* @param data The data to be processed.
*/
toView(data: string): ViewDocumentFragment;
/**
* Registers a {@link module:engine/view/matcher~MatcherPattern} for view elements whose content should be treated as raw data
* and its content should be converted to a
* {@link module:engine/view/element~ViewElement#getCustomProperty custom property of a view element} called `"$rawContent"` while
* converting {@link #toView to view}.
*
* @param pattern Pattern matching all view elements whose content should be treated as plain text.
*/
registerRawContentMatcher(pattern: MatcherPattern): void;
/**
* If the processor is set to use marked fillers, it will insert ` ` fillers wrapped in `<span>` elements
* (`<span data-cke-filler="true"> </span>`) instead of regular ` ` characters.
*
* This mode allows for more precise handling of block fillers (so they do not leak into the editor content) but bloats the
* editor data with additional markup.
*
* This mode may be required by some features and will be turned on by them automatically.
*
* @param type Whether to use the default or marked ` ` block fillers.
*/
useFillerType(type: 'default' | 'marked'): void;
/**
* If `false`, comment nodes will be converted to `$comment`. Otherwise comment nodes are ignored.
*/
skipComments?: boolean;
}