Module

code-block/utils

@ckeditor/ckeditor5-code-block/src/utils

module

Filtering

Functions

  • canBeCodeBlock( schema, element ) → boolean

    Checks if an Element can become a code block.

    Parameters

    schema : Schema

    Model's schema.

    element : Element

    The element to be checked.

    Returns

    boolean

    Check result.

  • getIndentOutdentPositions( model ) → Array<Position>

    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

    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>

    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 use t 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>
  • getPropertyAssociation( languageDefs, key, value ) → Record<string, string>

    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>
  • isModelSelectionInCodeBlock( selection ) → boolean

    Checks if any of the blocks within the model selection is a code block.

    Parameters

    selection : DocumentSelection

    Returns

    boolean
  • rawSnippetTextToViewDocumentFragment( writer, text ) → DocumentFragment

    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

    DocumentFragment