code-block/utils
@ckeditor/ckeditor5-code-block/src/utils
Filtering
Functions
-
canBeCodeBlock( schema, element ) → boolean
module:code-block/utils~canBeCodeBlock
-
getCodeBlockAriaAnnouncement( t, languageDefs, element, direction ) → string
module:code-block/utils~getCodeBlockAriaAnnouncement
Get the translated message read by the screen reader when you enter or exit an element with your cursor.
Parameters
t : LocaleTranslate
languageDefs : Array<CodeBlockLanguageDefinition>
element : Element
direction : 'enter' | 'leave'
Returns
string
-
getIndentOutdentPositions( model ) → Array<Position>
module:code-block/utils~getIndentOutdentPositions
Returns an array of all model positions within the selection that represent code block lines.
If the selection is collapsed, it returns the exact selection anchor position:
<codeBlock>[]foo</codeBlock> -> <codeBlock>^foo</codeBlock> <codeBlock>foo[]bar</codeBlock> -> <codeBlock>foo^bar</codeBlock>
Otherwise, it returns positions before each text node belonging to all code blocks contained by the selection:
<codeBlock> <codeBlock> foo[bar ^foobar <softBreak></softBreak> -> <softBreak></softBreak> baz]qux ^bazqux </codeBlock> </codeBlock>
It also works across other non–code blocks:
<codeBlock> <codeBlock> foo[bar ^foobar </codeBlock> </codeBlock> <paragraph>text</paragraph> -> <paragraph>text</paragraph> <codeBlock> <codeBlock> baz]qux ^bazqux </codeBlock> </codeBlock>
Note: The positions are in reverse order so they do not get outdated when iterating over them and the writer inserts or removes elements at the same time.
Note: The position is located after the leading white spaces in the text node.
Parameters
model : Model
Returns
Array<Position>
-
getLeadingWhiteSpaces( textNode ) → string
module:code-block/utils~getLeadingWhiteSpaces
For a given model text node, it returns white spaces that precede other characters in that node. This corresponds to the indentation part of the code block line.
Parameters
textNode : Text
Returns
string
-
getNormalizedAndLocalizedLanguageDefinitions( editor ) → Array<CodeBlockLanguageDefinition>
module:code-block/utils~getNormalizedAndLocalizedLanguageDefinitions
Returns code block languages as defined in
config.codeBlock.languages
but processed:- To consider the editor localization, i.e. to display
CodeBlockLanguageDefinition
in the correct language. There is no way to uset
when the user configuration is defined because the editor does not exist yet. - To make sure each definition has a CSS class associated with it even if not specified in the original configuration.
Parameters
editor : Editor
Returns
Array<CodeBlockLanguageDefinition>
- To consider the editor localization, i.e. to display
-
getPropertyAssociation( languageDefs, key, value ) → Record<string, string>
module:code-block/utils~getPropertyAssociation
Returns an object associating certain language definition properties with others. For instance:
For:
const definitions = { { language: 'php', class: 'language-php', label: 'PHP' }, { language: 'javascript', class: 'js', label: 'JavaScript' }, }; getPropertyAssociation( definitions, 'class', 'language' );
returns:
{ 'language-php': 'php', 'js': 'javascript' }
and
getPropertyAssociation( definitions, 'language', 'label' );
returns:
{ 'php': 'PHP', 'javascript': 'JavaScript' }
Parameters
languageDefs : Array<CodeBlockLanguageDefinition>
key : keyof CodeBlockLanguageDefinition
value : keyof CodeBlockLanguageDefinition
Returns
Record<string, string>
-
getTextNodeAtLineStart( position, model ) → Text | null
module:code-block/utils~getTextNodeAtLineStart
For given position, finds the closest position that is at the beginning of a line of code and returns a text node that is at the beginning of the line (or
null
if there's no text node at the beginning of a given line).Line beings at the start of a code block element and after each
softBreak
element.Note: even though code block doesn't allow inline elements other than
<softBreak>
by default, some features may overwrite this rule, so such inline elements are taken into account.Some examples of expected results:
<codeBlock>^</codeBlock> -> null <codeBlock>^foobar</codeBlock> -> <codeBlock>[foobar]</codeBlock> <codeBlock>foobar^</codeBlock> -> <codeBlock>[foobar]</codeBlock> <codeBlock>foo^bar</codeBlock> -> <codeBlock>[foobar]</codeBlock> <codeBlock>foo^<softBreak />bar</codeBlock> -> <codeBlock>[foo]<softBreak />bar</codeBlock> <codeBlock>foo<softBreak />bar^</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock> <codeBlock>foo<softBreak />b^ar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock> <codeBlock>foo<softBreak />^bar</codeBlock> -> <codeBlock>foo<softBreak />[bar]</codeBlock> <codeBlock>^<element /></codeBlock> -> null <codeBlock><element />^</codeBlock> -> null <codeBlock>foo^<element /></codeBlock> -> <codeBlock>[foo]<element /></codeBlock> <codeBlock>foo<element />^</codeBlock> -> <codeBlock>[foo]<element /></codeBlock> <codeBlock>foo<element />bar^</codeBlock> -> <codeBlock>[foo]<element />bar</codeBlock> <codeBlock><element />bar^</codeBlock> -> null <codeBlock>foo<softBreak />^<softBreak /></codeBlock> -> null <codeBlock>foo<softBreak />^<element /></codeBlock> -> null <codeBlock>foo<softBreak /><element />^</codeBlock> -> null <codeBlock>foo<softBreak />bar<element />^</codeBlock> -> <codeBlock>foo<softBreak />[bar]<element /></codeBlock> <codeBlock>foo<softBreak /><element />ba^r</codeBlock> -> null
Parameters
Returns
Text | null
-
isModelSelectionInCodeBlock( selection ) → boolean
module:code-block/utils~isModelSelectionInCodeBlock
Checks if any of the blocks within the model selection is a code block.
Parameters
selection : DocumentSelection
Returns
boolean
-
rawSnippetTextToViewDocumentFragment( writer, text ) → DocumentFragment
module:code-block/utils~rawSnippetTextToViewDocumentFragment
For plain text containing the code (a snippet), it returns a document fragment containing view text nodes separated by
<br>
elements (in place of new line characters "\n"), for instance:Input:
"foo()\n bar()"
Output:
<DocumentFragment> "foo()" <br/> "bar()" </DocumentFragment>
Parameters
writer : UpcastWriter
text : string
The raw code text to be converted.
Returns
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.
With the release of version 42.0.0, we have rewritten much of our documentation to reflect the new import paths and features. We appreciate your feedback to help us ensure its accuracy and completeness.