| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/private/markupparser.h
 
- // Purpose:     Classes for parsing simple markup.
 
- // Author:      Vadim Zeitlin
 
- // Created:     2011-02-16
 
- // Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_PRIVATE_MARKUPPARSER_H_
 
- #define _WX_PRIVATE_MARKUPPARSER_H_
 
- #include "wx/string.h"
 
- // ----------------------------------------------------------------------------
 
- // wxMarkupSpanAttributes: information about attributes for a markup span.
 
- // ----------------------------------------------------------------------------
 
- struct wxMarkupSpanAttributes
 
- {
 
-     enum OptionalBool
 
-     {
 
-         Unspecified = -1,
 
-         No,
 
-         Yes
 
-     };
 
-     wxMarkupSpanAttributes()
 
-     {
 
-         m_sizeKind = Size_Unspecified;
 
-         m_isBold =
 
-         m_isItalic =
 
-         m_isUnderlined =
 
-         m_isStrikethrough = Unspecified;
 
-     }
 
-     // If a string is empty, it means that the corresponding attribute is not
 
-     // set.
 
-     wxString m_fgCol,
 
-              m_bgCol,
 
-              m_fontFace;
 
-     // There are many ways of specifying the size. First of all, the size may
 
-     // be relative in which case m_fontSize is either -1 or +1 meaning that
 
-     // it's one step smaller or larger than the current font. Second, it may be
 
-     // absolute in which case m_fontSize contains either the size in 1024th of
 
-     // a point (Pango convention) or its values are in [-3, 3] interval and map
 
-     // to [xx-small, xx-large] CSS-like font size specification. And finally it
 
-     // may be not specified at all, of course, in which case the value of
 
-     // m_fontSize doesn't matter and it shouldn't be used.
 
-     enum
 
-     {
 
-         Size_Unspecified,
 
-         Size_Relative,
 
-         Size_Symbolic,
 
-         Size_PointParts
 
-     } m_sizeKind;
 
-     int m_fontSize;
 
-     // If the value is Unspecified, the attribute wasn't given.
 
-     OptionalBool m_isBold,
 
-                  m_isItalic,
 
-                  m_isUnderlined,
 
-                  m_isStrikethrough;
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxMarkupParserOutput: gathers the results of parsing markup.
 
- // ----------------------------------------------------------------------------
 
- // A class deriving directly from this one needs to implement all the pure
 
- // virtual functions below but as the handling of all simple tags (bold, italic
 
- // &c) is often very similar, it is usually more convenient to inherit from
 
- // wxMarkupParserFontOutput defined in wx/private/markupparserfont.h instead.
 
- class wxMarkupParserOutput
 
- {
 
- public:
 
-     wxMarkupParserOutput() { }
 
-     virtual ~wxMarkupParserOutput() { }
 
-     // Virtual functions called by wxMarkupParser while parsing the markup.
 
-     // Called for a run of normal text.
 
-     virtual void OnText(const wxString& text) = 0;
 
-     // These functions correspond to the simple tags without parameters.
 
-     virtual void OnBoldStart() = 0;
 
-     virtual void OnBoldEnd() = 0;
 
-     virtual void OnItalicStart() = 0;
 
-     virtual void OnItalicEnd() = 0;
 
-     virtual void OnUnderlinedStart() = 0;
 
-     virtual void OnUnderlinedEnd() = 0;
 
-     virtual void OnStrikethroughStart() = 0;
 
-     virtual void OnStrikethroughEnd() = 0;
 
-     virtual void OnBigStart() = 0;
 
-     virtual void OnBigEnd() = 0;
 
-     virtual void OnSmallStart() = 0;
 
-     virtual void OnSmallEnd() = 0;
 
-     virtual void OnTeletypeStart() = 0;
 
-     virtual void OnTeletypeEnd() = 0;
 
-     // The generic span start and end functions.
 
-     virtual void OnSpanStart(const wxMarkupSpanAttributes& attrs) = 0;
 
-     virtual void OnSpanEnd(const wxMarkupSpanAttributes& attrs) = 0;
 
- private:
 
-     wxDECLARE_NO_COPY_CLASS(wxMarkupParserOutput);
 
- };
 
- // ----------------------------------------------------------------------------
 
- // wxMarkupParser: parses the given markup text into wxMarkupParserOutput.
 
- // ----------------------------------------------------------------------------
 
- class WXDLLIMPEXP_CORE wxMarkupParser
 
- {
 
- public:
 
-     // Initialize the parser with the object that will receive parsing results.
 
-     // This object lifetime must be greater than ours.
 
-     explicit wxMarkupParser(wxMarkupParserOutput& output)
 
-         : m_output(output)
 
-     {
 
-     }
 
-     // Parse the entire string and call wxMarkupParserOutput methods.
 
-     //
 
-     // Return true if the string was successfully parsed or false if it failed
 
-     // (presumably because of syntax errors in the markup).
 
-     bool Parse(const wxString& text);
 
-     // Quote a normal string, not meant to be interpreted as markup, so that it
 
-     // produces the same string when parsed as markup. This means, for example,
 
-     // replacing '<' in the input string with "<" to prevent them from being
 
-     // interpreted as tag opening characters.
 
-     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:
 
-     // Simple struct combining the name of a tag and its attributes.
 
-     struct TagAndAttrs
 
-     {
 
-         TagAndAttrs(const wxString& name_) : name(name_) { }
 
-         wxString name;
 
-         wxMarkupSpanAttributes attrs;
 
-     };
 
-     // Call the wxMarkupParserOutput method corresponding to the given tag.
 
-     //
 
-     // Return false if the tag doesn't match any of the known ones.
 
-     bool OutputTag(const TagAndAttrs& tagAndAttrs, bool start);
 
-     // Parse the attributes and fill the provided TagAndAttrs object with the
 
-     // information about them. Does nothing if attrs string is empty.
 
-     //
 
-     // Returns empty string on success of a [fragment of an] error message if
 
-     // we failed to parse the attributes.
 
-     wxString ParseAttrs(wxString attrs, TagAndAttrs& tagAndAttrs);
 
-     wxMarkupParserOutput& m_output;
 
-     wxDECLARE_NO_COPY_CLASS(wxMarkupParser);
 
- };
 
- #endif // _WX_PRIVATE_MARKUPPARSER_H_
 
 
  |