FictionBook2BlockContext.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libe-book project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef FICTIONBOOK2BLOCKCONTEXT_H_INCLUDED
11 #define FICTIONBOOK2BLOCKCONTEXT_H_INCLUDED
12 
13 #include <string>
14 
15 #include <boost/optional.hpp>
16 
18 
19 namespace libebook
20 {
21 
23 {
24 public:
26 
27 private:
29  void startOfElement() override;
30  void endOfElement() override;
31  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
32 
33 private:
34  boost::optional<std::string> m_lang;
35 };
36 
38 {
39 public:
41 
42 private:
44  void endOfElement() override;
45  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
46 };
47 
49 {
50 public:
52 
53 private:
54  void endOfElement() override;
55  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
56 };
57 
59 {
60 public:
62 
63 private:
65  void endOfElement() override;
66  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
67 };
68 
70 {
71 public:
73 
74 private:
76  void endOfElement() override;
77  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
78 
79 private:
80  std::string m_href;
81  std::string m_altText;
82  bool m_valid;
83 };
84 
86 {
87 public:
89 
90 private:
92  void startOfElement() override;
93  void endOfElement() override;
94  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
95 };
96 
98 {
99 public:
100  FictionBook2SectionContext(FictionBook2ParserContext *parentContext, const boost::optional<std::string> &lang);
101  FictionBook2SectionContext(FictionBook2ParserContext *parentContext, uint8_t level, const boost::optional<std::string> &lang);
102 
103 private:
105  void endOfElement() override;
106  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
107 
109 
110 private:
111  // The level of the section. A section directly in body is at level 1.
112  boost::optional<uint8_t> m_level;
113  boost::optional<std::string> m_lang;
114 };
115 
117 {
118 public:
120 
121 private:
123  void endOfElement() override;
124  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
125 };
126 
128 {
129 public:
131 
132 private:
134  void endOfElement() override;
135  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
136 };
137 
138 }
139 
140 #endif // FICTIONBOOK2BLOCKCONTEXT_H_INCLUDED
141 
142 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libebook::FictionBook2Token::cite
@ cite
Definition: FictionBook2Token.h:42
libebook::FictionBook2AnnotationContext
Definition: FictionBook2MetadataContext.h:22
libebook::FictionBook2CiteContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:97
libebook::FictionBook2Token::stanza
@ stanza
Definition: FictionBook2Token.h:81
libebook::FictionBook2DataContextBase
Base class for leaf data element contexts.
Definition: FictionBook2ParserContext.h:81
libebook::FictionBook2BodyContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:26
libebook::FictionBook2Token::title
@ title
Definition: FictionBook2Token.h:93
libebook::FictionBook2Collector::insertText
virtual void insertText(const char *text)=0
libebook::FictionBook2TitleContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:444
libebook::FictionBook2Token::id
@ id
Definition: FictionBook2Token.h:59
libebook::FictionBook2PoemContext::FictionBook2PoemContext
FictionBook2PoemContext(FictionBook2ParserContext *parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:251
libebook::FictionBook2Collector::closePageSpan
virtual void closePageSpan()=0
libebook::FictionBook2SectionContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:364
libebook::FictionBook2PoemContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:287
libebook::FictionBook2Collector::openPageSpan
virtual void openPageSpan()=0
libebook::FictionBook2Collector::insertBitmap
virtual void insertBitmap(const char *id)=0
libebook::FictionBook2StanzaContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:408
libebook::FictionBook2BlockFormatContextBase::getBlockFormat
FictionBook2BlockFormat & getBlockFormat()
Definition: FictionBook2ParserContext.cpp:224
libebook::FictionBook2SectionContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:313
libebook::FictionBook2TitleContext
Definition: FictionBook2BlockContext.h:127
libebook::FictionBook2Collector::closeSpan
virtual void closeSpan()=0
FictionBook2Token.h
libebook::FictionBook2Token::NS_XLINK
@ NS_XLINK
Definition: FictionBook2Token.h:30
libebook::FictionBook2SectionContext
Definition: FictionBook2BlockContext.h:97
libebook::FictionBook2StanzaContext
Definition: FictionBook2BlockContext.h:116
libebook::EBOOKHTMLToken::get
@ get
Definition: EBOOKHTMLToken.h:283
libebook::FictionBook2Token::p
@ p
Definition: FictionBook2Token.h:69
libebook
Definition: BBeBCollector.cpp:18
libebook::FictionBook2Collector::defineID
virtual void defineID(const char *id)=0
libebook::FictionBook2TextAuthorContext
Definition: FictionBook2TextContext.h:149
FictionBook2BlockContext.h
value
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
libebook::FictionBook2TitleContext::FictionBook2TitleContext
FictionBook2TitleContext(FictionBook2ParserContext *const parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:420
libebook::FictionBook2Collector::openSpan
virtual void openSpan(const FictionBook2Style &style)=0
libebook::FictionBook2Token::poem
@ poem
Definition: FictionBook2Token.h:71
libebook::FictionBook2PContext
Definition: FictionBook2TextContext.h:86
libebook::FictionBook2Token::annotation
@ annotation
Definition: FictionBook2Token.h:36
libebook::FictionBook2Token::NS_FICTIONBOOK
@ NS_FICTIONBOOK
Definition: FictionBook2Token.h:29
libebook::FictionBook2BodyContext
Definition: FictionBook2BlockContext.h:22
libebook::FictionBook2EpigraphContext
Definition: FictionBook2BlockContext.h:58
libebook::FictionBook2Token::href
@ href
Definition: FictionBook2Token.h:108
libebook::FictionBook2BlockFormatContextBase
Definition: FictionBook2ParserContext.h:151
libebook::FictionBook2CiteContext::FictionBook2CiteContext
FictionBook2CiteContext(FictionBook2ParserContext *parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:68
libebook::FictionBook2SectionContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:359
libebook::FictionBook2EpigraphContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:157
libebook::FictionBook2BodyContext::FictionBook2BodyContext
FictionBook2BodyContext(FictionBook2ParserContext *parentContext, FictionBook2Collector *collector)
Definition: FictionBook2BlockContext.cpp:20
FictionBook2ParserContext.h
libebook::FictionBook2SectionContext::makeBlockFormat
FictionBook2BlockFormat makeBlockFormat() const
Definition: FictionBook2BlockContext.cpp:372
libebook::FictionBook2ParserContext::getCollector
FictionBook2Collector * getCollector() const
Get the collector.
Definition: FictionBook2ParserContext.cpp:31
libebook::FictionBook2ImageContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:171
libebook::FictionBook2Token::empty_line
@ empty_line
Definition: FictionBook2Token.h:52
libebook::FictionBook2BodyContext::startOfElement
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2BlockContext.cpp:52
FictionBook2TableContext.h
libebook::FictionBook2BodyContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:57
FictionBook2_NO_NAMESPACE
#define FictionBook2_NO_NAMESPACE(ns)
Definition: FictionBook2Token.h:18
libebook::FictionBook2Token::date
@ date
Definition: FictionBook2Token.h:47
libebook::FictionBook2Token::text_author
@ text_author
Definition: FictionBook2Token.h:91
libebook::FictionBook2Collector::closeParagraph
virtual void closeParagraph()=0
libebook::FictionBook2NodeContextBase
Base class for non-leaf element contexts.
Definition: FictionBook2ParserContext.h:61
libebook::FictionBook2Token::image
@ image
Definition: FictionBook2Token.h:60
libebook::FictionBook2StanzaContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:414
libebook::FictionBook2SkipElementContext
Context for skipping element hierarchies.
Definition: FictionBook2ParserContext.h:113
libebook::FictionBook2ImageContext::FictionBook2ImageContext
FictionBook2ImageContext(FictionBook2ParserContext *parentContext)
Definition: FictionBook2BlockContext.cpp:163
libebook::FictionBook2XMLParserContext
Definition: FictionBook2XMLParserContext.h:18
libebook::FictionBook2Token::alt
@ alt
Definition: FictionBook2Token.h:103
libebook::FictionBook2Token::NS_XML
@ NS_XML
Definition: FictionBook2Token.h:31
libebook::FictionBook2VContext
Definition: FictionBook2TextContext.h:158
libebook::FictionBook2EmptyLineContext
Definition: FictionBook2BlockContext.h:48
libebook::FictionBook2Token::simple
@ simple
Definition: FictionBook2Token.h:124
libebook::FictionBook2Token::lang
@ lang
Definition: FictionBook2Token.h:63
libebook::FictionBook2Token::section
@ section
Definition: FictionBook2Token.h:75
libebook::FictionBook2Collector
Definition: FictionBook2Collector.h:22
libebook::FictionBook2TableContext
Definition: FictionBook2TableContext.h:22
libebook::FictionBook2ParserContext
Base class for all contexts.
Definition: FictionBook2ParserContext.h:23
libebook::FictionBook2EpigraphContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:129
libebook::FictionBook2Token::subtitle
@ subtitle
Definition: FictionBook2Token.h:87
libebook::FictionBook2Token::table
@ table
Definition: FictionBook2Token.h:89
libebook::FictionBook2EpigraphContext::FictionBook2EpigraphContext
FictionBook2EpigraphContext(FictionBook2ParserContext *parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:124
libebook::getFictionBook2TokenID
int getFictionBook2TokenID(const FictionBook2TokenData &token)
Definition: FictionBook2Token.cpp:50
libebook::FictionBook2EmptyLineContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:120
libebook::FictionBook2ImageContext::m_valid
bool m_valid
Definition: FictionBook2BlockContext.h:82
FictionBook2Collector.h
libebook::FictionBook2ImageContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:186
libebook::FictionBook2BlockFormat::stanza
bool stanza
Definition: FictionBook2Style.h:45
libebook::FictionBook2BodyContext::m_lang
boost::optional< std::string > m_lang
Definition: FictionBook2BlockContext.h:34
name
string name
Definition: HTMLHelpStream.cpp:80
libebook::FictionBook2BlockFormatContextBase::setLang
void setLang(const char *lang)
Definition: FictionBook2ParserContext.cpp:234
libebook::EBOOKHTMLToken::lang
@ lang
Definition: EBOOKHTMLToken.h:205
libebook::FictionBook2Style
Definition: FictionBook2Style.h:55
libebook::EBOOKOPFToken::format
@ format
Definition: EBOOKOPFToken.h:54
libebook::FictionBook2PoemContext::startOfElement
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2BlockContext.cpp:281
libebook::FictionBook2EpigraphContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:153
libebook::FictionBook2SectionContext::FictionBook2SectionContext
FictionBook2SectionContext(FictionBook2ParserContext *parentContext, const boost::optional< std::string > &lang)
Definition: FictionBook2BlockContext.cpp:299
libebook::FictionBook2TokenData
Definition: FictionBook2Token.h:133
libebook::FictionBook2ImageContext
Definition: FictionBook2BlockContext.h:69
libebook::FictionBook2EmptyLineContext::endOfElement
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:114
FictionBook2TextContext.h
libebook::FictionBook2CiteContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:73
libebook::FictionBook2PoemContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:291
FictionBook2MetadataContext.h
libebook::FictionBook2TitleContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:449
libebook::FictionBook2BlockFormat
Definition: FictionBook2Style.h:35
libebook::FictionBook2StanzaContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:388
libebook::FictionBook2BlockFormat::title
bool title
Definition: FictionBook2Style.h:49
libebook::FictionBook2Token::v
@ v
Definition: FictionBook2Token.h:97
libebook::FictionBook2Token::epigraph
@ epigraph
Definition: FictionBook2Token.h:53
libebook::FictionBook2PoemContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:256
libebook::FictionBook2EmptyLineContext::FictionBook2EmptyLineContext
FictionBook2EmptyLineContext(FictionBook2ParserContext *parentContext)
Definition: FictionBook2BlockContext.cpp:109
libebook::FictionBook2SubtitleContext
Definition: FictionBook2TextContext.h:131
libebook::FictionBook2Token::type
@ type
Definition: FictionBook2Token.h:118
libebook::FictionBook2CiteContext
Definition: FictionBook2BlockContext.h:37
libebook::FictionBook2ImageContext::m_altText
std::string m_altText
Definition: FictionBook2BlockContext.h:81
libebook::FictionBook2ImageContext::m_href
std::string m_href
Definition: FictionBook2BlockContext.h:80
libebook::FictionBook2TitleContext::element
FictionBook2XMLParserContext * element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:426
libebook::FictionBook2BodyContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:62
libebook::FictionBook2CiteContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:101
libebook::FictionBook2Collector::openParagraph
virtual void openParagraph(const FictionBook2BlockFormat &format)=0
libebook::FictionBook2SectionContext::m_lang
boost::optional< std::string > m_lang
Definition: FictionBook2BlockContext.h:113
libebook::FictionBook2SectionContext::m_level
boost::optional< uint8_t > m_level
Definition: FictionBook2BlockContext.h:112
libebook::FictionBook2ImageContext::attribute
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:216
libebook::FictionBook2PoemContext
Definition: FictionBook2BlockContext.h:85
libebook::FictionBook2StanzaContext::FictionBook2StanzaContext
FictionBook2StanzaContext(FictionBook2ParserContext *parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:382

Generated for libe-book by doxygen 1.8.17