|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r59669 - in branches/quickbook-1.5-spirit2: . test
From: daniel_james_at_[hidden]
Date: 2010-02-13 10:04:12
Author: danieljames
Date: 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
New Revision: 59669
URL: http://svn.boost.org/trac/boost/changeset/59669
Log:
HTML callouts.
Text files modified:
branches/quickbook-1.5-spirit2/boostbook.cpp | 29 ++++++++++++++++++++
branches/quickbook-1.5-spirit2/code_snippet.cpp | 46 ++++++++++----------------------
branches/quickbook-1.5-spirit2/code_snippet_grammar.cpp | 2 +
branches/quickbook-1.5-spirit2/code_snippet_types.hpp | 7 +++-
branches/quickbook-1.5-spirit2/encoder.hpp | 3 ++
branches/quickbook-1.5-spirit2/encoder_impl.hpp | 4 ++
branches/quickbook-1.5-spirit2/html.cpp | 40 ++++++++++++++++++++++++++++
branches/quickbook-1.5-spirit2/phrase.cpp | 19 ++++++++++++
branches/quickbook-1.5-spirit2/process.cpp | 2 +
branches/quickbook-1.5-spirit2/template.cpp | 56 +++++++++++++++++++++++++++++++++++++++
branches/quickbook-1.5-spirit2/template.hpp | 19 +++++++++++++
branches/quickbook-1.5-spirit2/test/callouts.gold | 56 ++++++++++++++++++++--------------------
branches/quickbook-1.5-spirit2/test/quickbook-manual.gold | 21 ++++++++++----
13 files changed, 235 insertions(+), 69 deletions(-)
Modified: branches/quickbook-1.5-spirit2/boostbook.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/boostbook.cpp (original)
+++ branches/quickbook-1.5-spirit2/boostbook.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -318,6 +318,35 @@
state.phrase << std::string(x.mark == '#' ? "\n</orderedlist>" : "\n</itemizedlist>");
}
+ void boostbook_encoder::operator()(quickbook::state& state, callout_link const& x) const
+ {
+ state.phrase
+ << "<phrase role=\"" << x.role << "\">"
+ << "<co id=\"" << x.identifier << "co\""
+ << " linkends=\"" << x.identifier << "\""
+ << " />"
+ << "</phrase>";
+ }
+
+ void boostbook_encoder::operator()(quickbook::state& state, callout_list const& x) const
+ {
+ state.phrase
+ << "<calloutlist>";
+
+ BOOST_FOREACH(callout_item const& c, x)
+ {
+ state.phrase
+ << "<callout arearefs=\"" << c.identifier << "co\""
+ << " id=\"" << c.identifier << "\""
+ << ">"
+ << c.content
+ << "</callout>";
+ }
+
+ state.phrase
+ << "</calloutlist>";
+ }
+
void boostbook_encoder::operator()(quickbook::state& state, code_token const& x) const
{
std::string type = x.type;
Modified: branches/quickbook-1.5-spirit2/code_snippet.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/code_snippet.cpp (original)
+++ branches/quickbook-1.5-spirit2/code_snippet.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -35,16 +35,18 @@
void code_snippet_actions::process_action::operator()(callout const& x, unused_type, unused_type) const
{
using detail::callout_id;
- actions.code += "``'''";
- actions.code += std::string("<phrase role=\"") + x.role + "\">";
- actions.code += "<co id=\"";
- actions.code += actions.doc_id + boost::lexical_cast<std::string>(callout_id + actions.callouts.size()) + "co\" ";
- actions.code += "linkends=\"";
- actions.code += actions.doc_id + boost::lexical_cast<std::string>(callout_id + actions.callouts.size()) + "\" />";
- actions.code += "</phrase>";
- actions.code += "'''``";
- actions.callouts.push_back(x.content);
+ callout_source item;
+ item.identifier = actions.doc_id + boost::lexical_cast<std::string>(callout_id + actions.callouts.size());
+ item.body = template_value(x.position, x.content);
+
+ actions.code += "``[[callout]";
+ actions.code += x.role;
+ actions.code += " ";
+ actions.code += item.identifier;
+ actions.code += "]``";
+
+ actions.callouts.push_back(item);
}
void code_snippet_actions::process_action::operator()(escaped_comment const& x, unused_type, unused_type) const
@@ -80,31 +82,13 @@
actions.snippet += actions.source_type;
actions.snippet += "```\n" + actions.code + "```\n\n";
}
-
- if(actions.callouts.size() > 0)
- {
- actions.snippet += "'''<calloutlist>'''";
- for (size_t i = 0; i < actions.callouts.size(); ++i)
- {
- actions.snippet += "'''<callout arearefs=\"";
- actions.snippet += actions.doc_id + boost::lexical_cast<std::string>(callout_id + i) + "co\" ";
- actions.snippet += "id=\"";
- actions.snippet += actions.doc_id + boost::lexical_cast<std::string>(callout_id + i) + "\">";
- actions.snippet += "'''";
-
- actions.snippet += "'''<para>'''";
- actions.snippet += actions.callouts[i];
- actions.snippet += "\n";
- actions.snippet += "'''</para>'''";
- actions.snippet += "'''</callout>'''";
- }
- actions.snippet += "'''</calloutlist>'''";
- }
}
std::vector<std::string> empty_params;
- actions.storage.push_back(define_template(
- x.identifier, empty_params, template_value(x.position, actions.snippet)));
+ define_template d(x.identifier, empty_params,
+ template_value(x.position, actions.snippet));
+ d.callouts = actions.callouts;
+ actions.storage.push_back(d);
callout_id += actions.callouts.size();
actions.callouts.clear();
Modified: branches/quickbook-1.5-spirit2/code_snippet_grammar.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/code_snippet_grammar.cpp (original)
+++ branches/quickbook-1.5-spirit2/code_snippet_grammar.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -182,6 +182,7 @@
inline_callout =
"/*<"
+ >> position
>> *(qi::char_ - ">*/")
>> ">*/"
>> qi::attr("callout_bug")
@@ -189,6 +190,7 @@
line_callout =
"/*<<"
+ >> position
>> *(qi::char_ - ">>*/")
>> ">>*/"
>> qi::omit[*qi::space]
Modified: branches/quickbook-1.5-spirit2/code_snippet_types.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/code_snippet_types.hpp (original)
+++ branches/quickbook-1.5-spirit2/code_snippet_types.hpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -17,6 +17,7 @@
#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/spirit/include/support_unused.hpp>
#include "fwd.hpp"
+#include "template.hpp"
namespace quickbook
{
@@ -28,8 +29,9 @@
struct callout
{
- std::string content;
char const* role;
+ quickbook::file_position position;
+ std::string content;
};
struct escaped_comment
@@ -46,6 +48,7 @@
BOOST_FUSION_ADAPT_STRUCT(
quickbook::callout,
+ (quickbook::file_position, position)
(std::string, content)
(char const*, role)
)
@@ -97,7 +100,7 @@
output_action output;
std::string code;
std::string snippet;
- std::vector<std::string> callouts;
+ quickbook::callouts callouts;
std::vector<define_template>& storage;
std::string const doc_id;
char const* const source_type;
Modified: branches/quickbook-1.5-spirit2/encoder.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/encoder.hpp (original)
+++ branches/quickbook-1.5-spirit2/encoder.hpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -19,6 +19,7 @@
#include "syntax_highlight.hpp"
#include "doc_info.hpp"
#include "gen_types.hpp"
+#include "template.hpp"
namespace quickbook
{
@@ -54,6 +55,8 @@
virtual void operator()(quickbook::state&, table2 const&) const = 0;
virtual void operator()(quickbook::state&, xinclude2 const&) const = 0;
virtual void operator()(quickbook::state&, list2 const&) const = 0;
+ virtual void operator()(quickbook::state&, callout_link const&) const = 0;
+ virtual void operator()(quickbook::state&, callout_list const&) const = 0;
virtual void operator()(quickbook::state&, code_token const&) const = 0;
Modified: branches/quickbook-1.5-spirit2/encoder_impl.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/encoder_impl.hpp (original)
+++ branches/quickbook-1.5-spirit2/encoder_impl.hpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -27,6 +27,8 @@
virtual void operator()(quickbook::state&, table2 const&) const;
virtual void operator()(quickbook::state&, xinclude2 const&) const;
virtual void operator()(quickbook::state&, list2 const&) const;
+ virtual void operator()(quickbook::state&, callout_link const&) const;
+ virtual void operator()(quickbook::state&, callout_list const&) const;
virtual void operator()(quickbook::state&, code_token const&) const;
@@ -57,6 +59,8 @@
virtual void operator()(quickbook::state&, table2 const&) const;
virtual void operator()(quickbook::state&, xinclude2 const&) const;
virtual void operator()(quickbook::state&, list2 const&) const;
+ virtual void operator()(quickbook::state&, callout_link const&) const;
+ virtual void operator()(quickbook::state&, callout_list const&) const;
virtual void operator()(quickbook::state&, code_token const&) const;
Modified: branches/quickbook-1.5-spirit2/html.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/html.cpp (original)
+++ branches/quickbook-1.5-spirit2/html.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -302,6 +302,46 @@
state.phrase << std::string(x.mark == '#' ? "\n</ol>" : "\n</ul>");
}
+ void html_encoder::operator()(quickbook::state& state, callout_link const& x) const
+ {
+ state.phrase
+ << "<span"
+ << " class=\"" << x.role << "\""
+ << " id=\"" << x.identifier << "co\""
+ << ">"
+ << "<a href=\"#" << x.identifier << "\">"
+ // TODO: Get correct number
+ // TODO: Better style
+ << "(c)"
+ << "</a>"
+ << "</span>"
+ ;
+ }
+
+ void html_encoder::operator()(quickbook::state& state, callout_list const& x) const
+ {
+ state.phrase
+ << "<dl class=\"calloutlist\">";
+ unsigned int count = 0;
+
+ BOOST_FOREACH(callout_item const& c, x)
+ {
+ state.phrase
+ << "<dt id=\"" << c.identifier << "\">"
+ << "<a href=\"#" << c.identifier << "co\">"
+ << "callout " << ++count
+ << "</a>"
+ << "</dt>"
+ << "<dd>"
+ << c.content
+ << "</dd>"
+ ;
+ }
+
+ state.phrase
+ << "</ol>";
+ }
+
void html_encoder::operator()(quickbook::state& state, code_token const& x) const
{
std::string type = x.type;
Modified: branches/quickbook-1.5-spirit2/phrase.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/phrase.cpp (original)
+++ branches/quickbook-1.5-spirit2/phrase.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -76,6 +76,12 @@
(std::string, content)
)
+BOOST_FUSION_ADAPT_STRUCT(
+ quickbook::callout_link,
+ (std::string, role)
+ (std::string, identifier)
+)
+
namespace quickbook
{
namespace qi = boost::spirit::qi;
@@ -101,6 +107,7 @@
qi::rule<iterator, quickbook::formatted()> escape_markup;
qi::rule<iterator> comment;
qi::rule<iterator> dummy_block;
+ qi::rule<iterator, quickbook::callout_link()> callout_link;
qi::rule<iterator, quickbook::cond_phrase()> cond_phrase;
qi::rule<iterator, std::string()> macro_identifier;
qi::rule<iterator, quickbook::image()> image, image_1_4, image_1_5;
@@ -167,7 +174,8 @@
phrase_markup =
( '['
- >> ( cond_phrase
+ >> ( callout_link
+ | cond_phrase
| image
| url
| link
@@ -274,6 +282,15 @@
'[' >> *(dummy_block | (qi::char_ - ']')) >> ']'
;
+ // Don't use this, it's meant to be private.
+ callout_link =
+ "[callout]"
+ >> *~qi::char_(' ')
+ >> ' '
+ >> *~qi::char_(']')
+ >> qi::attr(nothing())
+ ;
+
cond_phrase =
'?'
>> blank
Modified: branches/quickbook-1.5-spirit2/process.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/process.cpp (original)
+++ branches/quickbook-1.5-spirit2/process.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -63,4 +63,6 @@
template void process_action::operator()<char>(char const&) const;
template void process_action::operator()<doc_info>(doc_info const&) const;
template void process_action::operator()<doc_info_post>(doc_info_post const&) const;
+ template void process_action::operator()<callout_link>(callout_link const&) const;
+ template void process_action::operator()<callout_list>(callout_list const&) const;
}
\ No newline at end of file
Modified: branches/quickbook-1.5-spirit2/template.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/template.cpp (original)
+++ branches/quickbook-1.5-spirit2/template.cpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -31,10 +31,24 @@
, params(params)
, body(body)
, parent(parent) {}
+
+ template_symbol(
+ std::string const& identifier,
+ std::vector<std::string> const& params,
+ template_value const& body,
+ quickbook::callouts const& callouts,
+ template_scope const* parent)
+ : identifier(identifier)
+ , params(params)
+ , body(body)
+ , callouts(callouts)
+ , parent(parent) {}
+
std::string identifier;
std::vector<std::string> params;
template_value body;
+ quickbook::callouts callouts;
template_scope const* parent;
};
@@ -121,6 +135,7 @@
definition.id,
definition.params,
definition.body,
+ definition.callouts,
parent ? parent : &top_scope());
scopes.front().symbols.add(ts.identifier.c_str(), ts);
@@ -341,6 +356,7 @@
r = boost::spirit::qi::parse(first, last, block_p) && first == last;
state.phrase.swap(result);
}
+
return r;
}
}
@@ -422,7 +438,45 @@
state.pop(); // restore the state
--state.template_depth;
-
+
+ if(x.symbol->callouts.size()) {
+ callout_list list;
+ BOOST_FOREACH(callout_source const& c, x.symbol->callouts) {
+ callout_item item;
+ item.identifier = c.identifier;
+
+ std::size_t pos = c.body.content.find_first_not_of(" \t\n\r");
+ if(pos != std::string::npos) {
+ std::string content = "\n";
+ content.append(c.body.content, pos, c.body.content.size() - pos);
+
+ state.push();
+ // TODO: adjust the position?
+ bool r = parse_template(content, item.content, c.body.position, false, state);
+ state.pop();
+
+ if(!r)
+ {
+ detail::outerr(c.body.position.file, c.body.position.line)
+ << "Error expanding callout."
+ << std::endl;
+ ++state.error_count;
+ return "";
+ }
+ }
+
+ list.push_back(item);
+ }
+
+ state.push();
+ {
+ quickbook::actions actions(state);
+ actions.process(list);
+ }
+ result += state.phrase.str();
+ state.pop();
+ }
+
return result;
}
}
Modified: branches/quickbook-1.5-spirit2/template.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/template.hpp (original)
+++ branches/quickbook-1.5-spirit2/template.hpp 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -35,6 +35,24 @@
std::string content;
};
+ struct callout_link {
+ std::string role;
+ std::string identifier;
+ };
+
+ struct callout_source {
+ std::string identifier;
+ template_value body;
+ };
+
+ struct callout_item {
+ std::string identifier;
+ std::string content;
+ };
+
+ typedef std::vector<callout_source> callouts;
+ typedef std::vector<callout_item> callout_list;
+
struct define_template
{
define_template() {}
@@ -51,6 +69,7 @@
std::string id;
std::vector<std::string> params;
template_value body;
+ quickbook::callouts callouts;
};
struct call_template {
Modified: branches/quickbook-1.5-spirit2/test/callouts.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/callouts.gold (original)
+++ branches/quickbook-1.5-spirit2/test/callouts.gold 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -15,14 +15,18 @@
<para>
<programlisting><phrase role="keyword">int</phrase> <phrase role="identifier">roll_die</phrase><phrase role="special">()</phrase> <phrase role="special">{</phrase>
- <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="identifier">dist</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">6</phrase><phrase role="special">);</phrase> <!--quickbook-escape-prefix--><phrase role="callout_bug"><co id="callout_tests0co" linkends="callout_tests0" /></phrase><!--quickbook-escape-postfix-->
+ <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="identifier">dist</phrase><phrase role="special">(</phrase><phrase role="number">1</phrase><phrase role="special">,</phrase> <phrase role="number">6</phrase><phrase role="special">);</phrase> <phrase role="callout_bug"><co id="callout_tests0co" linkends="callout_tests0" /></phrase>
<phrase role="special">}</phrase>
</programlisting>
</para>
- <para>
- <calloutlist><callout arearefs="callout_tests0co" id="callout_tests0"><para> create a uniform_int distribution </para></callout></calloutlist>
- </para>
+ <calloutlist>
+ <callout arearefs="callout_tests0co" id="callout_tests0">
+ <para>
+ create a uniform_int distribution
+ </para>
+ </callout>
+ </calloutlist>
</para>
<para>
Example 2:
@@ -31,22 +35,20 @@
<para>
<programlisting><phrase role="keyword">int</phrase> <phrase role="identifier">roll_die</phrase><phrase role="special">()</phrase> <phrase role="special">{</phrase>
- <!--quickbook-escape-prefix--><phrase role="line_callout_bug"><co id="callout_tests1co" linkends="callout_tests1" /></phrase><!--quickbook-escape-postfix--><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">variate_generator</phrase><phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">mt19937</phrase><phrase role="special">&,</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="special">></phrase> <phrase role="identifier">die</phrase><phrase role="special">(</phrase><phrase role="identifier">gen</phrase><phrase role="special">,</phrase> <phrase role="identifier">dist</phrase><phrase role="special">);</phrase>
+ <phrase role="line_callout_bug"><co id="callout_tests1co" linkends="callout_tests1" /></phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">variate_generator</phrase><phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">mt19937</phrase><phrase role="special">&,</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="special">></phrase> <phrase role="identifier">die</phrase><phrase role="special">(</phrase><phrase role="identifier">gen</phrase><phrase role="special">,</phrase> <phrase role="identifier">dist</phrase><phrase role="special">);</phrase>
<phrase role="special">}</phrase>
</programlisting>
</para>
- <para>
- <calloutlist><callout arearefs="callout_tests1co" id="callout_tests1"><para>
- </para>
- <important>
- <para>
- test
- </para>
- </important>
- <para>
- </para></callout></calloutlist>
- </para>
+ <calloutlist>
+ <callout arearefs="callout_tests1co" id="callout_tests1">
+ <important>
+ <para>
+ test
+ </para>
+ </important>
+ </callout>
+ </calloutlist>
</para>
<para>
Example 3:
@@ -55,21 +57,19 @@
<para>
<programlisting><phrase role="keyword">int</phrase> <phrase role="identifier">roll_die</phrase><phrase role="special">()</phrase> <phrase role="special">{</phrase>
- <!--quickbook-escape-prefix--><phrase role="line_callout_bug"><co id="callout_tests2co" linkends="callout_tests2" /></phrase><!--quickbook-escape-postfix--><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">variate_generator</phrase><phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">mt19937</phrase><phrase role="special">&,</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="special">></phrase> <phrase role="identifier">die</phrase><phrase role="special">(</phrase><phrase role="identifier">gen</phrase><phrase role="special">,</phrase> <phrase role="identifier">dist</phrase><phrase role="special">);</phrase>
+ <phrase role="line_callout_bug"><co id="callout_tests2co" linkends="callout_tests2" /></phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">variate_generator</phrase><phrase role="special"><</phrase><phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">mt19937</phrase><phrase role="special">&,</phrase> <phrase role="identifier">boost</phrase><phrase role="special">::</phrase><phrase role="identifier">uniform_int</phrase><phrase role="special"><></phrase> <phrase role="special">></phrase> <phrase role="identifier">die</phrase><phrase role="special">(</phrase><phrase role="identifier">gen</phrase><phrase role="special">,</phrase> <phrase role="identifier">dist</phrase><phrase role="special">);</phrase>
<phrase role="special">}</phrase>
</programlisting>
</para>
- <para>
- <calloutlist><callout arearefs="callout_tests2co" id="callout_tests2"><para>
- </para>
- <important>
- <para>
- test
- </para>
- </important>
- <para>
- </para></callout></calloutlist>
- </para>
+ <calloutlist>
+ <callout arearefs="callout_tests2co" id="callout_tests2">
+ <important>
+ <para>
+ test
+ </para>
+ </important>
+ </callout>
+ </calloutlist>
</para>
</article>
Modified: branches/quickbook-1.5-spirit2/test/quickbook-manual.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/quickbook-manual.gold (original)
+++ branches/quickbook-1.5-spirit2/test/quickbook-manual.gold 2010-02-13 10:04:09 EST (Sat, 13 Feb 2010)
@@ -2612,16 +2612,25 @@
<para>
<para>
-<programlisting><phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">string</phrase> <phrase role="identifier">foo_bar</phrase><phrase role="special">()</phrase> <!--quickbook-escape-prefix--><phrase role="callout_bug"><co id="quickbook0co" linkends="quickbook0" /></phrase><!--quickbook-escape-postfix-->
+<programlisting><phrase role="identifier">std</phrase><phrase role="special">::</phrase><phrase role="identifier">string</phrase> <phrase role="identifier">foo_bar</phrase><phrase role="special">()</phrase> <phrase role="callout_bug"><co id="quickbook0co" linkends="quickbook0" /></phrase>
<phrase role="special">{</phrase>
- <phrase role="keyword">return</phrase> <phrase role="string">"foo-bar"</phrase><phrase role="special">;</phrase> <!--quickbook-escape-prefix--><phrase role="callout_bug"><co id="quickbook1co" linkends="quickbook1" /></phrase><!--quickbook-escape-postfix-->
+ <phrase role="keyword">return</phrase> <phrase role="string">"foo-bar"</phrase><phrase role="special">;</phrase> <phrase role="callout_bug"><co id="quickbook1co" linkends="quickbook1" /></phrase>
<phrase role="special">}</phrase>
</programlisting>
</para>
- <para>
- <calloutlist><callout arearefs="quickbook0co" id="quickbook0"><para> The <emphasis>Mythical</emphasis> FooBar. See <ulink url="http://en.wikipedia.org/wiki/Foobar">Foobar
- for details</ulink> </para></callout><callout arearefs="quickbook1co" id="quickbook1"><para> return 'em, foo-bar man! </para></callout></calloutlist>
- </para>
+ <calloutlist>
+ <callout arearefs="quickbook0co" id="quickbook0">
+ <para>
+ The <emphasis>Mythical</emphasis> FooBar. See <ulink url="http://en.wikipedia.org/wiki/Foobar">Foobar
+ for details</ulink>
+ </para>
+ </callout>
+ <callout arearefs="quickbook1co" id="quickbook1">
+ <para>
+ return 'em, foo-bar man!
+ </para>
+ </callout>
+ </calloutlist>
</para>
<para>
Checkout <ulink url="../../test/stub.cpp">stub.cpp</ulink> to see the actual
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