Top Method Summary
Options Name Purpose
AbandonTableHeader () Reads the header row that was held back as an ordinary paragraph line
AddCodeContent () Adds the lines of a fenced code block as one monospace run
AddCodeSpan (integer, integer, TextRunFormat) Adds the given range of the inline buffer as a code span
AddLine (integer, integer, logical) Adds one line to the block that is open
AddTableCell (integer, integer, logical) Adds one cell of a pipe table to the document
BeginTable () Opens the table whose header row was held back and adds that row to it
BuildInline () Builds the inline content of the block that is being finished
INTEGER CountListMarker (integer) Counts the list item whose marker ListMarkerEnd recognized on the given nesting level and returns its number
CHARACTER DataUriMimeType (integer, integer) Returns the MIME type of the data URI the given range holds
INTEGER DataUriPrefixLength (character) Returns the number of bytes the data URI prefix of the given MIME type occupies
INTEGER DelimiterRun (integer, integer, integer) Returns the length of the run of the given byte value that begins at the given position
INTEGER DigitRun (integer, integer) Returns the length of the run of digits in the source that begins at the given position
EmitTableRow (integer, integer, logical) Adds the cells of one row of a pipe table to the document
EndTable () Closes the table that is being read
INTEGER FenceLength (integer, integer) Returns the length of the code fence the given line opens
INTEGER FindBracketClose (integer, integer) Returns the position of the closing square bracket that belongs to the opening one
INTEGER FindCodeClose (integer, integer, integer) Returns the position of the backtick run that closes a code span
INTEGER FindDelimiterClose (integer, integer, integer, integer) Returns the position of the delimiter run that closes an emphasis or a strikethrough
INTEGER FindParenClose (integer, integer) Returns the position of the closing parenthesis that belongs to the opening one
FinishBlock () Adds the block that is open to the document and builds its runs
FlushStage (TextRunFormat) Adds the staged plain text as a text run and empties the stage
INTEGER HeadingLevel (integer, integer) Returns the heading level the given line carries
INTEGER IndentColumns (integer, integer) Returns the number of columns the given range of the source occupies as indentation
LOGICAL InlineBeginsWith (integer, integer, character) Returns if the inline buffer carries the given ASCII value at the given position
LOGICAL IsAllBlanks (integer, integer) Returns if the given range of the inline buffer carries nothing but blanks
LOGICAL IsAsciiLetter (integer) Returns if the given byte is an ASCII letter
LOGICAL IsAsciiPunctuation (integer) Returns if the given byte is ASCII punctuation
LOGICAL IsBlank (integer) Returns if the given byte is a blank or a tab
LOGICAL IsClosingFence (integer, integer) Returns if the given line closes the fenced code block that is open
LOGICAL IsDelimiterRow (integer, integer) Returns if the given line is the delimiter row of a pipe table
LOGICAL IsPipeRow (integer, integer) Returns if the given line is a row of a pipe table
LOGICAL IsThematicBreak (integer, integer) Returns if the given line is a thematic break
INTEGER ListLevelFor (integer) Returns the nesting level a list item written with the given indentation belongs to
INTEGER ListMarkerEnd (integer, integer) Returns the position behind the list marker the given line opens a list item with
ParseInline (integer, integer, TextRunFormat) Reads the given range of the inline buffer and adds the runs it describes to the document
ProcessLine (integer, integer) Processes one line of the source
Consultingwerk.Util.DocumentConverter.TextDocument Read (longchar) Reads the given Markdown document into a new TextDocument
INTEGER ReadAutolink (integer, integer, TextRunFormat) Reads the autolink that begins at the given position
LONGCHAR ReadDestination (integer, integer) Returns the destination of a link, without the angle brackets it may be written in and with its escapes resolved
INTEGER ReadLink (integer, integer, logical, TextRunFormat) Reads the link or image that begins at the given position
ResetListStack () Closes every open list level
ResetState () Resets the reader state so that an instance could be reused
INTEGER SkipColumns (integer, integer, integer) Returns the position behind the given number of columns of indentation of the given line
INTEGER SkipInlineWhitespace (integer, integer) Returns the position of the first byte of the given inline range that is not whitespace
INTEGER SkipWhitespace (integer, integer) Returns the position of the first byte of the given line that is not whitespace
LONGCHAR SliceUtf8 (memptr, integer, integer) Returns the given byte range as a longchar
INTEGER SourceRun (integer, integer, integer) Returns the length of the run of the given byte value in the source that begins at the given position
StageByte (integer) Stages one byte of plain text
StartBlock (integer, integer, logical) Opens a new block that the following lines belong to
INTEGER StripBlockQuote (integer, integer, integer) Returns the position behind the block quote markers of the given line
INTEGER StripFenceQuote (integer, integer) Returns the position behind the block quote markers of a line inside a fenced code block
INTEGER TrimRight (integer, integer) Returns the position of the last byte of the given range that is not a blank
LONGCHAR UnescapeRange (integer, integer) Returns the given range of the inline buffer with its backslash escapes resolved


Method Detail
Top

AbandonTableHeader ()

Purpose: Reads the header row that was held back as an ordinary
paragraph line
Notes: Called when the line behind it is not a delimiter row, so the
pipes it carries are text rather than a table

Top

AddCodeContent ()

Purpose: Adds the lines of a fenced code block as one monospace run
Notes: The content of a code block is literal, so neither the
escaping nor the inline markup of a paragraph applies to it

Top

AddCodeSpan (integer, integer, TextRunFormat)

Purpose: Adds the given range of the inline buffer as a code span
Notes: The content of a code span is literal. One leading and one
trailing blank are stripped when the value carries both, which
is how CommonMark lets a code span hold a value that begins or
ends with a backtick or a blank.

Parameters:
piFrom INTEGER
The position of the first byte of the content
piTo INTEGER
The position of the last byte of the content
poFormat Consultingwerk.Util.DocumentConverter.TextRunFormat
The character formatting that applies around the code span
Top

AddLine (integer, integer, logical)

Purpose: Adds one line to the block that is open
Notes: Outside a code block the trailing whitespace of the line is
dropped and a hard line break is recognized, either as the
trailing backslash the writer emits or as the two trailing
blanks hand written Markdown uses

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line content
plRaw LOGICAL
TRUE when the line belongs to a fenced code block and is taken as it stands
Top

AddTableCell (integer, integer, logical)

Purpose: Adds one cell of a pipe table to the document
Notes: The content of a cell is one line of inline Markdown, so it
becomes a single paragraph - the one block a pipe table can
express

Parameters:
piFrom INTEGER
The position of the first byte of the cell
piTo INTEGER
The position of the last byte of the cell
plHeader LOGICAL
TRUE for a header cell
Top

BeginTable ()

Purpose: Opens the table whose header row was held back and adds that
row to it
Notes: The block in front of the table is finished before the table
is opened, so that it stays outside of it

Top

BuildInline ()

Purpose: Builds the inline content of the block that is being finished
Notes: The lines are joined with a line feed where the line before
them ended with a hard line break and with a blank where it
did not, which is what a soft line break renders as. The
result is a byte buffer of its own rather than a range of the
source, because the lines of a block are not adjacent in the
source.

Top

INTEGER CountListMarker (integer)

Purpose: Counts the list item whose marker ListMarkerEnd recognized on
the given nesting level and returns its number
Notes: The number of the first item of an ordered list is its start
number, and the numbers of the items behind it are ignored and
counted on instead - the CommonMark reading, which renumbers a
list written as 1. 1. 1. A new list starts when the delimiter
changes from the period to the closing parenthesis or back,
when a bulleted item stood on the level in front of it, and
whenever the level was closed - a block that is not a list
item and an item of a shallower level close it. The
MarkdownWriter alternates the delimiter to keep two adjacent
lists apart (SCL-5858).

Parameters:
piLevel INTEGER
The nesting level ListLevelFor returned for the item
Returns INTEGER
The number of the item, 0 for a bulleted one
Top

CHARACTER DataUriMimeType (integer, integer)

Purpose: Returns the MIME type of the data URI the given range holds
Notes: Only the two image types the model can carry are recognized;
every other address is a hyperlink

Parameters:
piFrom INTEGER
The position of the first byte of the address
piTo INTEGER
The position of the last byte of the address
Returns CHARACTER
The MIME type, or an empty value when the address is not a data URI of an image
Top

INTEGER DataUriPrefixLength (character)

Purpose: Returns the number of bytes the data URI prefix of the given
MIME type occupies
Notes: The prefix is the part in front of the base64 data, which is
where the image run begins

Parameters:
pcMimeType CHARACTER
The MIME type DataUriMimeType returned
Returns INTEGER
The length of the prefix, or 0 when the MIME type is not one of the two
Top

INTEGER DelimiterRun (integer, integer, integer)

Purpose: Returns the length of the run of the given byte value that
begins at the given position
Notes:

Parameters:
piFrom INTEGER
The position of the first byte of the run
piTo INTEGER
The position of the last byte that may be read
piByte INTEGER
The byte value the run is made of
Returns INTEGER
The number of bytes the run occupies
Top

INTEGER DigitRun (integer, integer)

Purpose: Returns the length of the run of digits in the source that
begins at the given position
Notes:

Parameters:
piFrom INTEGER
The position of the first digit
piTo INTEGER
The position of the last byte that may be read
Returns INTEGER
The number of digits the run carries
Top

EmitTableRow (integer, integer, logical)

Purpose: Adds the cells of one row of a pipe table to the document
Notes: The leading pipe of the row opens its first cell and the
trailing one closes its last, so neither produces an empty
cell. A pipe that a backslash escapes is part of the cell
text - that is how the writer keeps a pipe in the content of
a cell.

Parameters:
piFrom INTEGER
The position of the leading pipe of the row
piTo INTEGER
The position of the last byte of the row
plHeader LOGICAL
TRUE when the cells of the row are header cells
Top

EndTable ()

Purpose: Closes the table that is being read
Notes:

Top

INTEGER FenceLength (integer, integer)

Purpose: Returns the length of the code fence the given line opens
Notes: A fence is a run of at least three backticks or tildes

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns INTEGER
The length of the fence, or 0 when the line does not open one
Top

INTEGER FindBracketClose (integer, integer)

Purpose: Returns the position of the closing square bracket that
belongs to the opening one
Notes: Nested brackets are counted and an escaped bracket is skipped

Parameters:
piFrom INTEGER
The position behind the opening bracket
piTo INTEGER
The position of the last byte that may be read
Returns INTEGER
The position of the closing bracket, or 0 when there is none
Top

INTEGER FindCodeClose (integer, integer, integer)

Purpose: Returns the position of the backtick run that closes a code span
Notes: A code span is closed by a run of exactly the length of the
run that opened it, which is what lets a code span carry a
backtick

Parameters:
piFrom INTEGER
The position behind the opening run
piTo INTEGER
The position of the last byte that may be read
piLength INTEGER
The length of the run that opened the code span
Returns INTEGER
The position of the first byte of the closing run, or 0 when there is none
Top

INTEGER FindDelimiterClose (integer, integer, integer, integer)

Purpose: Returns the position of the delimiter run that closes an
emphasis or a strikethrough
Notes: An escaped delimiter and the content of a code span are
skipped, so that a backtick quoted asterisk does not close an
emphasis that was opened outside of it

Parameters:
piFrom INTEGER
The position behind the opening run
piTo INTEGER
The position of the last byte that may be read
piByte INTEGER
The byte value the delimiter is made of
piNeed INTEGER
The number of bytes the closing run has to carry at least
Returns INTEGER
The position of the first byte of the closing run, or 0 when there is none
Top

INTEGER FindParenClose (integer, integer)

Purpose: Returns the position of the closing parenthesis that belongs
to the opening one
Notes: Nested parentheses are counted and an escaped one is skipped

Parameters:
piFrom INTEGER
The position behind the opening parenthesis
piTo INTEGER
The position of the last byte that may be read
Returns INTEGER
The position of the closing parenthesis, or 0 when there is none
Top

FinishBlock ()

Purpose: Adds the block that is open to the document and builds its runs
Notes: A block that never received a line still becomes a block - an
empty paragraph is content in a text document, and the writer
writes it as a line holding a single backslash, which arrives
here as a block with one empty line

Top

FlushStage (TextRunFormat)

Purpose: Adds the staged plain text as a text run and empties the stage
Notes: Called before every construct that adds a run of its own and at
the end of every ParseInline invocation, which is what keeps
the single staging buffer free of bytes that belong to two
different formatting states

Parameters:
poFormat Consultingwerk.Util.DocumentConverter.TextRunFormat
The character formatting of the staged text
Top

INTEGER HeadingLevel (integer, integer)

Purpose: Returns the heading level the given line carries
Notes: One to six number signs followed by whitespace or by the end
of the line

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns INTEGER
The heading level, or 0 when the line is not a heading
Top

INTEGER IndentColumns (integer, integer)

Purpose: Returns the number of columns the given range of the source
occupies as indentation
Notes: A tab counts as four columns, which is what CommonMark asks
for; every other byte of the range is a blank

Parameters:
piFrom INTEGER
The position of the first byte of the indentation
piEnd INTEGER
The position behind the last byte of the indentation
Returns INTEGER
The number of columns the indentation occupies
Top

LOGICAL InlineBeginsWith (integer, integer, character)

Purpose: Returns if the inline buffer carries the given ASCII value at
the given position
Notes: The comparison is case insensitive, which is what a URI scheme
asks for

Parameters:
piFrom INTEGER
The position to compare at
piTo INTEGER
The position of the last byte that may be read
pcAscii CHARACTER
The ASCII value to compare with
Returns LOGICAL
TRUE when the buffer carries that value at that position
Top

LOGICAL IsAllBlanks (integer, integer)

Purpose: Returns if the given range of the inline buffer carries
nothing but blanks
Notes:

Parameters:
piFrom INTEGER
The position of the first byte of the range
piTo INTEGER
The position of the last byte of the range
Returns LOGICAL
TRUE when every byte of the range is a blank
Top

LOGICAL IsAsciiLetter (integer)

Purpose: Returns if the given byte is an ASCII letter
Notes:

Parameters:
piByte INTEGER
The byte value to test
Returns LOGICAL
TRUE when the byte is a letter between a and z
Top

LOGICAL IsAsciiPunctuation (integer)

Purpose: Returns if the given byte is ASCII punctuation
Notes: A backslash escapes ASCII punctuation and nothing else, which
is what lets the writer protect the markup characters without
changing the text around them

Parameters:
piByte INTEGER
The byte value to test
Returns LOGICAL
TRUE when the byte is one of the ASCII punctuation characters
Top

LOGICAL IsBlank (integer)

Purpose: Returns if the given byte is a blank or a tab
Notes:

Parameters:
piByte INTEGER
The byte value to test
Returns LOGICAL
TRUE when the byte is a blank or a tab
Top

LOGICAL IsClosingFence (integer, integer)

Purpose: Returns if the given line closes the fenced code block that is
open
Notes: A closing fence carries at least as many fence characters as
the opening one and nothing else

Parameters:
piFrom INTEGER
The position of the first byte of the line
piTo INTEGER
The position of the last byte of the line
Returns LOGICAL
TRUE when the line closes the code block
Top

LOGICAL IsDelimiterRow (integer, integer)

Purpose: Returns if the given line is the delimiter row of a pipe table
Notes: The row that separates the header of a pipe table from its
body: pipes, hyphens, the colons of a column alignment and
blanks, with at least one hyphen. The alignment is not part of
the model and is dropped.

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns LOGICAL
TRUE when the line is a delimiter row
Top

LOGICAL IsPipeRow (integer, integer)

Purpose: Returns if the given line is a row of a pipe table
Notes: A row has to begin with a pipe. A table written without the
leading pipe of a row - which GitHub Flavored Markdown allows -
is read as a paragraph: requiring the pipe keeps a line that
merely contains one from turning into a table, and the writer
of this converter always emits it.

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns LOGICAL
TRUE when the line is a row of a pipe table
Top

LOGICAL IsThematicBreak (integer, integer)

Purpose: Returns if the given line is a thematic break
Notes: Three or more hyphens, asterisks or underscores of the same
kind, with nothing but blanks between them - the CommonMark
rule. The MarkdownWriter emits the three hyphens; the other
two spellings only ever arrive from hand written Markdown.
A delimiter row of a pipe table cannot be mistaken for one:
a delimiter row carries pipes, and a pipe is neither a break
character nor a blank. The line behind a held back header row
is tested for the delimiter row before ProcessLine reaches
this method anyway, so a delimiter row never gets here
(SCL-5857).

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns LOGICAL
TRUE when the line is a thematic break
Top

INTEGER ListLevelFor (integer)

Purpose: Returns the nesting level a list item written with the given
indentation belongs to
Notes: The indentation of the open levels is kept on a stack rather
than divided by a fixed number of blanks per level, so that
Markdown written with two, three or four blanks per level all
read the same

Parameters:
piColumns INTEGER
The number of columns the item is indented by
Returns INTEGER
The nesting level, starting at 0 for the outermost one
Top

INTEGER ListMarkerEnd (integer, integer)

Purpose: Returns the position behind the list marker the given line
opens a list item with
Notes: A bullet marker is a hyphen, an asterisk or a plus sign, an
ordered marker a run of digits followed by a period or a
closing parenthesis; both have to be followed by whitespace
or by the end of the line. Whether the marker is an ordered
one is left in lMarkerNumbered, its number and the byte that
ends it in iMarkerNumber and iMarkerDelimiter (SCL-5858). A
run of more than nine digits is no marker, as in CommonMark.

Parameters:
piFrom INTEGER
The position of the first byte of the line content
piTo INTEGER
The position of the last byte of the line
Returns INTEGER
The position behind the marker, or 0 when the line opens no list item
Top

ParseInline (integer, integer, TextRunFormat)

Purpose: Reads the given range of the inline buffer and adds the runs
it describes to the document
Notes: Recursive: a construct that carries formatting parses its own
content with the formatting applied, so that nesting works
without a delimiter stack. The plain text in between is
accumulated in a staging buffer of this invocation and is
flushed whenever a construct interrupts it.

Parameters:
piFrom INTEGER
The position of the first byte of the range
piTo INTEGER
The position of the last byte of the range
poFormat Consultingwerk.Util.DocumentConverter.TextRunFormat
The character formatting that applies to the range
Top

ProcessLine (integer, integer)

Purpose: Processes one line of the source
Notes: The line ending is not part of the given range

Parameters:
piFrom INTEGER
The position of the first byte of the line
piTo INTEGER
The position of the last byte of the line
Top

Consultingwerk.Util.DocumentConverter.TextDocument Read (longchar)

Purpose: Reads the given Markdown document into a new TextDocument
Notes: The reader never raises on malformed input - it produces the
best possible document instead

Parameters:
plcSource LONGCHAR
The longchar with the Markdown document
Returns Consultingwerk.Util.DocumentConverter.TextDocument
The TextDocument with the content of the Markdown document
Top

INTEGER ReadAutolink (integer, integer, TextRunFormat)

Purpose: Reads the autolink that begins at the given position
Notes: An autolink carries a scheme and no whitespace; anything else
in angle brackets is text, which is how inline HTML survives
as the plain text the design asks for

Parameters:
piFrom INTEGER
The position of the opening angle bracket
piTo INTEGER
The position of the last byte that may be read
poFormat Consultingwerk.Util.DocumentConverter.TextRunFormat
The character formatting that applies around the autolink
Returns INTEGER
The position behind the autolink, or 0 when the construct is not one
Top

LONGCHAR ReadDestination (integer, integer)

Purpose: Returns the destination of a link, without the angle brackets
it may be written in and with its escapes resolved
Notes:

Parameters:
piFrom INTEGER
The position of the first byte of the destination
piTo INTEGER
The position of the last byte of the destination
Returns LONGCHAR
The longchar with the destination, fixed to UTF-8
Top

INTEGER ReadLink (integer, integer, logical, TextRunFormat)

Purpose: Reads the link or image that begins at the given position
Notes: The caller has flushed its staged text already. An image whose
address is a data URI becomes an image run; an image
referenced by a URL becomes a hyperlink with its alternative
text, because RTF cannot reference an external image.

Parameters:
piBracket INTEGER
The position of the opening square bracket
piTo INTEGER
The position of the last byte that may be read
plImage LOGICAL
TRUE when an exclamation mark introduced the construct
poFormat Consultingwerk.Util.DocumentConverter.TextRunFormat
The character formatting that applies around the link
Returns INTEGER
The position behind the link, or 0 when the construct is not a link
Top

ResetListStack ()

Purpose: Closes every open list level
Notes: Called for every block that is not a list item

Top

ResetState ()

Purpose: Resets the reader state so that an instance could be reused
Notes:

Top

INTEGER SkipColumns (integer, integer, integer)

Purpose: Returns the position behind the given number of columns of
indentation of the given line
Notes: A tab counts as four columns, so one tab is consumed whole

Parameters:
piFrom INTEGER
The position of the first byte of the line
piTo INTEGER
The position of the last byte of the line
piColumns INTEGER
The number of columns to skip
Returns INTEGER
The position of the first byte behind the skipped columns
Top

INTEGER SkipInlineWhitespace (integer, integer)

Purpose: Returns the position of the first byte of the given inline
range that is not whitespace
Notes: The same as SkipWhitespace, on the inline buffer

Parameters:
piFrom INTEGER
The position of the first byte of the range
piTo INTEGER
The position of the last byte of the range
Returns INTEGER
The position of the first byte that is not whitespace, or one behind the range when there is none
Top

INTEGER SkipWhitespace (integer, integer)

Purpose: Returns the position of the first byte of the given line that
is not whitespace
Notes:

Parameters:
piFrom INTEGER
The position of the first byte of the line
piTo INTEGER
The position of the last byte of the line
Returns INTEGER
The position of the first byte that is not whitespace, or one behind the line when there is none
Top

LONGCHAR SliceUtf8 (memptr, integer, integer)

Purpose: Returns the given byte range as a longchar
Notes: The range is taken as it stands, without any escape handling

Parameters:
pmSource MEMPTR
The memptr to read from
piFrom INTEGER
The position of the first byte of the range
piLength INTEGER
The number of bytes the range occupies
Returns LONGCHAR
The longchar with the value, fixed to UTF-8
Top

INTEGER SourceRun (integer, integer, integer)

Purpose: Returns the length of the run of the given byte value in the
source that begins at the given position
Notes:

Parameters:
piFrom INTEGER
The position of the first byte of the run
piTo INTEGER
The position of the last byte that may be read
piByte INTEGER
The byte value the run is made of
Returns INTEGER
The number of bytes the run occupies
Top

StageByte (integer)

Purpose: Stages one byte of plain text
Notes: The staged bytes become a text run when FlushStage is called

Parameters:
piByte INTEGER
The byte value to stage
Top

StartBlock (integer, integer, logical)

Purpose: Opens a new block that the following lines belong to
Notes: The block is only added to the document when it is finished,
because its runs are built from all of its lines at once.
The indentation of the block is the number of block quote
markers the line that opens it carried; a further line that
carries none is the lazy continuation of the same block and
leaves it alone (SCL-5856).

Parameters:
piKind INTEGER
The integer code of the block kind
piLevel INTEGER
The heading level or the nesting level of a list item
plNumbered LOGICAL
TRUE for a numbered list item
Top

INTEGER StripBlockQuote (integer, integer, integer)

Purpose: Returns the position behind the block quote markers of the
given line
Notes: Every marker is dropped with the blank that may follow it, and
the number of markers that were dropped is left in iLineQuote
- it is the indentation level of the block the line opens
(SCL-5856)

Parameters:
piFrom INTEGER
The position of the first greater than sign
piTo INTEGER
The position of the last byte of the line
piMaxLevel INTEGER
The number of markers to drop at most, 0 for all of them
Returns INTEGER
The position of the first byte that is not part of a marker
Top

INTEGER StripFenceQuote (integer, integer)

Purpose: Returns the position behind the block quote markers of a line
inside a fenced code block
Notes: Only as many markers are dropped as the line that opened the
fence carried, and only when it carried any - see the fence
branch of ProcessLine for why (SCL-5856)

Parameters:
piFrom INTEGER
The position of the first byte of the line
piTo INTEGER
The position of the last byte of the line
Returns INTEGER
The position of the first byte that is not part of a marker
Top

INTEGER TrimRight (integer, integer)

Purpose: Returns the position of the last byte of the given range that
is not a blank
Notes: Returns a position in front of piFrom when the range holds
nothing but blanks

Parameters:
piFrom INTEGER
The position of the first byte of the range
piTo INTEGER
The position of the last byte of the range
Returns INTEGER
The position of the last byte that is not a blank
Top

LONGCHAR UnescapeRange (integer, integer)

Purpose: Returns the given range of the inline buffer with its
backslash escapes resolved
Notes: Used where the range is not parsed for markup - the address of
a link and the alternative text of an image

Parameters:
piFrom INTEGER
The position of the first byte of the range
piTo INTEGER
The position of the last byte of the range
Returns LONGCHAR
The longchar with the value, fixed to UTF-8


©2006-2026 Consultingwerk Ltd.         info@consultingwerk.de         http://www.consultingwerk.de       19.09.2026 10:19:19