// Author: Vaclav Slavik
// RCS-ID: $Id$
// Copyright: (c) 1999 Vaclav Slavik
-// Licence: wxWidgets Licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
-
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "htmlpars.h"
-#endif
-
#include "wx/wxprec.h"
#include "wx/defs.h"
#include "wx/app.h"
WX_CHECK_BUILD_OPTIONS("wxHTML")
+const wxChar *wxTRACE_HTML_DEBUG = _T("htmldebug");
+
//-----------------------------------------------------------------------------
// wxHtmlParser helpers
//-----------------------------------------------------------------------------
};
WX_DECLARE_OBJARRAY(wxHtmlTextPiece, wxHtmlTextPieces);
-WX_DEFINE_OBJARRAY(wxHtmlTextPieces);
+WX_DEFINE_OBJARRAY(wxHtmlTextPieces)
class wxHtmlParserState
{
void wxHtmlParser::InitParser(const wxString& source)
{
SetSource(source);
- m_stopParsing = FALSE;
+ m_stopParsing = false;
}
void wxHtmlParser::DoneParser()
// add another tag to the tree:
else if (i < end_pos-1 && m_Source.GetChar(i+1) != wxT('/'))
- {
+ {
wxHtmlTag *chd;
if (cur)
chd = new wxHtmlTag(cur, m_Source,
}
else
i = chd->GetBeginPos();
-
+
textBeginning = i;
}
}
else if (m_CurTag)
{
- // Add tag:
- if (m_CurTag)
- {
- if (m_CurTag->HasEnding())
- begin_pos = m_CurTag->GetEndPos2();
- else
- begin_pos = m_CurTag->GetBeginPos();
- }
+ if (m_CurTag->HasEnding())
+ begin_pos = m_CurTag->GetEndPos2();
+ else
+ begin_pos = m_CurTag->GetBeginPos();
wxHtmlTag *t = m_CurTag;
m_CurTag = m_CurTag->GetNextTag();
AddTag(*t);
void wxHtmlParser::AddTag(const wxHtmlTag& tag)
{
wxHtmlTagHandler *h;
- bool inner = FALSE;
+ bool inner = false;
h = (wxHtmlTagHandler*) m_HandlersHash.Get(tag.GetName());
if (h)
handler->SetParser(this);
}
-void wxHtmlParser::PushTagHandler(wxHtmlTagHandler *handler, wxString tags)
+void wxHtmlParser::PushTagHandler(wxHtmlTagHandler *handler, const wxString& tags)
{
wxStringTokenizer tokenizer(tags, wxT(", "));
wxString key;
bool wxHtmlParser::RestoreState()
{
- if (!m_SavedStates) return FALSE;
+ if (!m_SavedStates) return false;
DestroyDOMTree();
m_Source = s->m_source;
delete s;
- return TRUE;
+ return true;
}
//-----------------------------------------------------------------------------
const wxChar *c, *last;
const wxChar *in_str = input.c_str();
wxString output;
-
+
output.reserve(input.length());
for (c = in_str, last = in_str; *c != wxT('\0'); c++)
if (c - last > 0)
output.append(last, c - last);
if (++c == wxT('\0')) break;
-
+
wxString entity;
const wxChar *ent_s = c;
wxChar entity_char;
-
+
for (; (*c >= wxT('a') && *c <= wxT('z')) ||
(*c >= wxT('A') && *c <= wxT('Z')) ||
(*c >= wxT('0') && *c <= wxT('9')) ||
else
{
output.append(ent_s-1, c-ent_s+2);
- wxLogDebug(wxT("Unrecognized HTML entity: '%s'"), entity.c_str());
+ wxLogTrace(wxTRACE_HTML_DEBUG,
+ wxT("Unrecognized HTML entity: '%s'"),
+ entity.c_str());
}
}
}
return GetCharForCode(code);
}
-wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type),
+wxFSFile *wxHtmlParser::OpenURL(wxHtmlURLType WXUNUSED(type),
const wxString& url) const
{
return m_FS ? m_FS->OpenFile(url) : NULL;
-
+
}
if (tag.GetName() == _T("BODY"))
{
m_Parser->StopParsing();
- return FALSE;
+ return false;
}
if (tag.HasParam(_T("HTTP-EQUIV")) &&
m_Parser->StopParsing();
}
}
- return FALSE;
+ return false;
}
wxString wxHtmlParser::ExtractCharsetInformation(const wxString& markup)
{
wxString charset;
- wxMetaTagParser parser;
- parser.AddTagHandler(new wxMetaTagHandler(&charset));
- parser.Parse(markup);
+ wxMetaTagParser *parser = new wxMetaTagParser();
+ if(parser)
+ {
+ parser->AddTagHandler(new wxMetaTagHandler(&charset));
+ parser->Parse(markup);
+ delete parser;
+ }
return charset;
}