code-block/utils
Functions
canBeCodeBlock( schema, element ) → booleaninternalmodule:code-block/utils~canBeCodeBlockChecks if an Element can become a code block.
Parameters
schema : ModelSchemaModel's schema.
element : ModelElementThe element to be checked.
Returns
booleanCheck result.
getCodeBlockAriaAnnouncement( t, languageDefs, element, direction ) → stringinternalmodule:code-block/utils~getCodeBlockAriaAnnouncementGet the translated message read by the screen reader when you enter or exit an element with your cursor.
Parameters
t : LocaleTranslatelanguageDefs : Array<CodeBlockLanguageDefinition>element : ModelElementdirection : 'enter' | 'leave'
Returns
string
getIndentOutdentPositions( model ) → Array<ModelPosition>internalmodule:code-block/utils~getIndentOutdentPositionsReturns 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>Copy codeOtherwise, 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>Copy codeIt 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>Copy codeNote: 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<ModelPosition>
getLeadingWhiteSpaces( textNode ) → stringinternalmodule:code-block/utils~getLeadingWhiteSpacesFor 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 : ModelText
Returns
string
getNormalizedAndLocalizedLanguageDefinitions( editor ) → Array<CodeBlockLanguageDefinition>internalmodule:code-block/utils~getNormalizedAndLocalizedLanguageDefinitionsReturns code block languages as defined in
config.codeBlock.languagesbut processed:- To consider the editor localization, i.e. to display
CodeBlockLanguageDefinitionin the correct language. There is no way to usetwhen 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>internalmodule:code-block/utils~getPropertyAssociationReturns 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' );Copy codereturns:
{ 'language-php': 'php', 'js': 'javascript' }Copy codeand
getPropertyAssociation( definitions, 'language', 'label' );Copy codereturns:
{ 'php': 'PHP', 'javascript': 'JavaScript' }Copy codeParameters
languageDefs : Array<CodeBlockLanguageDefinition>key : keyof CodeBlockLanguageDefinitionvalue : keyof CodeBlockLanguageDefinition
Returns
Record<string, string>
getTextNodeAtLineStart( position, model ) → null | ModelTextinternalmodule:code-block/utils~getTextNodeAtLineStartFor 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
nullif 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
softBreakelement.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> -> nullCopy codeParameters
position : ModelPositionmodel : Model
Returns
null | ModelText
isModelSelectionInCodeBlock( selection ) → booleaninternalmodule:code-block/utils~isModelSelectionInCodeBlockChecks if any of the blocks within the model selection is a code block.
Parameters
selection : ModelDocumentSelection
Returns
boolean
rawSnippetTextToViewDocumentFragment( writer, text ) → ViewDocumentFragmentinternalmodule:code-block/utils~rawSnippetTextToViewDocumentFragmentFor 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()"Copy codeOutput:
<DocumentFragment> "foo()" <br/> "bar()" </DocumentFragment>Copy codeParameters
writer : ViewUpcastWritertext : stringThe raw code text to be converted.
Returns