#ifndef MARKUP_PARSER_H
#define MARKUP_PARSER_H
#include "TextDocument.h"
class MarkupParser {
public:
MarkupParser();
MarkupParser(
const CharacterStyle& characterStyle,
const ParagraphStyle& paragraphStyle);
void SetStyles(
const CharacterStyle& characterStyle,
const ParagraphStyle& paragraphStyle);
const CharacterStyle& HeadingCharacterStyle() const
{ return fHeadingStyle; }
const ParagraphStyle& HeadingParagraphStyle() const
{ return fHeadingParagraphStyle; }
const CharacterStyle& NormalCharacterStyle() const
{ return fNormalStyle; }
const ParagraphStyle& NormalParagraphStyle() const
{ return fParagraphStyle; }
TextDocumentRef CreateDocumentFromMarkup(const BString& text);
void AppendMarkup(const TextDocumentRef& document,
const BString& text);
private:
void _InitStyles();
void _ParseText(const BString& text);
void _CopySpan(const BString& text,
int32& start, int32 end);
void _ToggleStyle(const CharacterStyle& style);
void _FinishParagraph(bool isLast);
private:
CharacterStyle fNormalStyle;
CharacterStyle fBoldStyle;
CharacterStyle fItalicStyle;
CharacterStyle fBoldItalicStyle;
CharacterStyle fHeadingStyle;
ParagraphStyle fParagraphStyle;
ParagraphStyle fHeadingParagraphStyle;
ParagraphStyle fBulletStyle;
const CharacterStyle* fCurrentCharacterStyle;
const ParagraphStyle* fCurrentParagraphStyle;
TextDocumentRef fTextDocument;
Paragraph fCurrentParagraph;
int32 fSpanStartOffset;
};
#endif