/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * * 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 Mozilla 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): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ /** 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(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); };