Added a debug option.

[SVN r67358]
This commit is contained in:
John Maddock 2010-12-20 13:17:15 +00:00
parent fa103db9d2
commit ef8ef80d0d
9 changed files with 103 additions and 24 deletions

View File

@ -370,6 +370,9 @@ the documentation and see:
Further rules can then be added to the script to handle these cases Further rules can then be added to the script to handle these cases
and the next iteration examined, and so on. and the next iteration examined, and so on.
[tip If you don't understand why a particular term is present in the index, try adding a ['!debug regular-expression]
directive to the [link autoindex.script_ref script file].]
[endsect] [endsect]
[section:script_ref Script File Reference] [section:script_ref Script File Reference]
@ -525,6 +528,27 @@ The arguments to the set-regex rule as follows:
[[suffix][The suffix regular expression, or "" to reset to the default.]] [[suffix][The suffix regular expression, or "" to reset to the default.]]
] ]
[h4 Debugging]
If you see a term in the index, and you don't understand why it's there, add a ['debug] directive:
[pre
!debug regular-expression
]
Now, whenever ['regular-expression] matches either the found index term, or the section title it appears in, then
some diagnostic information will be printed that will look something like:
[pre
Debug term found, in block with ID: spirit.qi.reference.parser_concepts.parser
Current section title is: Notation
The main index entry will be : Notation
The indexed term is: parser
The search regex is: \[P\|p\]arser
The section constraint is: .*qi.reference.parser_concepts.*
The index type for this entry is: qi_index
]
[endsect] [endsect]
[section:comm_ref Command Line Reference] [section:comm_ref Command Line Reference]

View File

@ -16,7 +16,7 @@
</div> </div>
<div class="section" lang="en"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="autoindex.comm_ref"></a><a class="link" href="comm_ref.html" title="Command Line Reference"> Command Line Reference</a> <a name="autoindex.comm_ref"></a><a class="link" href="comm_ref.html" title="Command Line Reference">Command Line Reference</a>
</h2></div></div></div> </h2></div></div></div>
<p> <p>
The following command line options are supported by auto_index: The following command line options are supported by auto_index:

View File

@ -17,7 +17,7 @@
</div> </div>
<div class="section" lang="en"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="autoindex.overview"></a><a class="link" href="overview.html" title="Overview"> Overview</a> <a name="autoindex.overview"></a><a class="link" href="overview.html" title="Overview">Overview</a>
</h2></div></div></div> </h2></div></div></div>
<p> <p>
AutoIndex is a tool for taking the grunt work out of indexing a Quickbook/Boostbook/Docbook AutoIndex is a tool for taking the grunt work out of indexing a Quickbook/Boostbook/Docbook

View File

@ -17,13 +17,13 @@
</div> </div>
<div class="section" lang="en"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="autoindex.script_ref"></a><a class="link" href="script_ref.html" title="Script File Reference"> Script File Reference</a> <a name="autoindex.script_ref"></a><a class="link" href="script_ref.html" title="Script File Reference">Script File Reference</a>
</h2></div></div></div> </h2></div></div></div>
<p> <p>
The following elements can occur in a script: The following elements can occur in a script:
</p> </p>
<a name="autoindex.script_ref.comments_and_blank_lines"></a><h5> <a name="autoindex.script_ref.comments_and_blank_lines"></a><h5>
<a name="id911500"></a> <a name="id1003329"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.comments_and_blank_lines">Comments and <a class="link" href="script_ref.html#autoindex.script_ref.comments_and_blank_lines">Comments and
blank lines</a> blank lines</a>
</h5> </h5>
@ -32,7 +32,7 @@
with a '#'. with a '#'.
</p> </p>
<a name="autoindex.script_ref.simple_inclusions"></a><h5> <a name="autoindex.script_ref.simple_inclusions"></a><h5>
<a name="id911517"></a> <a name="id1003346"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.simple_inclusions">Simple Inclusions</a> <a class="link" href="script_ref.html#autoindex.script_ref.simple_inclusions">Simple Inclusions</a>
</h5> </h5>
<pre class="programlisting"><span class="identifier">term</span> <span class="special">[</span><span class="identifier">regular</span><span class="special">-</span><span class="identifier">expression1</span> <span class="special">[</span><span class="identifier">regular</span><span class="special">-</span><span class="identifier">expression2</span> <span class="special">[</span><span class="identifier">category</span><span class="special">]]]</span> <pre class="programlisting"><span class="identifier">term</span> <span class="special">[</span><span class="identifier">regular</span><span class="special">-</span><span class="identifier">expression1</span> <span class="special">[</span><span class="identifier">regular</span><span class="special">-</span><span class="identifier">expression2</span> <span class="special">[</span><span class="identifier">category</span><span class="special">]]]</span>
@ -99,7 +99,7 @@
</dl> </dl>
</div> </div>
<a name="autoindex.script_ref.source_file_scanning"></a><h5> <a name="autoindex.script_ref.source_file_scanning"></a><h5>
<a name="id911726"></a> <a name="id1003555"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.source_file_scanning">Source File Scanning</a> <a class="link" href="script_ref.html#autoindex.script_ref.source_file_scanning">Source File Scanning</a>
</h5> </h5>
<pre class="programlisting"><span class="special">!</span><span class="identifier">scan</span> <span class="identifier">source</span><span class="special">-</span><span class="identifier">file</span><span class="special">-</span><span class="identifier">name</span> <pre class="programlisting"><span class="special">!</span><span class="identifier">scan</span> <span class="identifier">source</span><span class="special">-</span><span class="identifier">file</span><span class="special">-</span><span class="identifier">name</span>
@ -128,7 +128,7 @@
</p></td></tr> </p></td></tr>
</table></div> </table></div>
<a name="autoindex.script_ref.directory_and_source_file_scanning"></a><h5> <a name="autoindex.script_ref.directory_and_source_file_scanning"></a><h5>
<a name="id911804"></a> <a name="id1003633"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.directory_and_source_file_scanning">Directory <a class="link" href="script_ref.html#autoindex.script_ref.directory_and_source_file_scanning">Directory
and Source File Scanning</a> and Source File Scanning</a>
</h5> </h5>
@ -157,7 +157,7 @@
</dl> </dl>
</div> </div>
<a name="autoindex.script_ref.excluding_terms"></a><h5> <a name="autoindex.script_ref.excluding_terms"></a><h5>
<a name="id911929"></a> <a name="id1003758"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.excluding_terms">Excluding Terms</a> <a class="link" href="script_ref.html#autoindex.script_ref.excluding_terms">Excluding Terms</a>
</h5> </h5>
<pre class="programlisting"><span class="special">!</span><span class="identifier">exclude</span> <span class="identifier">term</span><span class="special">-</span><span class="identifier">list</span> <pre class="programlisting"><span class="special">!</span><span class="identifier">exclude</span> <span class="identifier">term</span><span class="special">-</span><span class="identifier">list</span>
@ -170,7 +170,7 @@
of things to index. of things to index.
</p> </p>
<a name="autoindex.script_ref.rewriting_section_names"></a><h5> <a name="autoindex.script_ref.rewriting_section_names"></a><h5>
<a name="id911984"></a> <a name="id1003813"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.rewriting_section_names">Rewriting Section <a class="link" href="script_ref.html#autoindex.script_ref.rewriting_section_names">Rewriting Section
Names</a> Names</a>
</h5> </h5>
@ -208,7 +208,7 @@
</dl> </dl>
</div> </div>
<a name="autoindex.script_ref.changing_the_regular_expressions_used_when_scanning"></a><h5> <a name="autoindex.script_ref.changing_the_regular_expressions_used_when_scanning"></a><h5>
<a name="id912122"></a> <a name="id1003951"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.changing_the_regular_expressions_used_when_scanning">Changing <a class="link" href="script_ref.html#autoindex.script_ref.changing_the_regular_expressions_used_when_scanning">Changing
the regular expressions used when scanning</a> the regular expressions used when scanning</a>
</h5> </h5>
@ -348,6 +348,29 @@
</p></dd> </p></dd>
</dl> </dl>
</div> </div>
<a name="autoindex.script_ref.debugging"></a><h5>
<a name="id1004239"></a>
<a class="link" href="script_ref.html#autoindex.script_ref.debugging">Debugging</a>
</h5>
<p>
If you see a term in the index, and you don't understand why it's there, add
a <span class="emphasis"><em>debug</em></span> directive:
</p>
<pre class="programlisting">!debug regular-expression
</pre>
<p>
Now, whenever <span class="emphasis"><em>regular-expression</em></span> matches either the found
index term, or the section title it appears in, then some diagnostic information
will be printed that will look something like:
</p>
<pre class="programlisting">Debug term found, in block with ID: spirit.qi.reference.parser_concepts.parser
Current section title is: Notation
The main index entry will be : Notation
The indexed term is: parser
The search regex is: [P|p]arser
The section constraint is: .<span class="bold"><strong>qi.reference.parser_concepts.</strong></span>
The index type for this entry is: qi_index
</pre>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td> <td align="left"></td>

View File

@ -17,10 +17,10 @@
</div> </div>
<div class="section" lang="en"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="autoindex.tut"></a><a class="link" href="tut.html" title="Getting Started and Tutorial"> Getting Started and Tutorial</a> <a name="autoindex.tut"></a><a class="link" href="tut.html" title="Getting Started and Tutorial">Getting Started and Tutorial</a>
</h2></div></div></div> </h2></div></div></div>
<a name="autoindex.tut.step_1__build_the_tool"></a><h5> <a name="autoindex.tut.step_1__build_the_tool"></a><h5>
<a name="id902662"></a> <a name="id994380"></a>
<a class="link" href="tut.html#autoindex.tut.step_1__build_the_tool">Step 1: Build the tool</a> <a class="link" href="tut.html#autoindex.tut.step_1__build_the_tool">Step 1: Build the tool</a>
</h5> </h5>
<p> <p>
@ -62,7 +62,7 @@
is accepted into Boost. is accepted into Boost.
</p> </p>
<a name="autoindex.tut.step_2__configure_boost_build"></a><h5> <a name="autoindex.tut.step_2__configure_boost_build"></a><h5>
<a name="id902826"></a> <a name="id994545"></a>
<a class="link" href="tut.html#autoindex.tut.step_2__configure_boost_build">Step 2: Configure <a class="link" href="tut.html#autoindex.tut.step_2__configure_boost_build">Step 2: Configure
Boost.Build</a> Boost.Build</a>
</h5> </h5>
@ -155,7 +155,7 @@
</dl> </dl>
</div> </div>
<a name="autoindex.tut.step_3__add_indexes_to_your_documentation"></a><h5> <a name="autoindex.tut.step_3__add_indexes_to_your_documentation"></a><h5>
<a name="id902989"></a> <a name="id994708"></a>
<a class="link" href="tut.html#autoindex.tut.step_3__add_indexes_to_your_documentation">Step <a class="link" href="tut.html#autoindex.tut.step_3__add_indexes_to_your_documentation">Step
3: Add indexes to your documentation</a> 3: Add indexes to your documentation</a>
</h5> </h5>
@ -249,7 +249,7 @@ boostbook standalone
&lt;xsl:param&gt;index.on.type=1 &lt;xsl:param&gt;index.on.type=1
</pre> </pre>
<a name="autoindex.tut.step_4__create_the_script_file"></a><h5> <a name="autoindex.tut.step_4__create_the_script_file"></a><h5>
<a name="id910948"></a> <a name="id1002762"></a>
<a class="link" href="tut.html#autoindex.tut.step_4__create_the_script_file">Step 4: Create <a class="link" href="tut.html#autoindex.tut.step_4__create_the_script_file">Step 4: Create
the script file</a> the script file</a>
</h5> </h5>
@ -322,7 +322,7 @@ boostbook standalone
<pre class="programlisting"><span class="special">!</span><span class="identifier">rewrite</span><span class="special">-</span><span class="identifier">name</span> <span class="string">"(?i)(?:A|The)\s+(.*)"</span> <span class="string">"\1"</span> <pre class="programlisting"><span class="special">!</span><span class="identifier">rewrite</span><span class="special">-</span><span class="identifier">name</span> <span class="string">"(?i)(?:A|The)\s+(.*)"</span> <span class="string">"\1"</span>
</pre> </pre>
<a name="autoindex.tut.step_5__add_manual_index_entries___optional"></a><h5> <a name="autoindex.tut.step_5__add_manual_index_entries___optional"></a><h5>
<a name="id911206"></a> <a name="id1003020"></a>
<a class="link" href="tut.html#autoindex.tut.step_5__add_manual_index_entries___optional">Step <a class="link" href="tut.html#autoindex.tut.step_5__add_manual_index_entries___optional">Step
5: Add Manual Index Entries - Optional</a> 5: Add Manual Index Entries - Optional</a>
</h5> </h5>
@ -338,7 +338,7 @@ boostbook standalone
index itself, with the exception of the "type" attribute. index itself, with the exception of the "type" attribute.
</p> </p>
<a name="autoindex.tut.step_6__build_the_your_docs"></a><h5> <a name="autoindex.tut.step_6__build_the_your_docs"></a><h5>
<a name="id911326"></a> <a name="id1003140"></a>
<a class="link" href="tut.html#autoindex.tut.step_6__build_the_your_docs">Step 6: Build the <a class="link" href="tut.html#autoindex.tut.step_6__build_the_your_docs">Step 6: Build the
Your Docs</a> Your Docs</a>
</h5> </h5>
@ -365,7 +365,7 @@ boostbook standalone
If you don't see that, or if it's indexing 0 terms then something is wrong! If you don't see that, or if it's indexing 0 terms then something is wrong!
</p> </p>
<a name="autoindex.tut.step_7__iterate"></a><h5> <a name="autoindex.tut.step_7__iterate"></a><h5>
<a name="id911437"></a> <a name="id1003250"></a>
<a class="link" href="tut.html#autoindex.tut.step_7__iterate">Step 7: Iterate</a> <a class="link" href="tut.html#autoindex.tut.step_7__iterate">Step 7: Iterate</a>
</h5> </h5>
<p> <p>
@ -388,6 +388,17 @@ boostbook standalone
Further rules can then be added to the script to handle these cases and the Further rules can then be added to the script to handle these cases and the
next iteration examined, and so on. next iteration examined, and so on.
</p> </p>
<div class="tip"><table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../images/tip.png"></td>
<th align="left">Tip</th>
</tr>
<tr><td align="left" valign="top"><p>
If you don't understand why a particular term is present in the index, try
adding a <span class="emphasis"><em>!debug regular-expression</em></span> directive to the
<a class="link" href="script_ref.html" title="Script File Reference">script file</a>.
</p></td></tr>
</table></div>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td> <td align="left"></td>

View File

@ -21,7 +21,7 @@
</h3></div></div></div> </h3></div></div></div>
<div><p class="copyright">Copyright &#169; 2008 John Maddock</p></div> <div><p class="copyright">Copyright &#169; 2008 John Maddock</p></div>
<div><div class="legalnotice"> <div><div class="legalnotice">
<a name="id902374"></a><p> <a name="id994092"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>) file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p> </p>
@ -32,15 +32,15 @@
<div class="toc"> <div class="toc">
<p><b>Table of Contents</b></p> <p><b>Table of Contents</b></p>
<dl> <dl>
<dt><span class="section"><a href="autoindex/overview.html"> Overview</a></span></dt> <dt><span class="section"><a href="autoindex/overview.html">Overview</a></span></dt>
<dt><span class="section"><a href="autoindex/tut.html"> Getting Started and Tutorial</a></span></dt> <dt><span class="section"><a href="autoindex/tut.html">Getting Started and Tutorial</a></span></dt>
<dt><span class="section"><a href="autoindex/script_ref.html"> Script File Reference</a></span></dt> <dt><span class="section"><a href="autoindex/script_ref.html">Script File Reference</a></span></dt>
<dt><span class="section"><a href="autoindex/comm_ref.html"> Command Line Reference</a></span></dt> <dt><span class="section"><a href="autoindex/comm_ref.html">Command Line Reference</a></span></dt>
</dl> </dl>
</div> </div>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: June 28, 2010 at 17:45:04 GMT</small></p></td> <td align="left"><p><small>Last revised: December 20, 2010 at 13:16:00 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</tr></table> </tr></table>
<hr> <hr>

View File

@ -22,6 +22,7 @@ boost::tiny_xml::element_list indexes;
std::list<id_rewrite_rule> id_rewrite_list; std::list<id_rewrite_rule> id_rewrite_list;
bool internal_indexes = false; bool internal_indexes = false;
std::string internal_index_type = "section"; std::string internal_index_type = "section";
boost::regex debug;
int help() int help()
{ {
@ -319,6 +320,17 @@ void process_node(boost::tiny_xml::element_ptr node, node_id* prev, title_info*
// We have something to index! // We have something to index!
found_terms.insert(item_index); found_terms.insert(item_index);
if(!debug.empty() && (regex_match(i->term, debug) || regex_match(rtitle, debug) || regex_match(simple_title, debug)))
{
std::cout << "Debug term found, in block with ID: " << *pid << std::endl;
std::cout << "Current section title is: " << rtitle << std::endl;
std::cout << "The main index entry will be : " << simple_title << std::endl;
std::cout << "The indexed term is: " << i->term << std::endl;
std::cout << "The search regex is: " << i->search_text << std::endl;
std::cout << "The section constraint is: " << i->search_id << std::endl;
std::cout << "The index type for this entry is: " << i->category << std::endl;
}
if(use_section_names && (simple_title != i->term)) if(use_section_names && (simple_title != i->term))
{ {
// //

View File

@ -110,5 +110,6 @@ extern std::list<id_rewrite_rule> id_rewrite_list;
extern bool internal_indexes; extern bool internal_indexes;
extern std::string prefix; extern std::string prefix;
extern std::string internal_index_type; extern std::string internal_index_type;
extern boost::regex debug;
#endif #endif

View File

@ -310,6 +310,10 @@ void process_script(const char* script)
"(?<prefix>[^\"[:space:]]+|\"(?:[^\"\\\\]|\\\\.)+\")\\s+" "(?<prefix>[^\"[:space:]]+|\"(?:[^\"\\\\]|\\\\.)+\")\\s+"
"(?<suffix>[^\"[:space:]]+|\"(?:[^\"\\\\]|\\\\.)+\")\\s*" "(?<suffix>[^\"[:space:]]+|\"(?:[^\"\\\\]|\\\\.)+\")\\s*"
); );
static const boost::regex debug_parser(
"!debug\\s+"
"([^\"[:space:]]+|\"(?:[^\"\\\\]|\\\\.)+\")\\s*"
);
if(verbose) if(verbose)
std::cout << "Processing script " << script << std::endl; std::cout << "Processing script " << script << std::endl;
@ -347,6 +351,10 @@ void process_script(const char* script)
} }
scan_file(f.c_str()); scan_file(f.c_str());
} }
else if(regex_match(line, what, debug_parser))
{
debug = unquote(what[1].str());
}
else if(regex_match(line, what, scan_dir_parser)) else if(regex_match(line, what, scan_dir_parser))
{ {
std::string d = unquote(what[1].str()); std::string d = unquote(what[1].str());