src/converters/md2uu5/richText/richText.js
function richtext(state, startLine, endLine, silent, opts) {
  let pos = state.bMarks[startLine] + state.tShift[startLine],
    max = state.eMarks[startLine],
    contentEndLine;

  if (pos >= max) {
    return false;
  }

  let line = state.getLines(startLine, startLine + 1, 0, false);

  if (!line.startsWith(RICHTEXT_OPEN_MARKER)) {
    return false;
  }

  if (silent) {
    return true;
  }

  let nextLine = startLine + 1;
  let content = "";

  for (; nextLine < endLine; nextLine++) {
    let line = state.getLines(nextLine, nextLine + 1, 0, false);

    if (line.trim() === RICHTEXT_CLOSE_MARKER) {
      contentEndLine = nextLine - 1;
      break;
    }
    content += line + "\n";
  }

  state.line = contentEndLine + 2;

  // convert md subcontent to uu5string
  let uu5content = opts.markdownToUu5.render(content, state.env);

  state.tokens.push({
    type: "UU5.RichText.Block",
    uu5string: uu5content
  });
  return true;
}
function richtext(state, startLine, endLine, silent, opts) {
  let pos = state.bMarks[startLine] + state.tShift[startLine],
    max = state.eMarks[startLine],
    contentEndLine;

  if (pos >= max) {
    return false;
  }

  let line = state.getLines(startLine, startLine + 1, 0, false);

  if (!line.startsWith(RICHTEXT_OPEN_MARKER)) {
    return false;
  }

  if (silent) {
    return true;
  }

  let nextLine = startLine + 1;
  let content = "";

  for (; nextLine < endLine; nextLine++) {
    let line = state.getLines(nextLine, nextLine + 1, 0, false);

    if (line.trim() === RICHTEXT_CLOSE_MARKER) {
      contentEndLine = nextLine - 1;
      break;
    }
    content += line + "\n";
  }

  state.line = contentEndLine + 2;

  // convert md subcontent to uu5string
  let uu5content = opts.markdownToUu5.render(content, state.env);

  state.tokens.push({
    type: "UU5.RichText.Block",
    uu5string: uu5content
  });
  return true;
}
function richtext ( state , startLine , endLine , silent , opts ) { let pos = state . bMarks [ startLine ] + state . tShift [ startLine ] , max = state . eMarks [ startLine ] , contentEndLine ; if ( pos >= max ) { return false ; } let line = state . getLines ( startLine , startLine + 1 , 0 , false ) ; if ( ! line . startsWith ( RICHTEXT_OPEN_MARKER ) ) { return false ; } if ( silent ) { return true ; } let nextLine = startLine + 1 ; let content = "" ; for ( ; nextLine < endLine ; nextLine ++ ) { let line = state . getLines ( nextLine , nextLine + 1 , 0 , false ) ; if ( line . trim ( ) === RICHTEXT_CLOSE_MARKER ) { contentEndLine = nextLine - 1 ; break ; } content += line + "\n" ; } state . line = contentEndLine + 2 ; // convert md subcontent to uu5string let uu5content = opts . markdownToUu5 . render ( content , state . env ) ; state . tokens . push ( { type : "UU5.RichText.Block" , uu5string : uu5content } ) ; return true ; }
Block parser for UU5.RichText.Block .

The rich text block is using following signature:

{richtext}
...richtext content...

{/richtext}

@param state
@param startLine
@param endLine
@param silent
@returns {boolean}
Block parser for UU5 . RichText . Block .