Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r75840 - in trunk/tools/quickbook: src test/doc-info test/include
From: dnljms_at_[hidden]
Date: 2011-12-07 04:19:08


Author: danieljames
Date: 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
New Revision: 75840
URL: http://svn.boost.org/trac/boost/changeset/75840

Log:
Quickbook: In 1.6 don't put 'inline' code blocks in paragraphs.

Might rename them 'explicit' code blocks.
Text files modified:
   trunk/tools/quickbook/src/actions.cpp | 81 ++++++++++++++++++++++-----------------
   trunk/tools/quickbook/src/actions.hpp | 28 ++-----------
   trunk/tools/quickbook/src/actions_class.cpp | 6 +-
   trunk/tools/quickbook/src/actions_class.hpp | 2
   trunk/tools/quickbook/test/doc-info/source-mode-1.6.gold | 8 ---
   trunk/tools/quickbook/test/include/code-include.gold | 2
   6 files changed, 54 insertions(+), 73 deletions(-)

Modified: trunk/tools/quickbook/src/actions.cpp
==============================================================================
--- trunk/tools/quickbook/src/actions.cpp (original)
+++ trunk/tools/quickbook/src/actions.cpp 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -586,53 +586,62 @@
 
     void code_action::operator()(parse_iterator first, parse_iterator last) const
     {
- write_anchors(actions, out);
+ bool inline_code = type == inline_ ||
+ (type == inline_block && qbk_version_n < 106u);
+ bool block = type != inline_;
 
- // preprocess the code section to remove the initial indentation
- mapped_file_builder mapped;
- mapped.start(actions.current_file);
- mapped.unindent_and_add(first.base(), last.base());
+ if (inline_code) {
+ write_anchors(actions, actions.phrase);
+ }
+ else {
+ actions.paragraph();
+ write_anchors(actions, actions.out);
+ }
 
- file_ptr f = mapped.release();
+ std::string str;
 
- if (f->source.empty())
- return; // Nothing left to do here. The program is empty.
+ if (block) {
+ // preprocess the code section to remove the initial indentation
+ mapped_file_builder mapped;
+ mapped.start(actions.current_file);
+ mapped.unindent_and_add(first.base(), last.base());
 
- parse_iterator first_(f->source.begin());
- parse_iterator last_(f->source.end());
+ file_ptr f = mapped.release();
 
- file_ptr saved_file = f;
- boost::swap(actions.current_file, saved_file);
+ if (f->source.empty())
+ return; // Nothing left to do here. The program is empty.
 
- // print the code with syntax coloring
- std::string str = syntax_highlight(first_, last_, actions, actions.source_mode);
+ parse_iterator first_(f->source.begin());
+ parse_iterator last_(f->source.end());
 
- boost::swap(actions.current_file, saved_file);
+ file_ptr saved_file = f;
+ boost::swap(actions.current_file, saved_file);
 
- //
- // We must not place a \n after the <programlisting> tag
- // otherwise PDF output starts code blocks with a blank line:
- //
- out << "<programlisting>";
- out << str;
- out << "</programlisting>\n";
- }
+ // print the code with syntax coloring
+ str = syntax_highlight(first_, last_, actions, actions.source_mode);
 
- void inline_code_action::operator()(parse_iterator first, parse_iterator last) const
- {
- write_anchors(actions, out);
-
- std::string save;
- out.swap(save);
-
- // print the code with syntax coloring
- std::string str = syntax_highlight(first, last, actions, actions.source_mode);
+ boost::swap(actions.current_file, saved_file);
+ }
+ else {
+ parse_iterator first_(first);
+ str = syntax_highlight(first_, last, actions, actions.source_mode);
+ }
 
- out.swap(save);
+ if (block) {
+ collector& output = inline_code ? actions.phrase : actions.out;
 
- out << "<code>";
- out << str;
- out << "</code>";
+ // We must not place a \n after the <programlisting> tag
+ // otherwise PDF output starts code blocks with a blank line:
+ //
+ output << "<programlisting>";
+ output << str;
+ output << "</programlisting>\n";
+ }
+ else {
+ actions.phrase << "<code>";
+ actions.phrase << str;
+ actions.phrase << "</code>";
+ }
     }
 
     void plain_char_action::operator()(char ch) const

Modified: trunk/tools/quickbook/src/actions.hpp
==============================================================================
--- trunk/tools/quickbook/src/actions.hpp (original)
+++ trunk/tools/quickbook/src/actions.hpp 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -244,39 +244,21 @@
 
     struct code_action
     {
+ enum code_type { block, inline_block, inline_ };
+
         // Does the actual syntax highlighing of code
 
         code_action(
- collector& out
- , collector& phrase
+ code_type type
           , quickbook::actions& actions)
- : out(out)
- , phrase(phrase)
+ : type(type)
         , actions(actions)
         {
         }
 
         void operator()(parse_iterator first, parse_iterator last) const;
 
- collector& out;
- collector& phrase;
- quickbook::actions& actions;
- };
-
- struct inline_code_action
- {
- // Does the actual syntax highlighing of code inlined in text
-
- inline_code_action(
- collector& out
- , quickbook::actions& actions)
- : out(out)
- , actions(actions)
- {}
-
- void operator()(parse_iterator first, parse_iterator last) const;
-
- collector& out;
+ code_type type;
         quickbook::actions& actions;
     };
 

Modified: trunk/tools/quickbook/src/actions_class.cpp
==============================================================================
--- trunk/tools/quickbook/src/actions_class.cpp (original)
+++ trunk/tools/quickbook/src/actions_class.cpp 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -51,9 +51,9 @@
 
         , element(*this)
         , error(*this)
- , code(out, phrase, *this)
- , code_block(phrase, phrase, *this)
- , inline_code(phrase, *this)
+ , code(code_action::block, *this)
+ , code_block(code_action::inline_block, *this)
+ , inline_code(code_action::inline_, *this)
         , paragraph(*this)
         , list_item(*this)
         , phrase_end(*this)

Modified: trunk/tools/quickbook/src/actions_class.hpp
==============================================================================
--- trunk/tools/quickbook/src/actions_class.hpp (original)
+++ trunk/tools/quickbook/src/actions_class.hpp 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -86,7 +86,7 @@
 
         code_action code;
         code_action code_block;
- inline_code_action inline_code;
+ code_action inline_code;
         paragraph_action paragraph;
         list_item_action list_item;
         phrase_end_action phrase_end;

Modified: trunk/tools/quickbook/test/doc-info/source-mode-1.6.gold
==============================================================================
--- trunk/tools/quickbook/test/doc-info/source-mode-1.6.gold (original)
+++ trunk/tools/quickbook/test/doc-info/source-mode-1.6.gold 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -14,9 +14,7 @@
       <code>This shouldn't be highlighted</code>
     </articlepurpose>
   </articleinfo>
- <para>
 <programlisting>This shouldn't be highlighted.</programlisting>
- </para>
   <article id="c___source_mode_include" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
   xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>C++ source mode include</title>
@@ -24,9 +22,7 @@
 <programlisting><phrase role="keyword">int</phrase> <phrase role="identifier">main</phrase><phrase role="special">()</phrase> <phrase role="special">{}</phrase></programlisting>
     </para>
   </article>
- <para>
 <programlisting>This shouldn't be highlighted.</programlisting>
- </para>
   <article id="python_source_mode_include" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
   xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Python source mode include</title>
@@ -34,9 +30,7 @@
 <programlisting><phrase role="keyword">def</phrase> <phrase role="identifier">foo</phrase><phrase role="special">():</phrase></programlisting>
     </para>
   </article>
- <para>
 <programlisting>This shouldn't be highlighted.</programlisting>
- </para>
   <article id="teletype_source_mode_include" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
   xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Teletype source mode include</title>
@@ -44,7 +38,5 @@
 <programlisting>This shouldn't be highlighted</programlisting>
     </para>
   </article>
- <para>
 <programlisting>This shouldn't be highlighted.</programlisting>
- </para>
 </article>

Modified: trunk/tools/quickbook/test/include/code-include.gold
==============================================================================
--- trunk/tools/quickbook/test/include/code-include.gold (original)
+++ trunk/tools/quickbook/test/include/code-include.gold 2011-12-07 04:19:07 EST (Wed, 07 Dec 2011)
@@ -26,14 +26,12 @@
   <para>
     And any quickbook block markup.
   </para>
- <para>
 <programlisting><phrase role="keyword">char</phrase><phrase role="special">*</phrase> <phrase role="identifier">foo</phrase><phrase role="special">()</phrase>
 <phrase role="special">{</phrase>
     <phrase role="comment">// return 'em, foo man!</phrase>
     <phrase role="keyword">return</phrase> <phrase role="string">&quot;foo&quot;</phrase><phrase role="special">;</phrase>
 <phrase role="special">}</phrase>
 </programlisting>
- </para>
   <para>
     This should appear when <literal>stub.py</literal> is included.
   </para>


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