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