/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /** Description: Currently only functions to enhance plain text with HTML tags.
Wrapper class for various parsing routines, that convert plain text to HTML.
They try to recognize cites, URLs, plain text formattting like *bold* etc.
See
Must be non-escaped, pure unicode.
Note: ScanTXT(a, o) + ScanTXT(b, o) may be !=
Scan(a + b, o)
@param whattodo: Bitfield describing the modes of operation
@result "<", ">" and "&" are escaped and HTML tags are inserted where
appropriate.
*/
wstring scanTXT(in wstring text, in unsigned long whattodo);
/**
Adds additional formatting to user edited text, that the user was too lazy
or "unknowledged" (DELETEME: is that a word?) to make.
Note: Don't use kGlyphSubstitution with this function. This option
generates tags, that are unuseable for UAs other than Mozilla. This would
be a data loss bug.
@param text: HTML source to scan. May be a line, paragraph (recommended)
or just a substring.
Must be correct HTML. "<", ">" and "&" must be escaped,
other chars must be pure unicode.
Note: ScanTXT(a, o) + ScanTXT(b, o) may be !=
Scan(a + b, o)
@param whattodo: Bitfield describing the modes of operation
@result Additional HTML tags are inserted where appropriate.
*/
wstring scanHTML(in wstring text, in unsigned long whattodo);
/**
@param line: line in original msg, possibly starting starting with
txt quote tags like ">"
@param logLineStart: pos in line, where the real content (logical line)
begins, i.e. pos after all txt quote tags.
E.g. position of "t" in "> > text".
Initial value must be 0, unless line is not real line.
@return Cite Level, i.e. number of txt quote tags found, i.e. number of
nested quotes.
*/
unsigned long citeLevelTXT(in wstring line,
out unsigned long logLineStart);
/**
@param a wide string to scan for the presence of a URL.
@param aLength --> the length of the buffer to be scanned
@param aPos --> the position in the buffer to start scanning for a url
aStartPos --> index into the start of a url (-1 if no url found)
aEndPos --> index of the last character in the url (-1 if no url found)
*/
void findURLInPlaintext(in wstring text, in long aLength, in long aPos, out long aStartPos, out long aEndPos);
};