[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost-commit
Subject:    [Boost-commit] svn:boost r55913 - in trunk/tools/quickbook: .
From:       daniel_james () fmail ! co ! uk
Date:       2009-08-31 11:38:00
Message-ID: 20090831113800.858412F8442 () wowbagger ! osl ! iu ! edu
[Download RAW message or body]

Author: danieljames
Date: 2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
New Revision: 55913
URL: http://svn.boost.org/trac/boost/changeset/55913

Log:
Table ids. Refs #1194.
Text files modified: 
   trunk/tools/quickbook/block.hpp                |    37 ++++++++++++++++++++++++++-----------   
   trunk/tools/quickbook/detail/actions.cpp       |    20 ++++++++++++++++----                    
   trunk/tools/quickbook/detail/actions.hpp       |     2 +-                                      
   trunk/tools/quickbook/detail/actions_class.hpp |     2 +-                                      
   trunk/tools/quickbook/test/Jamfile.v2          |     1 +                                       
   5 files changed, 45 insertions(+), 17 deletions(-)

Modified: trunk/tools/quickbook/block.hpp
==============================================================================
--- trunk/tools/quickbook/block.hpp	(original)
+++ trunk/tools/quickbook/block.hpp	2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
@@ -10,6 +10,7 @@
 #if !defined(BOOST_SPIRIT_QUICKBOOK_BLOCK_HPP)
 #define BOOST_SPIRIT_QUICKBOOK_BLOCK_HPP
 
+#include "./detail/quickbook.hpp"
 #include "./detail/utils.hpp"
 #include "./phrase.hpp"
 #include <boost/spirit/include/classic_core.hpp>
@@ -22,7 +23,6 @@
 namespace quickbook
 {
     using namespace boost::spirit::classic;
-    extern unsigned qbk_version_n;
 
     template <typename Actions, bool skip_initial_spaces = false>
     struct block_grammar : grammar<block_grammar<Actions> >
@@ -122,19 +122,32 @@
                         |   eps_p                       [actions.error]
                         )
                     ;
+                
+                element_id =
+                        ':'
+                    >>
+                        (
+                            if_p(qbk_since(105u))       [space]
+                        >>  (+(alnum_p | '_'))          [assign_a(actions.element_id)]
+                        |   eps_p                       [actions.element_id_warning]
+                                                        [assign_a(actions.element_id)]
+                        )
+                    | eps_p                             [assign_a(actions.element_id)]
+                    ;
+                
+                element_id_1_5 =
+                        if_p(qbk_since(105u)) [
+                            element_id
+                        ]
+                        .else_p [
+                            eps_p                       [assign_a(actions.element_id)]
+                        ]
+                        ;
 
                 begin_section =
                        "section"
                     >> hard_space
-                    >>  ( ':' >>
-                            (
-                            if_p(qbk_since(105u))       [space]
-                            >> (+(alnum_p | '_'))       [assign_a(actions.element_id)]
-                            | eps_p                     [actions.section_warning]
-                                                        [assign_a(actions.element_id)]
-                            )
-                        | eps_p                         [assign_a(actions.element_id)]
-                        )
+                    >> element_id
                     >> phrase                           [actions.begin_section]
                     ;
 
@@ -290,6 +303,8 @@
                 table =
                     "table"
                     >>  (eps_p(*blank_p >> eol_p) | hard_space)
+                    >> element_id_1_5
+                    >>  (eps_p(*blank_p >> eol_p) | space)
                     >>  (*(anychar_p - eol))            [assign_a(actions.table_title)]
                     >>  +eol
                     >>  *table_row
@@ -426,7 +441,7 @@
                             xinclude, include, hard_space, eol, paragraph_end,
                             template_, template_id, template_formal_arg,
                             template_body, identifier, dummy_block, import,
-                            inside_paragraph;
+                            inside_paragraph, element_id, element_id_1_5;
 
             symbols<>       paragraph_end_markups;
 

Modified: trunk/tools/quickbook/detail/actions.cpp
==============================================================================
--- trunk/tools/quickbook/detail/actions.cpp	(original)
+++ trunk/tools/quickbook/detail/actions.cpp	2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
@@ -819,10 +819,19 @@
         std::string::iterator first = actions.table_title.begin();
         std::string::iterator last = actions.table_title.end();
         bool has_title = first != last;
+        
+        std::string table_id;
+        if(qbk_version_n >= 105) {
+            if(!actions.element_id.empty()) table_id = actions.element_id;
+            else if(has_title) table_id = detail::make_identifier(first, last);
+        }
 
         if (has_title)
         {
-            actions.out << "<table frame=\"all\">\n";
+            actions.out << "<table frame=\"all\"";
+            if(!table_id.empty())
+                actions.out << " id=\"" << table_id << "\"";
+            actions.out << ">\n";
             actions.out << "<title>";
             while (first != last)
                 detail::print_char(*first++, actions.out.get());
@@ -830,7 +839,10 @@
         }
         else
         {
-            actions.out << "<informaltable frame=\"all\">\n";
+            actions.out << "<informaltable frame=\"all\"";
+            if(!table_id.empty())
+                actions.out << " id=\"" << table_id << "\"";
+            actions.out << ">\n";
         }
 
         actions.out << "<tgroup cols=\"" << actions.table_span << "\">\n";
@@ -965,10 +977,10 @@
         }
     }
     
-    void section_warning_action::operator()(iterator first, iterator) const
+    void element_id_warning_action::operator()(iterator first, iterator) const
     {
         boost::spirit::classic::file_position const pos = first.get_position();
-        detail::outwarn(pos.file,pos.line) << "Empty section id after 'section:'.\n";        
+        detail::outwarn(pos.file,pos.line) << "Empty id.\n";        
     }
 
     fs::path path_difference(fs::path const& outdir, fs::path const& path)

Modified: trunk/tools/quickbook/detail/actions.hpp
==============================================================================
--- trunk/tools/quickbook/detail/actions.hpp	(original)
+++ trunk/tools/quickbook/detail/actions.hpp	2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
@@ -709,7 +709,7 @@
         int& error_count;
    };
    
-   struct section_warning_action
+   struct element_id_warning_action
    {
        void operator()(iterator first, iterator last) const;
    };

Modified: trunk/tools/quickbook/detail/actions_class.hpp
==============================================================================
--- trunk/tools/quickbook/detail/actions_class.hpp	(original)
+++ trunk/tools/quickbook/detail/actions_class.hpp	2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
@@ -192,7 +192,7 @@
 
         begin_section_action    begin_section;
         end_section_action      end_section;
-        section_warning_action  section_warning;
+        element_id_warning_action element_id_warning;
         xinclude_action         xinclude;
         include_action          include;
         import_action           import;

Modified: trunk/tools/quickbook/test/Jamfile.v2
==============================================================================
--- trunk/tools/quickbook/test/Jamfile.v2	(original)
+++ trunk/tools/quickbook/test/Jamfile.v2	2009-08-31 07:37:59 EDT (Mon, 31 Aug 2009)
@@ -27,6 +27,7 @@
     [ quickbook-test import ]
     [ quickbook-test section_1_4 ]
     [ quickbook-test section_1_5 ]
+    [ quickbook-test table_1_5 ]
     [ quickbook-fail-test fail-include ]
     [ quickbook-fail-test fail-import ]
     [ quickbook-fail-test fail-template-arguments1 ]
_______________________________________________
Boost-commit mailing list
Boost-commit@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-commit
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic