Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r70207 - in trunk/tools/quickbook: . doc src test test/snippets
From: dnljms_at_[hidden]
Date: 2011-03-19 15:22:46


Author: danieljames
Date: 2011-03-19 15:22:45 EDT (Sat, 19 Mar 2011)
New Revision: 70207
URL: http://svn.boost.org/trac/boost/changeset/70207

Log:
Quickbook: pass-thru comments.
Added:
   trunk/tools/quickbook/test/snippets/
      - copied from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/
   trunk/tools/quickbook/test/snippets/Jamfile.v2
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/Jamfile.v2
   trunk/tools/quickbook/test/snippets/pass_thru.cpp
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/pass_thru.cpp
   trunk/tools/quickbook/test/snippets/pass_thru.gold
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/pass_thru.gold
   trunk/tools/quickbook/test/snippets/pass_thru.py
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/pass_thru.py
   trunk/tools/quickbook/test/snippets/pass_thru.quickbook
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/pass_thru.quickbook
   trunk/tools/quickbook/test/snippets/pass_thru.xml
      - copied unchanged from r70018, /branches/quickbook-filenames/tools/quickbook/test/snippets/pass_thru.xml
Properties modified:
   trunk/tools/quickbook/ (props changed)
Text files modified:
   trunk/tools/quickbook/doc/quickbook.qbk | 13 +++++++++++++
   trunk/tools/quickbook/src/code_snippet.cpp | 36 +++++++++++++++++++++++++++++++++---
   trunk/tools/quickbook/test/Jamfile.v2 | 1 +
   3 files changed, 47 insertions(+), 3 deletions(-)

Modified: trunk/tools/quickbook/doc/quickbook.qbk
==============================================================================
--- trunk/tools/quickbook/doc/quickbook.qbk (original)
+++ trunk/tools/quickbook/doc/quickbook.qbk 2011-03-19 15:22:45 EDT (Sat, 19 Mar 2011)
@@ -283,6 +283,7 @@
 * Allow more block elements to be nested.
 * Go back to using invalid markup for lists. It generates better html.
 * Better anchor placement for lists.
+* Pass-thru comments in code snippets.
 * Quickbook 1.6:
   * Scope source mode changes to the file they're made in.
 
@@ -1937,6 +1938,18 @@
 can be used to inhibit code from passing through to quickbook. All text between
 the delimeters will simply be ignored.
 
+Comments of this form:
+
+ //=int main() {}
+
+or
+
+ /*=foo()*/
+
+will be displayed as code that isn't in comments. This allows you to
+include some code in the snippet but not actually use it when
+compiling your example.
+
 [heading Callouts]
 
 Special comments of the form:

Modified: trunk/tools/quickbook/src/code_snippet.cpp
==============================================================================
--- trunk/tools/quickbook/src/code_snippet.cpp (original)
+++ trunk/tools/quickbook/src/code_snippet.cpp 2011-03-19 15:22:45 EDT (Sat, 19 Mar 2011)
@@ -99,6 +99,7 @@
                         start_snippet [boost::bind(&actions_type::start_snippet, &actions, _1, _2)]
                     | end_snippet [boost::bind(&actions_type::end_snippet, &actions, _1, _2)]
                     | escaped_comment
+ | pass_thru_comment
                     | ignore
                     | cl::anychar_p [boost::bind(&actions_type::pass_thru_char, &actions, _1)]
                     ;
@@ -142,11 +143,25 @@
                             "\"\"\""
                         )
                     ;
+
+ // Note: Unlike escaped_comment and ignore, this doesn't
+ // swallow preceeding whitespace.
+ pass_thru_comment
+ = "#="
+ >> ( *(cl::anychar_p - cl::eol_p)
+ >> (cl::eol_p | cl::end_p)
+ ) [boost::bind(&actions_type::pass_thru, &actions, _1, _2)]
+ | cl::confix_p(
+ "\"\"\"=",
+ (*cl::anychar_p) [boost::bind(&actions_type::pass_thru, &actions, _1, _2)],
+ "\"\"\""
+ )
+ ;
             }
 
             cl::rule<Scanner>
                 start_, identifier, code_elements, start_snippet, end_snippet,
- escaped_comment, ignore;
+ escaped_comment, pass_thru_comment, ignore;
 
             cl::rule<Scanner> const&
             start() const { return start_; }
@@ -182,6 +197,7 @@
                     | end_snippet [boost::bind(&actions_type::end_snippet, &actions, _1, _2)]
                     | escaped_comment
                     | ignore
+ | pass_thru_comment
                     | line_callout
                     | inline_callout
                     | cl::anychar_p [boost::bind(&actions_type::pass_thru_char, &actions, _1)]
@@ -249,11 +265,25 @@
                             "*/"
                         )
                     ;
+
+ // Note: Unlike escaped_comment and ignore, this doesn't
+ // swallow preceeding whitespace.
+ pass_thru_comment
+ = "//="
+ >> ( *(cl::anychar_p - cl::eol_p)
+ >> (cl::eol_p | cl::end_p)
+ ) [boost::bind(&actions_type::pass_thru, &actions, _1, _2)]
+ | cl::confix_p(
+ "/*`",
+ (*cl::anychar_p) [boost::bind(&actions_type::pass_thru, &actions, _1, _2)],
+ "*/"
+ )
+ ;
             }
 
             cl::rule<Scanner>
             start_, identifier, code_elements, start_snippet, end_snippet,
- escaped_comment, inline_callout, line_callout, ignore;
+ escaped_comment, pass_thru_comment, inline_callout, line_callout, ignore;
 
             cl::rule<Scanner> const&
             start() const { return start_; }
@@ -334,7 +364,7 @@
     void code_snippet_actions::pass_thru(iterator first, iterator last)
     {
         if(snippet_stack.empty()) return;
- code += *first;
+ code.append(first, last);
     }
 
     void code_snippet_actions::pass_thru_char(char c)

Modified: trunk/tools/quickbook/test/Jamfile.v2
==============================================================================
--- trunk/tools/quickbook/test/Jamfile.v2 (original)
+++ trunk/tools/quickbook/test/Jamfile.v2 2011-03-19 15:22:45 EDT (Sat, 19 Mar 2011)
@@ -14,6 +14,7 @@
 build-project doc-info ;
 build-project unit ;
 build-project command-line ;
+build-project snippets ;
 
 import quickbook-testing : quickbook-test quickbook-error-test ;
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk