/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2014, Tomasz Sowa * All rights reserved. * */ #ifndef headerfile_winix_core_bbcodeparser #define headerfile_winix_core_bbcodeparser #include "htmlfilter.h" namespace Winix { class BBCODEParser : public HTMLFilter { struct Tags { const wchar_t * bbcode; const wchar_t * html_tag; const wchar_t * html_argument; // with closing '>' bool inline_tag; }; /* virtual methods (from HTMLFilter class) */ virtual void Init(); virtual void Uninit(); virtual bool IsOpeningTagMark(); virtual bool IsOpeningCommentaryTagMark(); virtual bool IsClosingTagMark(); virtual bool IsClosingXmlSimpleTagMark(); virtual bool IsValidCharForName(int c); virtual void CheckExceptions(); virtual bool SkipCommentaryTagIfExists(); virtual bool PutOpeningTag(); virtual void PutClosingTag(const wchar_t * tag); virtual void PutNormalText(const wchar_t * str, const wchar_t * end); virtual void ReadNormalTextSkipWhite(const wchar_t * & start, const wchar_t * & last_non_white); /* others */ bool Equal(const wchar_t * str1, const wchar_t * str2); void PutHtmlArgument1(const wchar_t * arg_start, const wchar_t * arg_end, bool has_u); void PutHtmlArgument2(const Tags * tag, bool has_u); void PutHtmlArgument(const Tags * tag, const wchar_t * arg_start, const wchar_t * arg_end); void PutOpeningTagFromEzc(); void PutOpeningTagFromBBCode(const Tags * tag); const Tags * FindTag(const wchar_t * tag); const Tags * FindTag(const std::wstring & tag); void PrintArgumentCheckQuotes(const wchar_t * & start, const wchar_t * & end); void PrintEscape(int c, bool change_quote = false); void PrintEncode(int c); void PrintEscape(const wchar_t * start, const wchar_t * end, bool change_quote = false); void PrintEncode(const wchar_t * start, const wchar_t * end); void PrintArgumentEncode(const wchar_t * start, const wchar_t * end); void PrintArgumentEscape(const wchar_t * start, const wchar_t * end); void PutClosingTag(const Tags * tag); void CheckOpeningTag(const Tags * tag, const wchar_t * tag_name, bool & condition); void CheckOpeningTag(const Tags * tag); void TrimWhiteWithNewLines(const wchar_t * & start, const wchar_t * & end); bool has_open_ol_tag; // has open html
    tag bool has_open_ul_tag; // has open html