/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * 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 the Initial Developer are Copyright (C) 1999, 2000 * the Initial Developer. 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); };