aboutsummaryrefslogtreecommitdiff
path: root/web/xhtml-fragment.hxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-04-29 23:55:46 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-04-30 23:57:17 +0300
commit8f3d3956b1e837c726859eb8bbe19dad79c54a42 (patch)
tree81ded52db212b12c7f685165702cce90aa0233cf /web/xhtml-fragment.hxx
parentea60a6df471706a0eeb5ff1f774d69abe89e4bc9 (diff)
Add hxx extension for headers and lib prefix for library dirs
Diffstat (limited to 'web/xhtml-fragment.hxx')
-rw-r--r--web/xhtml-fragment.hxx48
1 files changed, 48 insertions, 0 deletions
diff --git a/web/xhtml-fragment.hxx b/web/xhtml-fragment.hxx
new file mode 100644
index 0000000..9d58bbf
--- /dev/null
+++ b/web/xhtml-fragment.hxx
@@ -0,0 +1,48 @@
+// file : web/xhtml-fragment.hxx -*- C++ -*-
+// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+#ifndef WEB_XHTML_FRAGMENT_HXX
+#define WEB_XHTML_FRAGMENT_HXX
+
+#include <string>
+#include <vector>
+#include <utility> // pair
+
+#include <xml/parser>
+#include <xml/forward>
+
+namespace web
+{
+ namespace xhtml
+ {
+ // A parsed (via xml::parser) XHTML fragment that can later be serialized
+ // to xml::serializer.
+ //
+ class fragment
+ {
+ public:
+ fragment () = default;
+
+ // Parse string as XHTML document fragment. The fragment should be
+ // complete, in the sense that all elements should have closing tags.
+ // Elements and attributes are considered to be in the namespace of the
+ // entire XHTML document, so no namespace should be specified for them.
+ // Do not validate against XHTML vocabulary. Can throw xml::parsing
+ // exception.
+ //
+ fragment (const std::string& xhtml, const std::string& input_name);
+
+ void
+ operator() (xml::serializer&) const;
+
+ bool
+ empty () const {return events_.empty ();}
+
+ private:
+ std::vector<std::pair<xml::parser::event_type, std::string>> events_;
+ };
+ }
+}
+
+#endif // WEB_XHTML_FRAGMENT_HXX