|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r65156 - in branches/quickbook-1.5-spirit2: . doc test
From: dnljms_at_[hidden]
Date: 2010-08-31 16:03:10
Author: danieljames
Date: 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
New Revision: 65156
URL: http://svn.boost.org/trac/boost/changeset/65156
Log:
Merge some of the docinfo work from trunk.
Properties modified:
branches/quickbook-1.5-spirit2/ (props changed)
Text files modified:
branches/quickbook-1.5-spirit2/block_actions.cpp | 15 ++--
branches/quickbook-1.5-spirit2/boostbook.cpp | 32 +++++-----
branches/quickbook-1.5-spirit2/code_snippet_types.hpp | 4
branches/quickbook-1.5-spirit2/doc/quickbook.qbk | 4 +
branches/quickbook-1.5-spirit2/doc_info.hpp | 48 ++++++++++----
branches/quickbook-1.5-spirit2/doc_info_actions.cpp | 64 +++++++++-----------
branches/quickbook-1.5-spirit2/doc_info_grammar.cpp | 124 +++++++++++++++++++++++++++------------
branches/quickbook-1.5-spirit2/encoder_impl.hpp | 24 -------
branches/quickbook-1.5-spirit2/grammar_impl.hpp | 1
branches/quickbook-1.5-spirit2/html.cpp | 17 ++--
branches/quickbook-1.5-spirit2/phrase_grammar.cpp | 5
branches/quickbook-1.5-spirit2/state.hpp | 5
branches/quickbook-1.5-spirit2/template.cpp | 4
branches/quickbook-1.5-spirit2/test/doc-info-1.gold | 11 ++-
branches/quickbook-1.5-spirit2/test/doc-info-1.quickbook | 7 +
branches/quickbook-1.5-spirit2/test/doc-info-2.gold | 14 ++-
branches/quickbook-1.5-spirit2/test/doc-info-2.quickbook | 5
branches/quickbook-1.5-spirit2/test/xml-escape_1_2.gold | 11 ++
branches/quickbook-1.5-spirit2/test/xml-escape_1_2.quickbook | 5
branches/quickbook-1.5-spirit2/test/xml-escape_1_5.gold | 13 ++-
branches/quickbook-1.5-spirit2/test/xml-escape_1_5.quickbook | 3
21 files changed, 237 insertions(+), 179 deletions(-)
Modified: branches/quickbook-1.5-spirit2/block_actions.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/block_actions.cpp (original)
+++ branches/quickbook-1.5-spirit2/block_actions.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -23,12 +23,13 @@
namespace quickbook
{
namespace {
- raw_string fully_qualified_id(raw_string const& library_id,
+ raw_string fully_qualified_id(
+ std::string const& library_id,
raw_string const& qualified_section_id,
raw_string const& section_id)
{
raw_string id;
- id.value = library_id.value;
+ id.value = library_id;
if(!id.empty() && !qualified_section_id.empty()) id.value += '.';
id.value += qualified_section_id.value;
if(!id.empty() && !section_id.empty()) id.value += '.';
@@ -80,12 +81,12 @@
if (qbk_version_n < 103) // version 1.2 and below
{
- r.id.value = state.doc_id.value + "." + state.section_id.value;
+ r.id.value = state.doc_id + "." + state.section_id.value;
}
else // version 1.3 and above
{
r.linkend.value = r.id.value =
- state.doc_id.value + "." + state.qualified_section_id.value;
+ state.doc_id + "." + state.qualified_section_id.value;
}
r.content = x.content.content;
@@ -237,7 +238,7 @@
, std::vector<define_template>& storage // for storing snippets are stored in a
// vector of define_templates
, std::string const& extension
- , raw_string const& doc_id)
+ , std::string const& doc_id)
{
std::string code;
int err = detail::load(file, code);
@@ -340,7 +341,7 @@
state.paragraph_output();
fs::path filein = include_search(state.filename.parent_path(), x.path);
- raw_string doc_id;
+ std::string doc_id;
// swap the filenames
std::swap(state.filename, filein);
@@ -365,7 +366,7 @@
// if an id is specified in this include (as in [include:id foo.qbk])
// then use it as the doc_id.
- if (x.id) state.doc_id = *x.id;
+ if (x.id) state.doc_id = x.id->value;
// update the __FILENAME__ macro
*state.macro.find("__FILENAME__") =
Modified: branches/quickbook-1.5-spirit2/boostbook.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/boostbook.cpp (original)
+++ branches/quickbook-1.5-spirit2/boostbook.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -445,20 +445,20 @@
// Document tag
state.block
- << '<' << info.doc_type << " id=\"" << encode(info.doc_id) << "\"\n";
+ << '<' << info.doc_type << " id=\"" << info.doc_id.get(106) << "\"\n";
if(info.doc_type == "library")
{
- state.block << " name=\"" << encode(info.doc_title) << "\"\n";
+ state.block << " name=\"" << info.doc_title.get(106) << "\"\n";
}
if(!info.doc_dirname.empty())
{
- state.block << " dirname=\"" << encode(info.doc_dirname) << "\"\n";
+ state.block << " dirname=\"" << info.doc_dirname.get(106) << "\"\n";
}
state.block
- << "last-revision=\"" << encode(info.doc_last_revision) << "\""
+ << "last-revision=\"" << info.doc_last_revision.get(106) << "\""
<< " xmlns:xi=\"http://www.w3.org/2001/XInclude\"";
state.block << ">"; // end document tag.
@@ -466,11 +466,11 @@
// Title tag
std::string title;
- if(info.doc_title.begin() != info.doc_title.end())
+ if(!info.doc_title.empty())
{
- title = "<title>" + encode(info.doc_title);
+ title = "<title>" + info.doc_title.get(106);
if (!info.doc_version.empty())
- title += ' ' + info.doc_version.value;
+ title += ' ' + info.doc_version.get(106);
title += "</title>\n";
}
@@ -487,8 +487,8 @@
BOOST_FOREACH(doc_info::author const& author, info.doc_authors) {
state.block
<< "<author>\n"
- << "<firstname>" << author.firstname << "</firstname>\n"
- << "<surname>" << author.surname << "</surname>\n"
+ << "<firstname>" << author.firstname.get(106) << "</firstname>\n"
+ << "<surname>" << author.surname.get(106) << "</surname>\n"
<< "</author>\n";
}
state.block << "</authorgroup>\n";
@@ -504,17 +504,17 @@
}
state.block
- << "<holder>" << copyright.holder << "</holder>\n"
+ << "<holder>" << copyright.holder.get(106) << "</holder>\n"
<< "</copyright>\n"
;
}
- if (!boost::apply_visitor(empty_visitor(), info.doc_license))
+ if (!info.doc_license.empty())
{
state.block
<< "<legalnotice>\n"
<< "<para>\n"
- << boost::apply_visitor(encode_raw_visitor(*this), info.doc_license)
+ << info.doc_license.get(103)
<< "\n"
<< "</para>\n"
<< "</legalnotice>\n"
@@ -522,21 +522,21 @@
;
}
- if (!boost::apply_visitor(empty_visitor(), info.doc_purpose))
+ if (!info.doc_purpose.empty())
{
state.block
<< "<" << info.doc_type << "purpose>\n"
- << boost::apply_visitor(encode_raw_visitor(*this), info.doc_purpose)
+ << info.doc_purpose.get(103)
<< "</" << info.doc_type << "purpose>\n"
<< "\n"
;
}
- BOOST_FOREACH(raw_string const& category, info.doc_categories)
+ BOOST_FOREACH(docinfo_string const& category, info.doc_categories)
{
state.block
<< "<" << info.doc_type << "category name=\"category:"
- << encode(category)
+ << category.get(106)
<< "\"></" << info.doc_type << "category>\n"
<< "\n"
;
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-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -47,7 +47,7 @@
struct code_snippet_actions
{
code_snippet_actions(std::vector<define_template>& storage,
- raw_string const& doc_id,
+ std::string const& doc_id,
char const* source_type)
: process(*this)
, output(*this)
@@ -84,7 +84,7 @@
std::string snippet;
quickbook::callouts callouts;
std::vector<define_template>& storage;
- raw_string const doc_id;
+ std::string const doc_id;
char const* const source_type;
};
}
Modified: branches/quickbook-1.5-spirit2/doc/quickbook.qbk
==============================================================================
--- branches/quickbook-1.5-spirit2/doc/quickbook.qbk (original)
+++ branches/quickbook-1.5-spirit2/doc/quickbook.qbk 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -229,8 +229,12 @@
* Better generated markup for callout lists.
* In docbook, variable list entries can only have one `listitem`, so if an
entry has multiple values, merge them into one `listitem`.
+* Revert xml escaping document info, it broke some documentation files
+ (now a 1.6 feature).
* Further work on quickbook 1.6, still not stable.
* Allow heading to have ids, using the syntax: `[heading:id title]`.
+ * XML escape documentation fields, with escapes to allow encoding unicode
+ in ASCII.
[endsect]
Modified: branches/quickbook-1.5-spirit2/doc_info.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/doc_info.hpp (original)
+++ branches/quickbook-1.5-spirit2/doc_info.hpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -13,40 +13,60 @@
#include <vector>
#include <string>
#include <utility>
-#include <boost/variant/variant.hpp>
#include "fwd.hpp"
#include "strings.hpp"
namespace quickbook
{
+ struct docinfo_string {
+ std::string raw;
+ std::string encoded;
+
+ docinfo_string() : raw(), encoded() {}
+
+ void swap(docinfo_string& x) {
+ raw.swap(x.raw);
+ encoded.swap(x.encoded);
+ }
+
+ void clear() {
+ raw.clear();
+ encoded.clear();
+ }
+
+ bool empty() const {
+ return raw.empty();
+ }
+
+ std::string const& get(unsigned version) const;
+ };
+
struct doc_info
{
typedef std::vector<unsigned int> copyright_years;
struct copyright_entry {
copyright_years years;
- std::string holder;
+ docinfo_string holder;
};
typedef std::vector<copyright_entry> copyright_list;
- typedef std::vector<raw_string> category_list;
+ typedef std::vector<docinfo_string> category_list;
struct author {
- std::string firstname;
- std::string surname;
+ docinfo_string firstname;
+ docinfo_string surname;
};
typedef std::vector<author> author_list;
- typedef boost::variant<raw_string, std::string> variant_string;
- enum variant_string_enum { raw_string_type, string_type };
std::string doc_type;
- raw_string doc_title;
- raw_string doc_version;
- raw_string doc_id;
- raw_string doc_dirname;
+ docinfo_string doc_title;
+ docinfo_string doc_version;
+ docinfo_string doc_id;
+ docinfo_string doc_dirname;
copyright_list doc_copyrights;
- variant_string doc_purpose;
+ docinfo_string doc_purpose;
category_list doc_categories;
author_list doc_authors;
- variant_string doc_license;
- raw_string doc_last_revision;
+ docinfo_string doc_license;
+ docinfo_string doc_last_revision;
bool ignore;
};
Modified: branches/quickbook-1.5-spirit2/doc_info_actions.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/doc_info_actions.cpp (original)
+++ branches/quickbook-1.5-spirit2/doc_info_actions.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -23,25 +23,9 @@
namespace quickbook
{
- namespace
+ std::string const& docinfo_string::get(unsigned version) const
{
- struct empty_visitor {
- typedef bool result_type;
-
- template <typename T>
- bool operator()(T const& x) const {
- return x.empty();
- }
- };
-
- struct clear_visitor {
- typedef void result_type;
-
- template <typename T>
- void operator()(T& x) const {
- return x.clear();
- }
- };
+ return (qbk_version_n < version) ? raw : encoded;
}
void process(quickbook::state& state, version const& x)
@@ -88,17 +72,20 @@
// The doc_info in the file has been parsed. Here's what we'll do
// *before* anything else.
- if(!info.doc_title.empty())
- state.doc_title = info.doc_title;
+ if(!info.doc_title.empty()) {
+ state.doc_title = info.doc_title.get(106);
+ state.doc_title_raw = info.doc_title.raw;
+ }
if(info.doc_id.empty())
- info.doc_id = detail::make_identifier(state.doc_title);
+ info.doc_id.encoded = info.doc_id.raw = detail::make_identifier(state.doc_title_raw);
if(state.doc_id.empty())
- state.doc_id = info.doc_id;
+ state.doc_id = info.doc_id.get(106);
+ // TODO: Set from state.
if (info.doc_dirname.empty() && info.doc_type == "library")
- info.doc_dirname = state.doc_id;
+ info.doc_dirname = info.doc_id;
if (info.doc_last_revision.empty())
{
@@ -112,29 +99,34 @@
"$" /* prevent CVS substitution */ "Date: %Y/%m/%d %H:%M:%S $"),
current_gm_time
);
- info.doc_last_revision = strdate;
+ info.doc_last_revision.encoded = info.doc_last_revision.raw = strdate;
}
- std::vector<std::string> invalid_attributes;
+ // TODO: Should I do this when ignoring docinfo?
if (info.doc_type != "library")
{
- if (!boost::apply_visitor(empty_visitor(), info.doc_purpose))
+ std::vector<std::string> invalid_attributes;
+
+ if (!info.doc_purpose.empty())
invalid_attributes.push_back("purpose");
if (!info.doc_categories.empty())
invalid_attributes.push_back("category");
- }
- if(!invalid_attributes.empty())
- {
- detail::outwarn(state.filename.native(),1)
- << (invalid_attributes.size() > 1 ?
- "Invalid attributes" : "Invalid attribute")
- << " for '" << info.doc_type << "': "
- << boost::algorithm::join(invalid_attributes, ", ")
- << "\n"
- ;
+ if (!info.doc_dirname.empty())
+ invalid_attributes.push_back("dirname");
+
+ if(!invalid_attributes.empty())
+ {
+ detail::outwarn(state.filename.native(),1)
+ << (invalid_attributes.size() > 1 ?
+ "Invalid attributes" : "Invalid attribute")
+ << " for '" << info.doc_type << " document info': "
+ << boost::algorithm::join(invalid_attributes, ", ")
+ << "\n"
+ ;
+ }
}
state.encode(info);
Modified: branches/quickbook-1.5-spirit2/doc_info_grammar.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/doc_info_grammar.cpp (original)
+++ branches/quickbook-1.5-spirit2/doc_info_grammar.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -31,24 +31,30 @@
namespace qi = boost::spirit::qi;
namespace repo = boost::spirit::repository;
namespace ph = boost::phoenix;
-
+
struct doc_info_grammar_local
{
qi::symbols<char> doc_types;
qi::rule<iterator, version()> quickbook_version;
- qi::rule<iterator, raw_source()> doc_version;
- qi::rule<iterator, raw_source()> doc_id;
- qi::rule<iterator, raw_source()> doc_dirname;
- qi::rule<iterator, raw_source()> doc_category;
- qi::rule<iterator, raw_source()> doc_last_revision;
+ qi::rule<iterator, docinfo_string()> doc_version;
+ qi::rule<iterator, docinfo_string()> doc_id;
+ qi::rule<iterator, docinfo_string()> doc_dirname;
+ qi::rule<iterator, docinfo_string()> doc_category;
+ qi::rule<iterator, docinfo_string()> doc_last_revision;
qi::rule<iterator, std::string()> doc_source_mode; // TODO: raw_source
- qi::rule<iterator, doc_info::variant_string()> doc_purpose;
- qi::rule<iterator, doc_info::variant_string()> doc_license;
+ qi::rule<iterator, docinfo_string()> doc_purpose;
+ qi::rule<iterator, docinfo_string()> doc_license;
qi::rule<iterator, doc_info::copyright_entry()> doc_copyright;
qi::rule<iterator, doc_info::author_list()> doc_authors;
qi::rule<iterator, doc_info::author()> doc_author;
- qi::rule<iterator, quickbook::raw_string()> raw_phrase;
- qi::rule<iterator, std::string()> doc_info_phrase;
+ qi::rule<iterator, docinfo_string()> doc_info_phrase;
+ qi::rule<iterator, docinfo_string()> doc_info_text;
+ qi::rule<iterator, docinfo_string()> doc_info_text_comma;
+ qi::rule<iterator, docinfo_string()> doc_info_title;
+ qi::rule<iterator, std::string()> doc_info_phrase_impl;
+ qi::rule<iterator, std::string()> doc_info_text_impl;
+ qi::rule<iterator, std::string()> doc_info_text_comma_impl;
+ qi::rule<iterator, std::string()> doc_info_title_impl;
};
void quickbook_grammar::impl::init_doc_info()
@@ -62,14 +68,12 @@
, "appendix", "preface", "qandadiv", "qandaset"
, "reference", "set"
;
-
+
doc_info_details =
repo::confix(space >> '[' >> space, space >> ']' >> +qi::eol)
[ qi::raw[local.doc_types] [member_assign(&doc_info::doc_type)]
>> hard_space
- >> qi::raw[
- *(~qi::char_("[]") - qi::eol)
- ] [member_assign(&doc_info::doc_title)]
+ >> local.doc_info_title [member_assign(&doc_info::doc_title)]
>> local.quickbook_version [actions.process]
>> *repo::confix(space >> '[', space >> ']' >> +qi::eol)
[ local.doc_version [member_assign(&doc_info::doc_version)]
@@ -95,39 +99,36 @@
[ "quickbook"
>> hard_space
>> qi::uint_ [member_assign(&version::major)]
- >> '.'
+ >> '.'
>> uint2_t() [member_assign(&version::minor)]
]
;
- local.doc_version = "version" >> hard_space >> qi::raw[*~qi::char_(']')];
- local.doc_id = "id" >> hard_space >> qi::raw[*~qi::char_(']')];
- local.doc_dirname = "dirname" >> hard_space >> qi::raw[*~qi::char_(']')];
- local.doc_category="category" >> hard_space >> qi::raw[*~qi::char_(']')];
- local.doc_last_revision = "last-revision" >> hard_space >> qi::raw[*~qi::char_(']')];
+ local.doc_version = "version" >> hard_space >> local.doc_info_text;
+ local.doc_id = "id" >> hard_space >> local.doc_info_text;
+ local.doc_dirname = "dirname" >> hard_space >> local.doc_info_text;
+ local.doc_category="category" >> hard_space >> local.doc_info_text;
+ local.doc_last_revision = "last-revision" >> hard_space >> local.doc_info_text;
local.doc_copyright =
"copyright"
>> hard_space
>> (+(qi::uint_ >> space)) [member_assign(&doc_info::copyright_entry::years)]
- >> qi::raw[*~qi::char_(']')]
- [member_assign(&doc_info::copyright_entry::holder)]
+ >> local.doc_info_text [member_assign(&doc_info::copyright_entry::holder)]
;
local.doc_purpose =
- "purpose" >> hard_space
- >> (
- qi::eps(qbk_before(103)) >> local.raw_phrase |
- qi::eps(qbk_since(103)) >> local.doc_info_phrase
- )
+ "purpose"
+ >> hard_space
+ >> local.doc_info_phrase
;
local.doc_author =
'['
>> space
- >> (*~qi::char_(',')) [member_assign(&doc_info::author::surname)]
+ >> local.doc_info_text_comma [member_assign(&doc_info::author::surname)]
>> ',' >> space
- >> (*~qi::char_(']')) [member_assign(&doc_info::author::firstname)]
+ >> local.doc_info_text [member_assign(&doc_info::author::firstname)]
>> ']'
;
@@ -139,34 +140,77 @@
);
local.doc_license =
- "license" >> hard_space
- >> (
- qi::eps(qbk_before(103)) >> local.raw_phrase |
- qi::eps(qbk_since(103)) >> local.doc_info_phrase
- )
+ "license"
+ >> hard_space
+ >> local.doc_info_phrase
;
local.doc_source_mode =
"source-mode" >> hard_space
>> (
- qi::string("c++")
+ qi::string("c++")
| qi::string("python")
| qi::string("teletype")
)
;
- local.raw_phrase =
- qi::raw[local.doc_info_phrase]
- [qi::_val = qi::_1]
+ local.doc_info_phrase =
+ qi::raw[
+ local.doc_info_phrase_impl [member_assign(&docinfo_string::encoded)]
+ ] [member_assign(&docinfo_string::raw)]
;
- local.doc_info_phrase =
+ local.doc_info_text =
+ qi::raw[
+ local.doc_info_text_impl [member_assign(&docinfo_string::encoded)]
+ ] [member_assign(&docinfo_string::raw)]
+ ;
+
+ local.doc_info_text_comma =
+ qi::raw[
+ local.doc_info_text_comma_impl
+ [member_assign(&docinfo_string::encoded)]
+ ] [member_assign(&docinfo_string::raw)]
+ ;
+
+ local.doc_info_title =
+ qi::raw[
+ local.doc_info_title_impl [member_assign(&docinfo_string::encoded)]
+ ] [member_assign(&docinfo_string::raw)]
+ ;
+
+ local.doc_info_phrase_impl =
qi::eps [actions.phrase_push]
- >> *( common
+ >> *( common
| comment
| (~qi::char_(']')) [actions.process]
)
>> qi::eps [actions.phrase_pop]
;
+
+ local.doc_info_text_impl =
+ qi::eps [actions.phrase_push]
+ >> *( escape
+ | (~qi::char_(']')) [actions.process]
+ )
+ >> qi::eps [actions.phrase_pop]
+ ;
+
+ local.doc_info_text_comma_impl =
+ qi::eps [actions.phrase_push]
+ >> *( escape
+ | (~qi::char_("],")) [actions.process]
+ )
+ >> qi::eps [actions.phrase_pop]
+ ;
+
+ local.doc_info_title_impl =
+ qi::eps [actions.phrase_push]
+ >> *( escape
+ | (~qi::char_("[]") - qi::eol)
+ [actions.process]
+ )
+ >> qi::eps [actions.phrase_pop]
+ ;
}
}
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-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -104,28 +104,4 @@
typedef std::vector<footnote> footnotes;
std::stack<footnotes> footnote_stack;
};
-
- struct empty_visitor {
- typedef bool result_type;
-
- template <typename T>
- bool operator()(T const& x) const {
- return x.empty();
- }
- };
-
- struct encode_raw_visitor {
- typedef std::string result_type;
-
- encoder& encoder_;
- encode_raw_visitor(encoder& e) : encoder_(e) {}
-
- std::string operator()(raw_string const& x) const {
- return encoder_.encode(x);
- }
-
- std::string operator()(std::string const& x) const {
- return x;
- }
- };
}
\ No newline at end of file
Modified: branches/quickbook-1.5-spirit2/grammar_impl.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/grammar_impl.hpp (original)
+++ branches/quickbook-1.5-spirit2/grammar_impl.hpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -35,6 +35,7 @@
qi::symbols<char, qi::rule<iterator> > phrase_symbol_rules;
qi::rule<iterator> phrase_end;
qi::rule<iterator> call_template;
+ qi::rule<iterator> escape;
// block
qi::rule<iterator> block_start;
Modified: branches/quickbook-1.5-spirit2/html.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/html.cpp (original)
+++ branches/quickbook-1.5-spirit2/html.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -438,18 +438,17 @@
state.block
<< "<!DOCTYPE html>"
<< "<html><head>"
- << "<title>" << encode(info.doc_title) << "</title>"
+ << "<title>" << encode(info.doc_title.get(106)) << "</title>"
<< "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
<< "</head>"
<< "<body>"
<< "<header>"
- << "<h1>" << encode(info.doc_title) << "</h1>"
+ << "<h1>" << encode(info.doc_title.get(106)) << "</h1>"
;
if(!info.doc_authors.empty() || !info.doc_copyrights.empty() ||
- !boost::apply_visitor(empty_visitor(), info.doc_license))
+ !info.doc_license.empty())
{
-
state.block << "<dl>\n";
if(!info.doc_authors.empty())
@@ -463,9 +462,9 @@
BOOST_FOREACH(doc_info::author const& author, info.doc_authors) {
state.block
<< "<dd>"
- << author.firstname
+ << author.firstname.get(106)
<< " "
- << author.surname
+ << author.surname.get(106)
<< "</dd>\n";
}
}
@@ -511,18 +510,18 @@
state.block
<< " "
- << copyright.holder
+ << copyright.holder.get(106)
<< "</dd>\n"
;
}
}
- if (!boost::apply_visitor(empty_visitor(), info.doc_license))
+ if (!info.doc_license.empty())
{
state.block
<< "<dt>License:</dt>\n"
<< "<dd>"
- << boost::apply_visitor(encode_raw_visitor(*this), info.doc_license)
+ << info.doc_license.get(103)
<< "</dd>\n"
;
}
Modified: branches/quickbook-1.5-spirit2/phrase_grammar.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/phrase_grammar.cpp (original)
+++ branches/quickbook-1.5-spirit2/phrase_grammar.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -39,7 +39,6 @@
qi::rule<iterator, void(char)> simple_format_chars;
qi::rule<iterator, void(char)> simple_format_end;
qi::rule<iterator> simple_phrase_end;
- qi::rule<iterator> escape;
qi::rule<iterator, quickbook::break_()> escape_break;
qi::rule<iterator, quickbook::formatted()> escape_punct;
qi::rule<iterator, quickbook::formatted()> escape_markup;
@@ -71,7 +70,7 @@
| code_block [actions.process]
| inline_code [actions.process]
| local.simple_format [actions.process]
- | local.escape
+ | escape
| comment
;
@@ -133,7 +132,7 @@
local.simple_phrase_end = '[' | phrase_end;
- local.escape =
+ escape =
( local.escape_break
| "\\ " // ignore an escaped char
| local.escape_punct
Modified: branches/quickbook-1.5-spirit2/state.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/state.hpp (original)
+++ branches/quickbook-1.5-spirit2/state.hpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -35,8 +35,9 @@
static int const max_template_depth = 100;
- raw_string doc_id;
- raw_string doc_title;
+ std::string doc_id;
+ std::string doc_title;
+ std::string doc_title_raw;
// main output stream
collector phrase;
Modified: branches/quickbook-1.5-spirit2/template.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/template.cpp (original)
+++ branches/quickbook-1.5-spirit2/template.cpp 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -417,7 +417,7 @@
for(unsigned int i = 0; i < size; ++i)
{
- std::string callout_id = state.doc_id.value +
+ std::string callout_id = state.doc_id +
boost::lexical_cast<std::string>(detail::callout_id + i);
std::string code;
@@ -482,7 +482,7 @@
if(x.symbol->callouts.size()) {
callout_list list;
BOOST_FOREACH(callout_source const& c, x.symbol->callouts) {
- std::string callout_id = state.doc_id.value +
+ std::string callout_id = state.doc_id +
boost::lexical_cast<std::string>(detail::callout_id++);
std::string callout_value;
Modified: branches/quickbook-1.5-spirit2/test/doc-info-1.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/doc-info-1.gold (original)
+++ branches/quickbook-1.5-spirit2/test/doc-info-1.gold 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,17 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<article id="document_information_1" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+<article id="karel_vom_u00e1_u010dka_and_tom_u00e1_u0161_martin_u00edk" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
xmlns:xi="http://www.w3.org/2001/XInclude">
- <title>Document Information 1</title>
+ <title>Karel Vomáčka and Tomáš Martiník</title>
<articleinfo>
<authorgroup>
<author>
- <firstname>Joe</firstname> <surname>Blow</surname>
+ <firstname>Matti</firstname> <surname>Meikäläinen</surname>
</author>
<author>
- <firstname>Jane</firstname> <surname>Doe</surname>
+ <firstname>Pero</firstname> <surname>Perić</surname>
</author>
</authorgroup>
+ <copyright>
+ <year>2010</year> <holder>Meðal-Jón and Jóna Jónsdóttir</holder>
+ </copyright>
<articlepurpose>
Inline code test: <code>1 + 2</code>
</articlepurpose>
Modified: branches/quickbook-1.5-spirit2/test/doc-info-1.quickbook
==============================================================================
--- branches/quickbook-1.5-spirit2/test/doc-info-1.quickbook (original)
+++ branches/quickbook-1.5-spirit2/test/doc-info-1.quickbook 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,6 +1,7 @@
-[article Document Information 1
-[quickbook 1.5]
-[authors [Blow, Joe], [Doe, Jane]]
+[article Karel Vom\u00E1\u010Dka and Tom\u00E1\u0161 Martin\u00EDk
+[quickbook 1.6]
+[authors [Meik\u00E4l\u00E4inen, Matti][Peri\u0107, Pero]]
+[copyright 2010 Me\u00F0al-J\u00F3n and J\u00F3na J\u00F3nsd\u00F3ttir]
[source-mode teletype]
[purpose Inline code test: `1 + 2`]
[category tests]
Modified: branches/quickbook-1.5-spirit2/test/doc-info-2.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/doc-info-2.gold (original)
+++ branches/quickbook-1.5-spirit2/test/doc-info-2.gold 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,20 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<library id="document_information_1" name="Document Information 1" dirname="document_information_1"
-last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
+<library id="karel_vom__xe1___x10d_ka_and_tom__xe1___x161__martin__xed_k" name="Karel Vomáčka and Tomáš Martiník"
+dirname="karel_vom__xe1___x10d_ka_and_tom__xe1___x161__martin__xed_k" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+ xmlns:xi="http://www.w3.org/2001/XInclude">
<libraryinfo>
<authorgroup>
<author>
- <firstname>Joe</firstname> <surname>Blow</surname>
+ <firstname>Matti</firstname> <surname>Meikäläinen</surname>
</author>
<author>
- <firstname>Jane</firstname> <surname>Doe</surname>
+ <firstname>Pero</firstname> <surname>Perić</surname>
</author>
</authorgroup>
+ <copyright>
+ <year>2010</year> <holder>Meðal-Jón and Jóna Jónsdóttir</holder>
+ </copyright>
<librarypurpose>
Inline code test: <code>1 + 2</code>
</librarypurpose>
<librarycategory name="category:tests"></librarycategory> <librarycategory name="category:irrelevance"></librarycategory>
</libraryinfo>
- <title>Document Information 1</title>
+ <title>Karel Vomáčka and Tomáš Martiník</title>
</library>
Modified: branches/quickbook-1.5-spirit2/test/doc-info-2.quickbook
==============================================================================
--- branches/quickbook-1.5-spirit2/test/doc-info-2.quickbook (original)
+++ branches/quickbook-1.5-spirit2/test/doc-info-2.quickbook 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,6 +1,7 @@
-[library Document Information 1
+[library Karel Vomáčka and Tomáš Martiník
[quickbook 1.5]
-[authors [Blow, Joe] [Doe, Jane]]
+[authors [Meikäläinen, Matti],[Perić, Pero]]
+[copyright 2010 Meðal-Jón and Jóna Jónsdóttir]
[source-mode teletype]
[purpose Inline code test: `1 + 2`]
[category tests]
Modified: branches/quickbook-1.5-spirit2/test/xml-escape_1_2.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/xml-escape_1_2.gold (original)
+++ branches/quickbook-1.5-spirit2/test/xml-escape_1_2.gold 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,15 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<library id="test_that______are_being_escaped_" name="Test that &, < are being escaped."
-dirname="test_that______are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+<library id="test_that__amp____lt__are_being_escaped_" name="Test that &, < are being escaped."
+dirname="test_that__amp____lt__are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
xmlns:xi="http://www.w3.org/2001/XInclude">
<libraryinfo>
+ <legalnotice>
+ <para>
+ & should be &amp;, < should &lt;
+ </para>
+ </legalnotice>
<librarypurpose>
& should be &amp;, < should &lt;
</librarypurpose>
</libraryinfo>
<title>Test that &, < are being escaped.</title>
- <section id="test_that______are_being_escaped_.escapes___explicitly_written_markup">
+ <section id="test_that__amp____lt__are_being_escaped_.escapes___explicitly_written_markup">
<title>Escapes & explicitly written markup</title>
<itemizedlist>
<listitem>
Modified: branches/quickbook-1.5-spirit2/test/xml-escape_1_2.quickbook
==============================================================================
--- branches/quickbook-1.5-spirit2/test/xml-escape_1_2.quickbook (original)
+++ branches/quickbook-1.5-spirit2/test/xml-escape_1_2.quickbook 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,6 +1,7 @@
-[library Test that &, < are being escaped.
+[library Test that &, < are being escaped.
[quickbook 1.2]
- [purpose & should be &, < should <]
+ [purpose & should be &amp;, < should &lt;]
+ [license & should be &amp;, < should &lt;]
]
[section Escapes & explicitly written markup]
Modified: branches/quickbook-1.5-spirit2/test/xml-escape_1_5.gold
==============================================================================
--- branches/quickbook-1.5-spirit2/test/xml-escape_1_5.gold (original)
+++ branches/quickbook-1.5-spirit2/test/xml-escape_1_5.gold 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,16 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<library id="test_that______are_being_escaped_" name="Test that &, < are being escaped."
-dirname="test_that______are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+<library id="test_that__amp____lt__are_being_escaped_" name="Test that &, < are being escaped."
+dirname="test_that__amp____lt__are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
xmlns:xi="http://www.w3.org/2001/XInclude">
<libraryinfo>
+ <legalnotice>
+ <para>
+ & should be &amp;, < should &lt;
+ </para>
+ </legalnotice>
<librarypurpose>
& should be &amp;, < should &lt;
</librarypurpose>
</libraryinfo>
<title>Test that &, < are being escaped.</title>
- <section id="test_that______are_being_escaped_.escapes___explicitly_written_markup">
- <title><link linkend="test_that______are_being_escaped_.escapes___explicitly_written_markup">Escapes
+ <section id="test_that__amp____lt__are_being_escaped_.escapes___explicitly_written_markup">
+ <title><link linkend="test_that__amp____lt__are_being_escaped_.escapes___explicitly_written_markup">Escapes
& explicitly written markup</link></title>
<itemizedlist>
<listitem>
Modified: branches/quickbook-1.5-spirit2/test/xml-escape_1_5.quickbook
==============================================================================
--- branches/quickbook-1.5-spirit2/test/xml-escape_1_5.quickbook (original)
+++ branches/quickbook-1.5-spirit2/test/xml-escape_1_5.quickbook 2010-08-31 16:03:07 EDT (Tue, 31 Aug 2010)
@@ -1,6 +1,7 @@
-[library Test that &, < are being escaped.
+[library Test that &, < are being escaped.
[quickbook 1.5]
[purpose & should be &, < should <]
+ [license & should be &, < should <]
]
[section Escapes & explicitly written markup]
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