$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r59571 - branches/quickbook-1.5-spirit2
From: daniel_james_at_[hidden]
Date: 2010-02-07 09:48:52
Author: danieljames
Date: 2010-02-07 09:48:51 EST (Sun, 07 Feb 2010)
New Revision: 59571
URL: http://svn.boost.org/trac/boost/changeset/59571
Log:
Add html support to the post processor.
Text files modified: 
   branches/quickbook-1.5-spirit2/post_process.cpp |    30 +++++++++++++++++++++++++-----          
   1 files changed, 25 insertions(+), 5 deletions(-)
Modified: branches/quickbook-1.5-spirit2/post_process.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/post_process.cpp	(original)
+++ branches/quickbook-1.5-spirit2/post_process.cpp	2010-02-07 09:48:51 EST (Sun, 07 Feb 2010)
@@ -14,6 +14,7 @@
 #include <boost/spirit/include/qi_char_.hpp>
 #include <boost/spirit/include/phoenix_core.hpp>
 #include <boost/spirit/include/phoenix_bind.hpp>
+#include <boost/spirit/include/phoenix_operator.hpp>
 #include <set>
 #include <stack>
 #include <cctype>
@@ -215,6 +216,18 @@
         , "warning"
         , "xml"
         , "xi:include"
+
+        // TODO: Should separate html and boostbook tags.
+        , "dd"
+        , "dl"
+        , "dt"
+        , "div"
+        , "ol"
+        , "p"
+        , "pre"
+        , "td"
+        , "tr"
+        , "ul"
     };
 
     char const* doc_types_[] =
@@ -280,10 +293,15 @@
                 ]]
                [ph::bind(&tidy_grammar::do_tag, this, qi::_1)];
 
-            code = qi::raw[
-                    "<programlisting>"
-                >>  *(qi::char_ - "</programlisting>")
-                >>  "</programlisting>"
+            code_tags.add
+                ("<programlisting>", "</programlisting>")
+                ("<pre>", "</pre>")
+                ;
+
+            code %= qi::raw[
+                    code_tags                           [qi::_a = qi::_1]
+                >>  *(qi::char_ - qi::lit(qi::_a))
+                >>  qi::lit(qi::_a)
                 ];
 
             // What's the business of lexeme_d['>' >> *space]; ?
@@ -421,7 +439,9 @@
                             markup, escape;
         qi::rule<Iterator, std::string()>
                             start_tag, start_end_tag,
-                            content, end_tag, code;
+                            content, end_tag;
+        qi::rule<Iterator, qi::locals<std::string>, std::string()> code;
+        qi::symbols<char, std::string> code_tags;
     };
 
     int post_process(