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:
25  FictionBook2BodyContext(std::shared_ptr<FictionBook2ParserContext> parentContext, FictionBook2Collector *collector);
26 
27 private:
28  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
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:
40  FictionBook2CiteContext(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
41 
42 private:
43  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
44  void endOfElement() override;
45  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
46 };
47 
49 {
50 public:
51  explicit FictionBook2EmptyLineContext(std::shared_ptr<FictionBook2ParserContext> parentContext);
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:
61  FictionBook2EpigraphContext(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
62 
63 private:
64  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
65  void endOfElement() override;
66  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
67 };
68 
70 {
71 public:
72  FictionBook2ImageContext(std::shared_ptr<FictionBook2ParserContext> parentContext);
73 
74 private:
75  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
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:
88  FictionBook2PoemContext(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
89 
90 private:
91  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
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(std::shared_ptr<FictionBook2ParserContext> parentContext, const boost::optional<std::string> &lang);
101  FictionBook2SectionContext(std::shared_ptr<FictionBook2ParserContext> parentContext, uint8_t level, const boost::optional<std::string> &lang);
102 
103 private:
104  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
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:
119  FictionBook2StanzaContext(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
120 
121 private:
122  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
123  void endOfElement() override;
124  void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override;
125 };
126 
128 {
129 public:
130  FictionBook2TitleContext(std::shared_ptr<FictionBook2ParserContext> parentContext, const FictionBook2BlockFormat &format);
131 
132 private:
133  std::shared_ptr<FictionBook2XMLParserContext> element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override;
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: */
FictionBook2BlockFormat makeBlockFormat() const
Definition: FictionBook2BlockContext.cpp:372
Definition: FictionBook2BlockContext.h:127
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:97
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:114
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:287
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:364
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:129
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:73
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:186
FictionBook2SectionContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const boost::optional< std::string > &lang)
Definition: FictionBook2BlockContext.cpp:299
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:388
boost::optional< uint8_t > m_level
Definition: FictionBook2BlockContext.h:112
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2BlockContext.cpp:52
Definition: EBOOKHTMLToken.h:205
Definition: FictionBook2BlockContext.h:85
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:408
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:157
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:153
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:120
Definition: FictionBook2BlockContext.h:69
FictionBook2EpigraphContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:124
Definition: FictionBook2ParserContext.h:153
Definition: FictionBook2Style.h:35
FictionBook2ImageContext(std::shared_ptr< FictionBook2ParserContext > parentContext)
Definition: FictionBook2BlockContext.cpp:163
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:449
FictionBook2EmptyLineContext(std::shared_ptr< FictionBook2ParserContext > parentContext)
Definition: FictionBook2BlockContext.cpp:109
Definition: FictionBook2Token.h:133
FictionBook2CiteContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:68
Definition: FictionBook2BlockContext.h:58
FictionBook2BodyContext(std::shared_ptr< FictionBook2ParserContext > parentContext, FictionBook2Collector *collector)
Definition: FictionBook2BlockContext.cpp:20
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:414
std::string m_altText
Definition: FictionBook2BlockContext.h:81
const char * name
Definition: EBOOKHTMLToken.cpp:44
boost::optional< std::string > m_lang
Definition: FictionBook2BlockContext.h:34
std::string m_href
Definition: FictionBook2BlockContext.h:80
Definition: FictionBook2BlockContext.h:97
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:359
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:216
Base class for non-leaf element contexts.
Definition: FictionBook2ParserContext.h:63
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:57
bool m_valid
Definition: FictionBook2BlockContext.h:82
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:26
FictionBook2TitleContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:420
Definition: EBOOKOPFToken.h:54
Definition: FictionBook2BlockContext.h:116
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:426
void endOfElement() override
Signalize the end of an element.
Definition: FictionBook2BlockContext.cpp:444
Definition: FictionBook2Collector.h:22
Definition: BBeBCollector.cpp:19
qi::rule< Iterator, AttrValue_t, qi::space_type > value
Definition: TealDocParser.cpp:231
Definition: FictionBook2BlockContext.h:37
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:313
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:62
void startOfElement() override
Signalize the start of an element.
Definition: FictionBook2BlockContext.cpp:281
FictionBook2PoemContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:251
boost::optional< std::string > m_lang
Definition: FictionBook2BlockContext.h:113
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:256
FictionBook2StanzaContext(std::shared_ptr< FictionBook2ParserContext > parentContext, const FictionBook2BlockFormat &format)
Definition: FictionBook2BlockContext.cpp:382
std::shared_ptr< FictionBook2XMLParserContext > element(const FictionBook2TokenData &name, const FictionBook2TokenData &ns) override
Create a context for parsing a child element.
Definition: FictionBook2BlockContext.cpp:171
Base class for leaf data element contexts.
Definition: FictionBook2ParserContext.h:83
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:291
void attribute(const FictionBook2TokenData &name, const FictionBook2TokenData *ns, const char *value) override
Process an attribute.
Definition: FictionBook2BlockContext.cpp:101
Definition: FictionBook2BlockContext.h:22
Definition: FictionBook2BlockContext.h:48

Generated for libe-book by doxygen 1.8.10