close

Filter

loading table of contents...

Headless Server Developer Manual / Version 2304

Table Of Contents

5.1.7 Contexts and InitialContext Property

A context defines how to transform a specific element node of a rich text document. For this task it has a number of registered event handlers, which apply to its subnodes.

Rich text processing always starts with a Root Context, where the root tag of the markup is processed. Contexts are stacked, that is when encountering the start of a paragraph, a new context for handling the elements within that paragraph is pushed on top of current context and removed when the paragraph ends.

Defining one or more contexts is achieved with the contexts property, followed by a YAML list of context definitions.

Syntactically, a context definition consists of a context type, a name and various handlers.

Syntax:

      contexts:
        - !context-type
          name: context-name
          defaultHandler:
            !Handler
            eventMatcher:   ...
            contextHandler: ...
            outputHandler:  ...
          handlers:
          - list of additional handlers
        ...
      initialContext:
        - !context-type ...
    

Example: Define three named contexts and reference context 'root' as initial context.

      contexts:
        - !Context
          name: headline
          defaultHandler:
            !Handler
            outputHandler: !ElementWriter {writeCharacters: true}
          handlers:
            - *text_handlers

        - !Context
          name: paragraph
          defaultHandler:
            !Handler
            outputHandler: !ElementWriter {writeCharacters: true}
          handlers:
            - *text_handlers
            - *inline_handlers

        - &root !RootContext
          name: root
          handlers:
            - *headline_handlers
            - *block_handlers
            - *blockquote_handlers

      initialContext: *root
    

Search Results

Table Of Contents
warning

Your Internet Explorer is no longer supported.

Please use Mozilla Firefox, Google Chrome, or Microsoft Edge.