git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			185 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			TeX
		
	
	
	
	
	
| %
 | |
| % automatically generated by HelpGen from
 | |
| % htmlparser.tex at 14/Mar/99 20:13:37
 | |
| %
 | |
| 
 | |
| \section{\class{wxHtmlParser}}\label{wxhtmlparser}
 | |
| 
 | |
| This class handles the {\bf generic} parsing of HTML document: it scans
 | |
| the document and divide it into blocks of tags (where one block
 | |
| consists of begining and ending tag and of text between these
 | |
| two tags).
 | |
| 
 | |
| It is independent from wxHtmlWindow and can be used as stand-alone parser
 | |
| (Julian Smart's idea of speech-only HTML viewer or wget-like utility -
 | |
| see InetGet sample for example).
 | |
| 
 | |
| It uses system of tag handlers to parse the HTML document. Tag handlers
 | |
| are not staticaly shared by all instances but are created for each
 | |
| wxHtmlParser instance. The reason is that the handler may contain
 | |
| document-specific temporary data used during parsing (e.g. complicated
 | |
| structures like tables).
 | |
| 
 | |
| Typically the user calls only the \helpref{Parse}{wxhtmlparserparse} method.
 | |
| 
 | |
| \wxheading{Derived from}
 | |
| 
 | |
| wxObject
 | |
| 
 | |
| \wxheading{See also}
 | |
| 
 | |
| \helpref{Cells Overview}{cells},
 | |
| \helpref{Tag Handlers Overview}{handlers},
 | |
| \helpref{wxHtmlTag}{wxhtmltag}
 | |
| 
 | |
| \latexignore{\rtfignore{\wxheading{Members}}}
 | |
| 
 | |
| \membersection{wxHtmlParser::wxHtmlParser}\label{wxhtmlparserwxhtmlparser}
 | |
| 
 | |
| \func{}{wxHtmlParser}{\void}
 | |
| 
 | |
| Constructor.
 | |
| 
 | |
| \membersection{wxHtmlParser::SetFS}\label{wxhtmlparsersetfs}
 | |
| 
 | |
| \func{void}{SetFS}{\param{wxFileSystem }{*fs}}
 | |
| 
 | |
| Sets the virtual file system that will be used to request additional
 | |
| files. (For example {\tt <IMG>} tag handler requests wxFSFile with the
 | |
| image data.)
 | |
| 
 | |
| \membersection{wxHtmlParser::GetFS}\label{wxhtmlparsergetfs}
 | |
| 
 | |
| \constfunc{wxFileSystem*}{GetFS}{\void}
 | |
| 
 | |
| Returns pointer to the file system. Because each tag handler has
 | |
| reference to it's parent parser it can easily request the file by
 | |
| calling
 | |
| 
 | |
| \begin{verbatim}
 | |
| wxFSFile *f = m_Parser -> GetFS() -> OpenFile("image.jpg");
 | |
| \end{verbatim}
 | |
| 
 | |
| \membersection{wxHtmlParser::Parse}\label{wxhtmlparserparse}
 | |
| 
 | |
| \func{wxObject*}{Parse}{\param{const wxString\& }{source}}
 | |
| 
 | |
| Proceeds parsing of the document. This is end-user method. You can simply
 | |
| call it when you need to obtain parsed output (which is parser-specific)
 | |
| 
 | |
| The method does these things:
 | |
| 
 | |
| \begin{enumerate}
 | |
| \item calls \helpref{InitParser(source)}{wxhtmlparserinitparser}
 | |
| \item calls \helpref{DoParsing}{wxhtmlparserdoparsing}
 | |
| \item calls \helpref{GetProduct}{wxhtmlparsergetproduct}
 | |
| \item calls \helpref{DoneParser}{wxhtmlparserdoneparser}
 | |
| \item returns value returned by GetProduct
 | |
| \end{enumerate}
 | |
| 
 | |
| You shouldn't use InitParser, DoParsing, GetProduct or DoneParser directly.
 | |
| 
 | |
| \membersection{wxHtmlParser::InitParser}\label{wxhtmlparserinitparser}
 | |
| 
 | |
| \func{virtual void}{InitParser}{\param{const wxString\& }{source}}
 | |
| 
 | |
| Setups the parser for parsing the {\it source} string. (Should be overriden
 | |
| in derived class)
 | |
| 
 | |
| \membersection{wxHtmlParser::DoneParser}\label{wxhtmlparserdoneparser}
 | |
| 
 | |
| \func{virtual void}{DoneParser}{\void}
 | |
| 
 | |
| This must be called after DoParsing().
 | |
| 
 | |
| \membersection{wxHtmlParser::DoParsing}\label{wxhtmlparserdoparsing}
 | |
| 
 | |
| \func{void}{DoParsing}{\param{int }{begin\_pos}, \param{int }{end\_pos}}
 | |
| 
 | |
| \func{void}{DoParsing}{\void}
 | |
| 
 | |
| Parses the m\_Source from begin\_pos to end\_pos-1.
 | |
| (in noparams version it parses whole m\_Source)
 | |
| 
 | |
| \membersection{wxHtmlParser::GetProduct}\label{wxhtmlparsergetproduct}
 | |
| 
 | |
| \func{virtual wxObject*}{GetProduct}{\void}
 | |
| 
 | |
| Returns product of parsing. Returned value is result of parsing
 | |
| of the document. The type of this result depends on internal
 | |
| representation in derived parser (but it must be derived from wxObject!).
 | |
| 
 | |
| See wxHtmlWinParser for details.
 | |
| 
 | |
| \membersection{wxHtmlParser::AddTagHandler}\label{wxhtmlparseraddtaghandler}
 | |
| 
 | |
| \func{virtual void}{AddTagHandler}{\param{wxHtmlTagHandler }{*handler}}
 | |
| 
 | |
| Adds handler to the internal list (\& hash table) of handlers. This
 | |
| method should not be called directly by user but rather by derived class'
 | |
| constructor.
 | |
| 
 | |
| This adds the handler to this {\bf instance} of wxHtmlParser, not to
 | |
| all objects of this class! (Static front-end to AddTagHandler is provided
 | |
| by wxHtmlWinParser).
 | |
| 
 | |
| All handlers are deleted on object deletion.
 | |
| 
 | |
| \membersection{wxHtmlParser::GetSource}\label{wxhtmlparsergetsource}
 | |
| 
 | |
| \func{wxString*}{GetSource}{\void}
 | |
| 
 | |
| Returns pointer to the source being parsed.
 | |
| 
 | |
| \membersection{wxHtmlParser::GetTempData}\label{wxhtmlparsergettempdata}
 | |
| 
 | |
| \func{virtual wxList*}{GetTempData}{\void}
 | |
| 
 | |
| This method returns list of wxObjects that represents
 | |
| all data allocated by the parser. These can't be freed
 | |
| by the destructor because they must be valid as long as
 | |
| GetProduct's return value is valid - the caller must
 | |
| explicitly call
 | |
| 
 | |
| \begin{verbatim}
 | |
| delete (MyParser -> GetTempData());
 | |
| \end{verbatim}
 | |
| 
 | |
| to free the memory (this method always sets the list to delete its contents).
 | |
| 
 | |
| \wxheading{Example}
 | |
| 
 | |
| Why is this neccessary? Imagine wxHtmlWinParser: when handling
 | |
| a FONT tag it creates some fonts. These fonts are then used by wxHtmlWindow
 | |
| to display the text. But the wxHtmWinParser object is needed only when parsing
 | |
| the document - it may be deleted then. But fonts CAN'T be deleted - they
 | |
| must exist as long as the window is displaying text.
 | |
| 
 | |
| GetTempData() solves the problem.
 | |
| 
 | |
| \membersection{wxHtmlParser::AddText}\label{wxhtmlparseraddword}
 | |
| 
 | |
| \func{virtual void}{AddWord}{\param{const char* }{txt}}
 | |
| 
 | |
| Must be overwriten in derived class.
 | |
| 
 | |
| This method is called by \helpref{DoParsing}{wxhtmlparserdoparsing}
 | |
| each time a part of text is parsed. {\it txt} is NOT only one word, it is
 | |
| substring of input. It is not formatted or preprocessed (so white spaces are
 | |
| unmodified).
 | |
| 
 | |
| \membersection{wxHtmlParser::AddTag}\label{wxhtmlparseraddtag}
 | |
| 
 | |
| \func{void}{AddTag}{\param{const wxHtmlTag\& }{tag}}
 | |
| 
 | |
| This may (and may not) be overwriten in derived class.
 | |
| 
 | |
| This method is called each time new tag is about to be added. 
 | |
| {\it tag} contains information about the tag. (See \helpref{wxHtmlTag}{wxhtmltag}
 | |
| for details.)
 | |
| 
 | |
| Default (wxHtmlParser) behaviour is this:
 | |
| First it finds a handler capable of handling this tag and then it calls
 | |
| handler's HandleTag method.
 | |
| 
 |