diff --git a/Jamfile.v2 b/Jamfile.v2 index 50935b7..e21ebc8 100644 --- a/Jamfile.v2 +++ b/Jamfile.v2 @@ -49,6 +49,8 @@ exe quickbook /boost//program_options /boost//filesystem : #QUICKBOOK_NO_DATES + # Still using 'normalize' which has been deprecated. + #BOOST_FILESYSTEM_NO_DEPRECATED msvc:/wd4355 msvc:/wd4511 msvc:/wd4512 diff --git a/block_actions.cpp b/block_actions.cpp index 665aa3f..1a9d84b 100644 --- a/block_actions.cpp +++ b/block_actions.cpp @@ -243,7 +243,7 @@ namespace quickbook fs::path include_search(fs::path const & current, std::string const & name) { - fs::path path(name,fs::native); + fs::path path(name); // If the path is relative, try and resolve it. if (!path.is_complete()) @@ -257,7 +257,7 @@ namespace quickbook // Search in each of the include path locations. BOOST_FOREACH(std::string const & p, include_path) { - fs::path full(p,fs::native); + fs::path full(p); full /= path; if (fs::exists(full)) { @@ -295,7 +295,7 @@ namespace quickbook if (!path.is_complete()) { fs::path infile = fs::complete(state.filename).normalize(); - path = (infile.branch_path() / path).normalize(); + path = (infile.parent_path() / path).normalize(); fs::path outdir = fs::complete(state.outdir).normalize(); path = path_difference(outdir, path); } @@ -312,7 +312,7 @@ namespace quickbook nothing process(quickbook::state& state, include const& x) { - fs::path filein = include_search(state.filename.branch_path(), x.path); + fs::path filein = include_search(state.filename.parent_path(), x.path); raw_string doc_id; // swap the filenames @@ -342,10 +342,10 @@ namespace quickbook // update the __FILENAME__ macro *state.macro.find("__FILENAME__") = - quickbook::macro(state.filename.native_file_string()); + quickbook::macro(state.filename.file_string()); // parse the file - quickbook::parse(state.filename.native_file_string().c_str(), state, true); + quickbook::parse(state.filename.file_string().c_str(), state, true); // restore the values std::swap(state.filename, filein); @@ -369,8 +369,8 @@ namespace quickbook nothing process(quickbook::state& state, import const& x) { - fs::path path = include_search(state.filename.branch_path(), x.path); - std::string ext = fs::extension(path); + fs::path path = include_search(state.filename.parent_path(), x.path); + std::string ext = path.extension(); std::vector storage; state.error_count += load_snippets(path.string(), storage, ext, state.doc_id); diff --git a/block_grammar.cpp b/block_grammar.cpp index f7343e3..3dc70a5 100644 --- a/block_grammar.cpp +++ b/block_grammar.cpp @@ -55,7 +55,7 @@ namespace quickbook | code [actions.process] | list [actions.process] | hr [actions.process] - | comment >> *eol + | comment >> +eol | paragraph [actions.process] | eol ) @@ -102,7 +102,7 @@ namespace quickbook *( common | (qi::char_ - ( qi::eol >> *qi::blank >> &(qi::char_('*') | '#') - | (eol >> eol) + | (eol >> *qi::blank >> qi::eol) ) ) [actions.process] ) @@ -136,7 +136,7 @@ namespace quickbook ; paragraph_end = - '[' >> space >> paragraph_end_markups >> hard_space | eol >> eol + '[' >> space >> paragraph_end_markups >> hard_space | eol >> *qi::blank >> qi::eol ; paragraph_end_markups = diff --git a/block_markup_grammar.cpp b/block_markup_grammar.cpp index ab5097f..5451021 100644 --- a/block_markup_grammar.cpp +++ b/block_markup_grammar.cpp @@ -374,8 +374,7 @@ namespace quickbook inside_paragraph = qi::eps [actions.phrase_push] >> inside_paragraph2 [actions.process] - >> *( eol - >> eol + >> *( +eol >> inside_paragraph2 [actions.process] ) >> qi::eps [actions.phrase_pop] @@ -397,7 +396,7 @@ namespace quickbook // Make sure that we don't go past a single block, except when // preformatted. phrase_end = - ']' | qi::eps(ph::ref(no_eols)) >> eol >> eol + ']' | qi::eps(ph::ref(no_eols)) >> eol >> *qi::blank >> qi::eol ; // Identifiers diff --git a/boostbook.cpp b/boostbook.cpp index c188033..4809718 100644 --- a/boostbook.cpp +++ b/boostbook.cpp @@ -63,14 +63,14 @@ namespace quickbook { "h5", "", "" }, { "h6", "", "" }, { "blurb", "\n", "\n" }, - { "blockquote", "
", "
" }, + { "blockquote", "
", "
" }, { "preformatted", "", "" }, { "warning", "", "" }, { "caution", "", "" }, { "important", "", "" }, { "note", "", "" }, { "tip", "", "" }, - { "list_item", "\n", "\n" }, + { "list_item", "\n", "\n" }, { "bold", "", "" }, { "italic", "", "" }, { "underline", "", "" }, @@ -354,9 +354,9 @@ namespace quickbook for(std::vector::const_iterator it = x.items.begin(), end = x.items.end(); it != end; ++it) { - state.phrase << "\n" << it->content; + state.phrase << "\n" << it->content; if(!it->sublist.items.empty()) (*this)(state, it->sublist); - state.phrase << std::string("\n"); + state.phrase << std::string("\n"); } state.phrase << std::string(x.mark == '#' ? "\n" : "\n"); @@ -365,11 +365,10 @@ namespace quickbook void boostbook_encoder::operator()(quickbook::state& state, callout_link const& x) { state.phrase - << "" << "" - << ""; + ; } void boostbook_encoder::operator()(quickbook::state& state, callout_list const& x) @@ -412,7 +411,9 @@ namespace quickbook state.phrase << "\n" - << ""; // Document tag @@ -505,11 +506,11 @@ namespace quickbook ; } - if (!info.doc_category.empty()) + BOOST_FOREACH(raw_string const& category, info.doc_categories) { state.phrase << "<" << info.doc_type << "category name=\"category:" - << encode(info.doc_category) + << encode(category) << "\">\n" << "\n" ; diff --git a/code_snippet_grammar.cpp b/code_snippet_grammar.cpp index 27557f0..cee7208 100644 --- a/code_snippet_grammar.cpp +++ b/code_snippet_grammar.cpp @@ -36,8 +36,6 @@ namespace quickbook code_elements; qi::rule identifier; - qi::rule - inline_callout, line_callout; qi::rule escaped_comment; }; diff --git a/doc/quickbook.qbk b/doc/quickbook.qbk index 858ed1a..61b74a3 100644 --- a/doc/quickbook.qbk +++ b/doc/quickbook.qbk @@ -192,6 +192,19 @@ Features include: * Add command line flag to define macros at the command line, e.g. `quickbook "-D__italic_foo__=/foo/"`. +[h3 Version 1.5.2 - Boost 1.44.0] + +* Generate more valid boostbook (still invalid in a few places). +* Warn about invalid doc_info members. +* Support multiple categories in library doc_info. +* Use the cygwin 1.7 API for better path handling. +* Fix some corner cases for paragraph detection: + * A line containing only a comment is no longer interpreted as a + paragraph break. + * If a line starts with a comment, interpret it as a paragraph even if it's + followed by whitespace or a list character. + * Don't treat 4+ consecutive blank lines as multiple paragraph breaks. + [endsect] [section:syntax Syntax Summary] diff --git a/doc_info.hpp b/doc_info.hpp index 43c724b..52c711d 100644 --- a/doc_info.hpp +++ b/doc_info.hpp @@ -24,6 +24,7 @@ namespace quickbook typedef std::vector copyright_years; typedef std::pair copyright_entry; typedef std::vector copyright_list; + typedef std::vector category_list; typedef std::pair author; typedef std::vector author_list; typedef boost::variant variant_string; @@ -36,7 +37,7 @@ namespace quickbook raw_string doc_dirname; copyright_list doc_copyrights; variant_string doc_purpose; - raw_string doc_category; + category_list doc_categories; author_list doc_authors; variant_string doc_license; raw_string doc_last_revision; diff --git a/doc_info_actions.cpp b/doc_info_actions.cpp index 96ea36c..5557662 100644 --- a/doc_info_actions.cpp +++ b/doc_info_actions.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "fwd.hpp" #include "collector.hpp" #include "quickbook.hpp" @@ -21,6 +22,27 @@ namespace quickbook { + namespace + { + struct empty_visitor { + typedef bool result_type; + + template + bool operator()(T const& x) const { + return x.empty(); + } + }; + + struct clear_visitor { + typedef void result_type; + + template + void operator()(T& x) const { + return x.clear(); + } + }; + } + doc_info process(quickbook::state& state, doc_info const& x) { doc_info info = x; @@ -56,6 +78,34 @@ namespace quickbook info.doc_last_revision = strdate; } + std::vector invalid_attributes; + + if (info.doc_type != "library") + { + if (!boost::apply_visitor(empty_visitor(), info.doc_purpose)) + { + boost::apply_visitor(clear_visitor(), info.doc_purpose); + invalid_attributes.push_back("purpose"); + } + + if (!info.doc_categories.empty()) + { + info.doc_categories.clear(); + invalid_attributes.push_back("category"); + } + } + + if(!invalid_attributes.empty()) + { + detail::outwarn(state.filename.file_string(),1) + << (invalid_attributes.size() > 1 ? + "Invalid attributes" : "Invalid attribute") + << " for '" << info.doc_type << "': " + << boost::algorithm::join(invalid_attributes, ", ") + << "\n" + ; + } + return info; } } diff --git a/doc_info_grammar.cpp b/doc_info_grammar.cpp index 8db5eb7..79fb26b 100644 --- a/doc_info_grammar.cpp +++ b/doc_info_grammar.cpp @@ -44,7 +44,7 @@ namespace quickbook qbk_minor_version = 1; // TODO: - //detail::outwarn(actions.filename.native_file_string(),1) + //detail::outwarn(actions.filename.file_string(),1) // << "Warning: Quickbook version undefined. " // "Version 1.1 is assumed" << std::endl; } @@ -95,9 +95,9 @@ namespace quickbook doc_version [member_assign(&doc_info::doc_version)] | doc_id [member_assign(&doc_info::doc_id)] | doc_dirname [member_assign(&doc_info::doc_dirname)] - | doc_copyright [ph::push_back(ph::bind(&doc_info::doc_copyrights, qi::_val), qi::_1)] + | doc_copyright [member_push(&doc_info::doc_copyrights)] | doc_purpose [member_assign(&doc_info::doc_purpose)] - | doc_category [member_assign(&doc_info::doc_category)] + | doc_category [member_push(&doc_info::doc_categories)] | doc_authors [member_assign(&doc_info::doc_authors)] | doc_license [member_assign(&doc_info::doc_license)] | doc_last_revision [member_assign(&doc_info::doc_last_revision)] diff --git a/input_path.cpp b/input_path.cpp index 15a82da..d984936 100644 --- a/input_path.cpp +++ b/input_path.cpp @@ -7,14 +7,11 @@ =============================================================================*/ #include -#include "input_path.hpp" +#include "./input_path.hpp" -#if defined(__cygwin__) || defined(__CYGWIN__) -#include -#include -#include -#endif +#if !(defined(__cygwin__) || defined(__CYGWIN__)) +// Everything but cygwin namespace quickbook { namespace detail { @@ -25,18 +22,84 @@ namespace quickbook { namespace detail std::string path = boost::program_options::validators::get_single_string(values); -#if !(defined(__cygwin__) || defined(__CYGWIN__)) v = input_path(path); -#elif defined(BOOST_WINDOWS_PATH) + } +}} + +#elif defined(QUICKBOOK_CYGWIN_1_5) + +// Cygwin 1.5.x + +#include +#include +#include + +namespace quickbook { namespace detail +{ + void validate(boost::any& v, + const std::vector& values, + input_path*, int) + { + std::string path + = boost::program_options::validators::get_single_string(values); + char result[MAX_PATH + 1]; + +#if defined(BOOST_WINDOWS_PATH) cygwin_conv_to_win32_path(path.c_str(), result); - v = input_path(result); #elif defined(BOOST_POSIX_PATH) - char result[MAX_PATH + 1]; cygwin_conv_to_posix_path(path.c_str(), result); - v = input_path(result); #else # error "Bosot filesystem path type doesn't seem to be set." #endif + + v = input_path(result); } }} + +#else + +// Cygwin 1.7.x + +#include +#include +#include +#include +#include + +namespace quickbook { namespace detail +{ + void validate(boost::any& v, + const std::vector& values, + input_path*, int) + { + std::string path + = boost::program_options::validators::get_single_string(values); + +#if defined(BOOST_WINDOWS_PATH) + cygwin_conv_path_t flags = CCP_POSIX_TO_WIN_A | CCP_RELATIVE; +#elif defined(BOOST_POSIX_PATH) + cygwin_conv_path_t flags = CCP_WIN_A_TO_POSIX | CCP_RELATIVE; +#else +# error "Bosot filesystem path type doesn't seem to be set." +#endif + + ssize_t size = cygwin_conv_path(flags, path.c_str(), NULL, 0); + + if (size < 0) { + throw boost::program_options::validation_error( + boost::program_options::validation_error::invalid_option_value); + } + + boost::scoped_array result(new char[size]); + + if(cygwin_conv_path(flags, path.c_str(), result.get(), size)) { + throw boost::program_options::validation_error( + boost::program_options::validation_error::invalid_option_value); + } + + v = input_path(result.get()); + } +}} + +#endif diff --git a/parse_utils.hpp b/parse_utils.hpp index d4e7a79..c2d3223 100644 --- a/parse_utils.hpp +++ b/parse_utils.hpp @@ -63,6 +63,54 @@ namespace quickbook member_assign_type member_assign(Member Struct::*mem_ptr) { return member_assign_type(mem_ptr); } + + // member_push - action to push the attribute to a member of the + // rule's attributte. + + template + struct member_push_type { + member_push_type(Member Struct::*mem_ptr) : mem_ptr_(mem_ptr) {} + + template + void operator()(Member& attrib, Context& context, bool& pass) const { + ph::bind(mem_ptr_, spirit::_val)(attrib, context, pass) + .push_back(attrib); + } + + template + void operator()(Attrib& attrib, Context& context, bool& pass) const { + ph::bind(mem_ptr_, spirit::_val)(attrib, context, pass) + .push_back(typename Member::value_type(attrib)); + } + + Member Struct::*mem_ptr_; + }; + + template + struct member_push_type > { + member_push_type(std::vector Struct::*mem_ptr) : mem_ptr_(mem_ptr) {} + + template + void operator()(std::string& attrib, Context& context, bool& pass) const { + ph::bind(mem_ptr_, spirit::_val)(attrib, context, pass) + .push_back(attrib); + } + + template + void operator()(Attrib& attrib, Context& context, bool& pass) const { + ph::bind(mem_ptr_, spirit::_val)(attrib, context, pass) + .push_back(std::string(attrib.begin(), attrib.end())); + } + + std::vector Struct::*mem_ptr_; + }; + + template + member_push_type member_push(Member Struct::*mem_ptr) { + return member_push_type(mem_ptr); + } + + } #endif diff --git a/phrase_image.cpp b/phrase_image.cpp index 01041b5..f863759 100644 --- a/phrase_image.cpp +++ b/phrase_image.cpp @@ -48,9 +48,9 @@ namespace quickbook fs::path const img_path(x.image_filename); attributes.insert(attribute("fileref", x.image_filename)); // Note: If there is already an alt attribute this is a no-op. - attributes.insert(attribute("alt", fs::basename(img_path))); + attributes.insert(attribute("alt", img_path.stem())); - if(fs::extension(img_path) == ".svg") + if(img_path.extension() == ".svg") { // // SVG's need special handling: diff --git a/post_process.cpp b/post_process.cpp index 5557e92..c421858 100644 --- a/post_process.cpp +++ b/post_process.cpp @@ -193,7 +193,6 @@ namespace quickbook , "caution" , "copyright" , "entry" - , "footnote" , "important" , "informaltable" , "itemizedlist" @@ -204,6 +203,7 @@ namespace quickbook , "para" , "row" , "section" + , "simpara" , "table" , "tbody" , "textobject" diff --git a/quickbook.cpp b/quickbook.cpp index 074a98f..2576cfe 100644 --- a/quickbook.cpp +++ b/quickbook.cpp @@ -30,7 +30,7 @@ #pragma warning(disable:4355) #endif -#define QUICKBOOK_VERSION "Quickbook Version 1.5.2" +#define QUICKBOOK_VERSION "Quickbook Spirit 2 port" namespace quickbook { @@ -153,7 +153,7 @@ namespace quickbook { int result = 0; std::ofstream fileout(fileout_); - fs::path outdir = fs::path(fileout_, fs::native).branch_path(); + fs::path outdir = fs::path(fileout_).parent_path(); if (outdir.empty()) outdir = "."; if (pretty_print) @@ -203,7 +203,7 @@ main(int argc, char* argv[]) using boost::program_options::positional_options_description; // First thing, the filesystem should record the current working directory. - boost::filesystem::initial_path(); + boost::filesystem::initial_path(); options_description desc("Allowed options"); desc.add_options() diff --git a/state.cpp b/state.cpp index 8161408..bc0a848 100644 --- a/state.cpp +++ b/state.cpp @@ -33,7 +33,7 @@ namespace quickbook , encoder(encoder) // state - , filename(fs::complete(fs::path(filein_, fs::native))) + , filename(fs::complete(fs::path(filein_))) , outdir(outdir_) , macro() , section_level(0) @@ -50,7 +50,7 @@ namespace quickbook // turn off __FILENAME__ macro on debug mode = true std::string filename_str = debug_mode ? std::string("NO_FILENAME_MACRO_GENERATED_IN_DEBUG_MODE") : - filename.native_file_string(); + filename.file_string(); // add the predefined macros macro.add diff --git a/strings.hpp b/strings.hpp index c706b05..ff3f912 100644 --- a/strings.hpp +++ b/strings.hpp @@ -31,6 +31,7 @@ namespace quickbook std::string::const_iterator begin() const { return value.begin(); } std::string::const_iterator end() const { return value.end(); } bool empty() const { return value.empty(); } + void clear() { value.clear(); } std::string value; }; diff --git a/template.cpp b/template.cpp index 6558d73..4fee10a 100644 --- a/template.cpp +++ b/template.cpp @@ -328,7 +328,7 @@ namespace quickbook quickbook_grammar g(actions); // do a phrase level parse - iterator first(body.begin(), body.end(), state.filename.native_file_string().c_str()); + iterator first(body.begin(), body.end(), state.filename.file_string().c_str()); first.set_position(template_pos); iterator last(body.end(), body.end()); r = boost::spirit::qi::parse(first, last, g.simple_phrase) && first == last; @@ -344,7 +344,7 @@ namespace quickbook // the need to check for end of file in the grammar. body += "\n\n"; - iterator first(body.begin(), body.end(), state.filename.native_file_string().c_str()); + iterator first(body.begin(), body.end(), state.filename.file_string().c_str()); first.set_position(template_pos); iterator last(body.end(), body.end()); diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a83cc37..985c2a1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -32,15 +32,18 @@ test-suite quickbook.test : [ quickbook-test section_1_4 ] [ quickbook-test section_1_5 ] [ quickbook-test heading ] + [ quickbook-test para-test ] [ quickbook-test table_1_5 ] [ quickbook-test image_1_5 ] [ quickbook-test list_test ] [ quickbook-test cond_phrase ] [ quickbook-test doc-info-1 ] + [ quickbook-test doc-info-2 ] [ quickbook-test callouts ] [ quickbook-test simple_markup ] [ quickbook-test xml-escape_1_2 ] [ quickbook-test xml-escape_1_5 ] + [ quickbook-test blocks ] [ quickbook-fail-test fail-include ] [ quickbook-fail-test fail-import ] [ quickbook-fail-test fail-template-arguments1 ] diff --git a/test/blocks.gold b/test/blocks.gold new file mode 100644 index 0000000..da0132c --- /dev/null +++ b/test/blocks.gold @@ -0,0 +1,89 @@ + + +
+ Various blocks + + + + + Blockquotes + + + Here's a blockquote: + +
+ + Blockquote. + +
+ + And another: + +
+ + Blockquote first paragraph. + + + Blockquote second paragraph. + +
+ + + Admonitions + + + + Warning + + + + + Caution + + + + + Important + + + + + Note + + + + + Tip + + + + + Warning first paragraph. + + + Warning second paragraph. + + + + + Blurb + + + + Blurb + + + + Inline blocks + +
+ + Blockquote containing a footnote + + Here it is! + + . + +
+
diff --git a/test/blocks.quickbook b/test/blocks.quickbook new file mode 100644 index 0000000..9b4736e --- /dev/null +++ b/test/blocks.quickbook @@ -0,0 +1,39 @@ +[article Various blocks +[quickbook 1.5] +] + +[heading Blockquotes] + +Here's a blockquote: + +[:Blockquote.] + +And another: + +[: +Blockquote first paragraph. + +Blockquote second paragraph. +] + +[heading Admonitions] + +[warning Warning] +[caution Caution] +[important Important] +[note Note] +[tip Tip] + +[warning Warning first paragraph. + +Warning second paragraph.] + +[heading Blurb] + +[blurb Blurb] + +[heading Inline blocks] + +[: Blockquote containing a footnote[footnote Here it is!].] + +[/ Unfortunately footnotes currently can't contain blocks.] \ No newline at end of file diff --git a/test/callouts.gold b/test/callouts.gold index a4fc307..ee41292 100644 --- a/test/callouts.gold +++ b/test/callouts.gold @@ -1,5 +1,5 @@ - +
Callout Tests @@ -15,7 +15,7 @@ int roll_die() { - boost::uniform_int<> dist(1, 6); + boost::uniform_int<> dist(1, 6); } @@ -35,7 +35,7 @@ int roll_die() { - boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist); + boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist); } @@ -57,7 +57,7 @@ int roll_die() { - boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist); + boost::variate_generator<boost::mt19937&, boost::uniform_int<> > die(gen, dist); } diff --git a/test/code-block-1.gold b/test/code-block-1.gold index 96eb3ba..ddcca15 100644 --- a/test/code-block-1.gold +++ b/test/code-block-1.gold @@ -1,5 +1,5 @@ - +
Code Block 1 diff --git a/test/code-block-2.gold b/test/code-block-2.gold index 85330c0..471f025 100644 --- a/test/code-block-2.gold +++ b/test/code-block-2.gold @@ -1,5 +1,5 @@ - +
Code Block 2 diff --git a/test/code-block-3.gold b/test/code-block-3.gold index 34b7a20..f81b793 100644 --- a/test/code-block-3.gold +++ b/test/code-block-3.gold @@ -1,5 +1,5 @@ - +
Code Block 3 diff --git a/test/code-block-teletype.gold b/test/code-block-teletype.gold index 821b9a0..ffa7b2a 100644 --- a/test/code-block-teletype.gold +++ b/test/code-block-teletype.gold @@ -1,5 +1,5 @@ - +
Code Block Teletype 1 diff --git a/test/code-snippet.gold b/test/code-snippet.gold index 26de71d..bea46bc 100644 --- a/test/code-snippet.gold +++ b/test/code-snippet.gold @@ -1,5 +1,5 @@ - +
Code Snippets @@ -16,5 +16,9 @@ }, should be properly formatted and not glued to the surrounding text. + + There shoud be no spacees around (this), + and spaces around this code. +
diff --git a/test/code-snippet.quickbook b/test/code-snippet.quickbook index 8c4e94c..8751627 100644 --- a/test/code-snippet.quickbook +++ b/test/code-snippet.quickbook @@ -7,4 +7,6 @@ Code snippets inlined in text, as in `namespace quickbook { static const int value = 0; }`, should be properly formatted and not glued to the surrounding text. +There shoud be no spacees around (`this`), and spaces around `this` code. + [endsect] diff --git a/test/cond_phrase.gold b/test/cond_phrase.gold index 605982b..3b4ca63 100644 --- a/test/cond_phrase.gold +++ b/test/cond_phrase.gold @@ -1,5 +1,5 @@ - +
Coniditional Phrase Test diff --git a/test/doc-info-1.gold b/test/doc-info-1.gold index 0882f76..020edce 100644 --- a/test/doc-info-1.gold +++ b/test/doc-info-1.gold @@ -1,12 +1,9 @@ - +
Document Information 1 - - Inline code test: 1 + 2 - The body is largely irrelevant. diff --git a/test/doc-info-1.quickbook b/test/doc-info-1.quickbook index 44d5bb3..5ad3dbe 100644 --- a/test/doc-info-1.quickbook +++ b/test/doc-info-1.quickbook @@ -2,6 +2,8 @@ [quickbook 1.5] [source-mode teletype] [purpose Inline code test: `1 + 2`] +[category tests] +[category irrelevance] ] The body is largely irrelevant. \ No newline at end of file diff --git a/test/doc-info-2.gold b/test/doc-info-2.gold new file mode 100644 index 0000000..399cde4 --- /dev/null +++ b/test/doc-info-2.gold @@ -0,0 +1,15 @@ + + + + + + Inline code test: 1 + 2 + + + + Document Information 1 + + The body is largely irrelevant. + + diff --git a/test/doc-info-2.quickbook b/test/doc-info-2.quickbook new file mode 100644 index 0000000..2d56e86 --- /dev/null +++ b/test/doc-info-2.quickbook @@ -0,0 +1,9 @@ +[library Document Information 1 +[quickbook 1.5] +[source-mode teletype] +[purpose Inline code test: `1 + 2`] +[category tests] +[category irrelevance] +] + +The body is largely irrelevant. \ No newline at end of file diff --git a/test/escape.gold b/test/escape.gold index d7fbf21..0664d90 100644 --- a/test/escape.gold +++ b/test/escape.gold @@ -1,5 +1,5 @@ - +
Escape diff --git a/test/heading.gold b/test/heading.gold index 0cd03d9..3195f4e 100644 --- a/test/heading.gold +++ b/test/heading.gold @@ -1,5 +1,5 @@ - +