FB2BlockContext.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 FB2BLOCKCONTEXT_H_INCLUDED
11 #define FB2BLOCKCONTEXT_H_INCLUDED
12 
13 #include <string>
14 
15 #include <boost/optional.hpp>
16 
17 #include "FB2ParserContext.h"
18 
19 namespace libebook
20 {
21 
23 {
24 public:
25  FB2BodyContext(FB2ParserContext *parentContext, FB2Collector *collector, bool collectHeadings);
26 
27 private:
28  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
29  virtual void startOfElement();
30  virtual void endOfElement();
31  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
32 
33 private:
34  const bool m_collectHeadings;
35  boost::optional<std::string> m_lang;
36 };
37 
39 {
40 public:
41  FB2CiteContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
42 
43 private:
44  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
45  virtual void endOfElement();
46  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
47 };
48 
50 {
51 public:
52  explicit FB2EmptyLineContext(FB2ParserContext *parentContext);
53 
54 private:
55  virtual void endOfElement();
56  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
57 };
58 
60 {
61 public:
63 
64 private:
65  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
66  virtual void endOfElement();
67  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
68 };
69 
71 {
72 public:
73  FB2ImageContext(FB2ParserContext *parentContext);
74 
75 private:
76  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
77  virtual void endOfElement();
78  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
79 
80 private:
81  std::string m_href;
82  std::string m_altText;
83  bool m_valid;
84 };
85 
87 {
88 public:
89  FB2PoemContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
90 
91 private:
92  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
93  virtual void startOfElement();
94  virtual void endOfElement();
95  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
96 };
97 
99 {
100 public:
101  FB2SectionContext(FB2ParserContext *parentContext, const boost::optional<std::string> &lang);
102  FB2SectionContext(FB2ParserContext *parentContext, uint8_t level, const boost::optional<std::string> &lang);
103 
104 private:
105  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
106  virtual void endOfElement();
107  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
108 
110 
111 private:
112  // The level of the section. A section directly in body is at level 1.
113  boost::optional<uint8_t> m_level;
114  boost::optional<std::string> m_lang;
115 };
116 
118 {
119 public:
120  FB2StanzaContext(FB2ParserContext *parentContext, const FB2BlockFormat &format);
121 
122 private:
123  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
124  virtual void endOfElement();
125  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
126 };
127 
129 {
130 public:
131  FB2TitleContext(FB2ParserContext *const parentContext, const FB2BlockFormat &format);
132 
133 private:
134  virtual FB2XMLParserContext *element(const FB2TokenData &name, const FB2TokenData &ns);
135  virtual void endOfElement();
136  virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value);
137 };
138 
139 }
140 
141 #endif // FB2BLOCKCONTEXT_H_INCLUDED
142 
143 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
libebook::FB2EpigraphContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:158
libebook::FB2EpigraphContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:162
libebook::FB2SubtitleContext
Definition: FB2TextContext.h:130
libebook::FB2Token::cite
@ cite
Definition: FB2Token.h:44
libebook::FB2PContext
Definition: FB2TextContext.h:85
libebook::FB2Token::lang
@ lang
Definition: FB2Token.h:65
libebook::FB2CiteContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:102
libebook::FB2PoemContext::startOfElement
virtual void startOfElement()
Signalize the start of an element.
Definition: FB2BlockContext.cpp:286
libebook::FB2BodyContext::startOfElement
virtual void startOfElement()
Signalize the start of an element.
Definition: FB2BlockContext.cpp:57
libebook::FB2StanzaContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:393
libebook::FB2Token::id
@ id
Definition: FB2Token.h:61
libebook::FB2StanzaContext
Definition: FB2BlockContext.h:118
libebook::FB2ImageContext::m_altText
std::string m_altText
Definition: FB2BlockContext.h:82
libebook::FB2Collector::openSpan
virtual void openSpan(const FB2Style &style)=0
libebook::FB2NodeContextBase
Base class for non-leaf element contexts.
Definition: FB2ParserContext.h:62
libebook::FB2DataContextBase
Base class for leaf data element contexts.
Definition: FB2ParserContext.h:82
libebook::FB2BodyContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:27
libebook::FB2Token::subtitle
@ subtitle
Definition: FB2Token.h:89
FB2TableContext.h
libebook::FB2Token::date
@ date
Definition: FB2Token.h:49
libebook::FB2Token::image
@ image
Definition: FB2Token.h:62
libebook::FB2BodyContext::FB2BodyContext
FB2BodyContext(FB2ParserContext *parentContext, FB2Collector *collector, bool collectHeadings)
Definition: FB2BlockContext.cpp:20
libebook::FB2EpigraphContext::FB2EpigraphContext
FB2EpigraphContext(FB2ParserContext *parentContext, const FB2BlockFormat &format)
Definition: FB2BlockContext.cpp:129
libebook::FB2BlockFormatContextBase::setLang
void setLang(const char *lang)
Definition: FB2ParserContext.cpp:234
libebook::FB2Token::section
@ section
Definition: FB2Token.h:77
libebook::FB2CiteContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:106
libebook::FB2ImageContext::m_valid
bool m_valid
Definition: FB2BlockContext.h:83
libebook::EBOOKHTMLToken::get
@ get
Definition: EBOOKHTMLToken.h:285
libebook::FB2SectionContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:369
libebook
Definition: CHMParser.cpp:21
libebook::FB2SkipElementContext
Context for skipping element hierarchies.
Definition: FB2ParserContext.h:114
libebook::FB2TextAuthorContext
Definition: FB2TextContext.h:148
libebook::FB2EmptyLineContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:125
libebook::FB2BodyContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:62
libebook::FB2TitleContext
Definition: FB2BlockContext.h:129
libebook::FB2ParserContext::getCollector
FB2Collector * getCollector() const
Get the collector.
Definition: FB2ParserContext.cpp:31
libebook::FB2Collector::closeSpan
virtual void closeSpan()=0
libebook::FB2StanzaContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:413
libebook::FB2PoemContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:292
libebook::FB2Token::href
@ href
Definition: FB2Token.h:110
libebook::FB2BodyContext
Definition: FB2BlockContext.h:23
libebook::FB2PoemContext
Definition: FB2BlockContext.h:87
libebook::EBOOKHTMLToken::value
@ value
Definition: EBOOKHTMLToken.h:263
libebook::FB2BodyContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:67
libebook::FB2Token::title
@ title
Definition: FB2Token.h:95
FB2TextContext.h
libebook::FB2Collector::insertText
virtual void insertText(const char *text)=0
libebook::FB2BodyContext::m_collectHeadings
const bool m_collectHeadings
Definition: FB2BlockContext.h:34
libebook::FB2EpigraphContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:134
libebook::FB2Token::p
@ p
Definition: FB2Token.h:71
libebook::FB2ParserContext
Base class for all contexts.
Definition: FB2ParserContext.h:24
libebook::FB2EmptyLineContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:119
libebook::FB2CiteContext
Definition: FB2BlockContext.h:39
libebook::FB2Collector::openParagraph
virtual void openParagraph(const FB2BlockFormat &format)=0
libebook::FB2Token::annotation
@ annotation
Definition: FB2Token.h:38
libebook::FB2EmptyLineContext
Definition: FB2BlockContext.h:50
libebook::FB2ImageContext::m_href
std::string m_href
Definition: FB2BlockContext.h:81
libebook::FB2TokenData
Definition: FB2Token.h:136
libebook::FB2BlockFormatContextBase
Definition: FB2ParserContext.h:152
libebook::FB2PoemContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:261
libebook::FB2TitleContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:431
libebook::FB2Token::stanza
@ stanza
Definition: FB2Token.h:83
libebook::FB2Token::NS_XLINK
@ NS_XLINK
Definition: FB2Token.h:32
libebook::FB2PoemContext::FB2PoemContext
FB2PoemContext(FB2ParserContext *parentContext, const FB2BlockFormat &format)
Definition: FB2BlockContext.cpp:256
libebook::FB2SectionContext::m_lang
boost::optional< std::string > m_lang
Definition: FB2BlockContext.h:114
libebook::FB2Token::NS_FICTIONBOOK
@ NS_FICTIONBOOK
Definition: FB2Token.h:31
libebook::FB2VContext
Definition: FB2TextContext.h:157
libebook::FB2SectionContext
Definition: FB2BlockContext.h:99
libebook::FB2ImageContext
Definition: FB2BlockContext.h:71
libebook::FB2ImageContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:176
FB2MetadataContext.h
libebook::FB2TitleContext::FB2TitleContext
FB2TitleContext(FB2ParserContext *const parentContext, const FB2BlockFormat &format)
Definition: FB2BlockContext.cpp:425
libebook::FB2Collector::openPageSpan
virtual void openPageSpan()=0
libebook::FB2CiteContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:78
libebook::FB2TableContext
Definition: FB2TableContext.h:21
libebook::FB2Collector::insertBitmap
virtual void insertBitmap(const char *id)=0
libebook::FB2ImageContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:191
libebook::FB2Token::alt
@ alt
Definition: FB2Token.h:105
libebook::FB2ImageContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:221
libebook::FB2BlockFormat::title
bool title
Definition: FB2Style.h:49
FB2ParserContext.h
libebook::FB2SectionContext::element
virtual FB2XMLParserContext * element(const FB2TokenData &name, const FB2TokenData &ns)
Create a context for parsing a child element.
Definition: FB2BlockContext.cpp:318
libebook::FB2BlockFormatContextBase::getBlockFormat
FB2BlockFormat & getBlockFormat()
Definition: FB2ParserContext.cpp:224
libebook::FB2Collector
Definition: FB2Collector.h:20
libebook::FB2Token::v
@ v
Definition: FB2Token.h:99
name
string name
Definition: CHMStream.cpp:80
libebook::FB2EmptyLineContext::FB2EmptyLineContext
FB2EmptyLineContext(FB2ParserContext *parentContext)
Definition: FB2BlockContext.cpp:114
libebook::FB2XMLParserContext
Definition: FB2XMLParserContext.h:19
libebook::FB2Style
Definition: FB2Style.h:56
libebook::EBOOKHTMLToken::lang
@ lang
Definition: EBOOKHTMLToken.h:207
libebook::getFB2TokenID
int getFB2TokenID(const FB2TokenData &token)
Definition: FB2Token.cpp:50
libebook::FB2StanzaContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:419
libebook::FB2BlockFormat
Definition: FB2Style.h:36
libebook::EBOOKOPFToken::format
@ format
Definition: EBOOKOPFToken.h:56
FB2_NO_NAMESPACE
#define FB2_NO_NAMESPACE(ns)
Definition: FB2Token.h:20
libebook::FB2BlockFormat::stanza
bool stanza
Definition: FB2Style.h:45
libebook::FB2AnnotationContext
Definition: FB2MetadataContext.h:21
libebook::FB2PoemContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:296
libebook::FB2StanzaContext::FB2StanzaContext
FB2StanzaContext(FB2ParserContext *parentContext, const FB2BlockFormat &format)
Definition: FB2BlockContext.cpp:387
libebook::FB2Collector::closeParagraph
virtual void closeParagraph()=0
FB2Token.h
libebook::FB2Token::empty_line
@ empty_line
Definition: FB2Token.h:54
libebook::FB2Token::NS_XML
@ NS_XML
Definition: FB2Token.h:33
libebook::FB2Collector::defineID
virtual void defineID(const char *id)=0
libebook::FB2TitleContext::attribute
virtual void attribute(const FB2TokenData &name, const FB2TokenData *ns, const char *value)
Process an attribute.
Definition: FB2BlockContext.cpp:454
libebook::FB2Token::poem
@ poem
Definition: FB2Token.h:73
libebook::FB2Token::type
@ type
Definition: FB2Token.h:120
libebook::FB2SectionContext::m_level
boost::optional< uint8_t > m_level
Definition: FB2BlockContext.h:113
libebook::FB2SectionContext::FB2SectionContext
FB2SectionContext(FB2ParserContext *parentContext, const boost::optional< std::string > &lang)
Definition: FB2BlockContext.cpp:304
libebook::FB2SectionContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:364
libebook::FB2TitleContext::endOfElement
virtual void endOfElement()
Signalize the end of an element.
Definition: FB2BlockContext.cpp:449
libebook::FB2ImageContext::FB2ImageContext
FB2ImageContext(FB2ParserContext *parentContext)
Definition: FB2BlockContext.cpp:168
libebook::FB2BodyContext::m_lang
boost::optional< std::string > m_lang
Definition: FB2BlockContext.h:35
libebook::FB2Token::table
@ table
Definition: FB2Token.h:91
libebook::FB2Token::text_author
@ text_author
Definition: FB2Token.h:93
libebook::FB2Token::simple
@ simple
Definition: FB2Token.h:126
libebook::FB2Collector::closePageSpan
virtual void closePageSpan()=0
FB2Collector.h
libebook::FB2CiteContext::FB2CiteContext
FB2CiteContext(FB2ParserContext *parentContext, const FB2BlockFormat &format)
Definition: FB2BlockContext.cpp:73
libebook::FB2Token::epigraph
@ epigraph
Definition: FB2Token.h:55
libebook::FB2EpigraphContext
Definition: FB2BlockContext.h:60
FB2BlockContext.h
libebook::FB2SectionContext::makeBlockFormat
FB2BlockFormat makeBlockFormat() const
Definition: FB2BlockContext.cpp:377

Generated for libe-book by doxygen 1.8.18