/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- * * The "License" shall be the Mozilla Public License Version 1.1, except * Sections 6.2 and 11, but with the addition of the below defined Section 14. * You may obtain a copy of the Mozilla Public License Version 1.1 at * . The contents of this file are subject to the * License; you may not use this file except in compliance with the License. * * Section 14: MISCELLANEOUS. * This License represents the complete agreement concerning subject matter * hereof. If any provision of this License is held to be unenforceable, such * provision shall be reformed only to the extent necessary to make it * enforceable. This License shall be governed by German law provisions. Any * litigation relating to this License shall be subject to German jurisdiction. * * Once Covered Code has been published under a particular version of the * License, You may always continue to use it under the terms of that version. + The Initial Developer and no one else has the right to modify the terms * applicable to Covered Code created under this License. * (End of Section 14) * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is the Text to HTML converter code. * * The Initial Developer of the Original Code is Ben Bucksch * . Portions created by Ben Bucksch are Copyright * (C) 1999, 2000 Ben Bucksch. All Rights Reserved. * * Contributor(s): */ /** 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 for a description. */ #include "nsIStreamConverter.idl" #include "nsrootidl.idl" %{C++ // {77c0e42a-1dd2-11b2-8ebf-edc6606f2f4b} #define MOZITXTTOHTMLCONV_CID \ { 0x77c0e42a, 0x1dd2, 0x11b2, \ { 0x8e, 0xbf, 0xed, 0xc6, 0x60, 0x6f, 0x2f, 0x4b } } #define MOZ_TXTTOHTMLCONV_CONTRACTID \ "@mozilla.org/txttohtmlconv;1" %} [scriptable, uuid(77c0e42a-1dd2-11b2-8ebf-edc6606f2f4b)] interface mozITXTToHTMLConv : nsIStreamConverter { const unsigned long kEntities = 0; // just convert < & > to < & and > const unsigned long kURLs = 1 << 1; const unsigned long kGlyphSubstitution = 1 << 2; // Smilies, ® etc. const unsigned long kStructPhrase = 1 << 3; // E.g. *bold* -> /** @param text: plain text to scan. May be a line, paragraph (recommended) or just a substring.

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([const] 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([const] 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([const] in wstring line, out unsigned long logLineStart); }; .