Add wxMarkupParser::Strip().
This helper function strips all markup tags from the string (and also decodes the XML entities in it). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67049 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
9bb9964e26
commit
5eb051a73b
@ -136,6 +136,11 @@ public:
|
|||||||
// interpreted as tag opening characters.
|
// interpreted as tag opening characters.
|
||||||
static wxString Quote(const wxString& text);
|
static wxString Quote(const wxString& text);
|
||||||
|
|
||||||
|
// Strip markup from a string, i.e. simply remove all tags and replace
|
||||||
|
// XML entities with their values (or with "&&" in case of "&" to
|
||||||
|
// prevent it from being interpreted as mnemonic marker).
|
||||||
|
static wxString Strip(const wxString& text);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Simple struct combining the name of a tag and its attributes.
|
// Simple struct combining the name of a tag and its attributes.
|
||||||
struct TagAndAttrs
|
struct TagAndAttrs
|
||||||
|
@ -425,3 +425,51 @@ wxString wxMarkupParser::Quote(const wxString& text)
|
|||||||
|
|
||||||
return quoted;
|
return quoted;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* static */
|
||||||
|
wxString wxMarkupParser::Strip(const wxString& text)
|
||||||
|
{
|
||||||
|
class StripOutput : public wxMarkupParserOutput
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
StripOutput() { }
|
||||||
|
|
||||||
|
const wxString& GetText() const { return m_text; }
|
||||||
|
|
||||||
|
virtual void OnText(const wxString& text) { m_text += text; }
|
||||||
|
|
||||||
|
virtual void OnBoldStart() { }
|
||||||
|
virtual void OnBoldEnd() { }
|
||||||
|
|
||||||
|
virtual void OnItalicStart() { }
|
||||||
|
virtual void OnItalicEnd() { }
|
||||||
|
|
||||||
|
virtual void OnUnderlinedStart() { }
|
||||||
|
virtual void OnUnderlinedEnd() { }
|
||||||
|
|
||||||
|
virtual void OnStrikethroughStart() { }
|
||||||
|
virtual void OnStrikethroughEnd() { }
|
||||||
|
|
||||||
|
virtual void OnBigStart() { }
|
||||||
|
virtual void OnBigEnd() { }
|
||||||
|
|
||||||
|
virtual void OnSmallStart() { }
|
||||||
|
virtual void OnSmallEnd() { }
|
||||||
|
|
||||||
|
virtual void OnTeletypeStart() { }
|
||||||
|
virtual void OnTeletypeEnd() { }
|
||||||
|
|
||||||
|
virtual void OnSpanStart(const wxMarkupSpanAttributes& WXUNUSED(a)) { }
|
||||||
|
virtual void OnSpanEnd(const wxMarkupSpanAttributes& WXUNUSED(a)) { }
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxString m_text;
|
||||||
|
};
|
||||||
|
|
||||||
|
StripOutput output;
|
||||||
|
wxMarkupParser parser(output);
|
||||||
|
if ( !parser.Parse(text) )
|
||||||
|
return wxString();
|
||||||
|
|
||||||
|
return output.GetText();
|
||||||
|
}
|
||||||
|
@ -27,10 +27,12 @@ private:
|
|||||||
CPPUNIT_TEST_SUITE( MarkupTestCase );
|
CPPUNIT_TEST_SUITE( MarkupTestCase );
|
||||||
CPPUNIT_TEST( RoundTrip );
|
CPPUNIT_TEST( RoundTrip );
|
||||||
CPPUNIT_TEST( Quote );
|
CPPUNIT_TEST( Quote );
|
||||||
|
CPPUNIT_TEST( Strip );
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
|
|
||||||
void RoundTrip();
|
void RoundTrip();
|
||||||
void Quote();
|
void Quote();
|
||||||
|
void Strip();
|
||||||
|
|
||||||
wxDECLARE_NO_COPY_CLASS(MarkupTestCase);
|
wxDECLARE_NO_COPY_CLASS(MarkupTestCase);
|
||||||
};
|
};
|
||||||
@ -196,3 +198,23 @@ void MarkupTestCase::Quote()
|
|||||||
CPPUNIT_ASSERT_EQUAL( "B&B", wxMarkupParser::Quote("B&B") );
|
CPPUNIT_ASSERT_EQUAL( "B&B", wxMarkupParser::Quote("B&B") );
|
||||||
CPPUNIT_ASSERT_EQUAL( """", wxMarkupParser::Quote("\"\"") );
|
CPPUNIT_ASSERT_EQUAL( """", wxMarkupParser::Quote("\"\"") );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MarkupTestCase::Strip()
|
||||||
|
{
|
||||||
|
#define CHECK_STRIP( text, stripped ) \
|
||||||
|
CPPUNIT_ASSERT_EQUAL( stripped, wxMarkupParser::Strip(text) )
|
||||||
|
|
||||||
|
CHECK_STRIP( "", "" );
|
||||||
|
CHECK_STRIP( "foo", "foo" );
|
||||||
|
CHECK_STRIP( "<foo>", "<foo>" );
|
||||||
|
CHECK_STRIP( "<b>Big</b> problem", "Big problem" );
|
||||||
|
CHECK_STRIP( "<span foreground=\"red\">c</span>"
|
||||||
|
"<span background=\"green\">o</span>"
|
||||||
|
"<span background=\"blue\">l</span>"
|
||||||
|
"<span background=\"green\">o</span>"
|
||||||
|
"<span foreground=\"yellow\">u</span>"
|
||||||
|
"<span background=\"green\">r</span>",
|
||||||
|
"colour" );
|
||||||
|
|
||||||
|
#undef CHECK_STRIP
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user