Re: [quickbook] Does import work?

"Vicente J. Botet Escriba" <[email protected]>
Newsgroups gmane.comp.lib.boost.documentation
Message-ID <[email protected]>
Le 19/10/11 06:02, Rene Rivera a écrit :
> On 10/18/2011 1:18 PM, Daniel James wrote:
>>> What you want has two phases - the first phase is to gather the
>>> documentation source out of the headers, the second is the
>>> documentation generation phase. These are quite distinct. There's no
>>> good reason to squash them together. That's not a "bad excuse", that's
>>> separation of concerns.
>>
>> It seems that your sentiment runs counter to the Literate Programming 
>> ideals. Or maybe I don't understand the two parts you are referring to.
>>
>>> You don't need an excuse to reject a feature, you need a reason to 
>>> add it.
>>
>> OK, good point. And I think I already stated my reasons for adding 
>> it. Which as Dave pointed out fall within the Literate Programming 
>> ideals.
>>
>>
Hi all,

IMO, Rene you are right, it is a good idea to include the quickbook 
comments associated to the documentation of a C++ file.

But as Daniel has already said you can already do that by extracting the 
comments yourself. Note that I'm not saying that I don't want quickbook 
to integrate these features.

Doing that 'by hand' for a library documentation would increase the 
experience of what exactly is needed to integrate it in quickbook.

For the needs you have expressed, it seems that it is enough to tag the 
begin-end of the C++ comments you want to extract. Following the import 
syntax, we could use

// [quickbook-comments


// ] quickbook-comments

The we could cat all the C++ files from which you want to extract the 
quickbook comments and give this file to a simple quickbook extractor 
command. Do we have a cat utility integrated in Boost.Build?

cat boost/predef.hpp boost/predef/*.hpp boost/predef/*/*.hpp | 
quickbook-extractor > predef-extracted.qbk

All you need is to include the resulting file.

[include predef-extracted.qbk]

 From my side having the ability to import files with '*' characters is 
not a critical feature for quickbook as I have always preferred to 
include the files explicitly. Why? Two reasons: First because I want to 
master the order of the documentation associated to a file and second 
because I want to be able to document any file, even implementation 
files, and I don't want the build chain include automatically these 
comments into the user documentation. This facility could be useful when 
you want to provide a documentation of the internals of a library.

Of course, we could use different tags for public and internals comments

// [quickbook-public-comments
// ] quickbook-public-comments

// [quickbook-detail-comments
// ] quickbook-detail-comments


I'm sure that the experience will show that we want to split the 
documentation associated to a C++ file, at least in tutorial and 
reference, so we will need more tags to differentiate them:

// [quickbook-public-comments:tutorial
// ] quickbook-public-comments:tutorial

// [quickbook-public-comments:reference
// ] quickbook-public-comments:reference


With these tags, the extraction of the tutorial  and reference sections 
could be done like

cat boost/predef.hpp boost/predef/*.hpp boost/predef/*/*.hpp | 
quickbook-extractor --section tutorial > predef-tutorial-extracted.qbk
cat boost/predef.hpp boost/predef/*.hpp boost/predef/*/*.hpp | 
quickbook-extractor --section reference > predef-reference-extracted.qbk

Once we have see the extent of the approach, maybe Daniel could include 
the feature in quickbook and why not provide a quickbook command as for 
example

[section Tutorial
[include-extracted boost/predef.hpp tutorial]
]

[section Reference
[include-extracted boost/predef.hpp reference]
]

One of the advantage of integrating it in quickbook is to simplify the 
Build process, the other is that the errors could report the source file 
line number and not the one of a temporary file.

I'm sure, other will find different ways of implementing this 
interesting approach.

Well this is just how I see the path to improve the integration of Boost 
documentation and Boost code.

Thanks Rene for raising this excellent idea,
Vicente
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.