Nice analysis Lex.

Cheers, Stuart


On 20/11/12 12:40, Lex Trotman wrote:
> 
> 
> On 20 November 2012 02:10, Wilhelm <[email protected]
> <mailto:[email protected]>> wrote:
> 
>     Hi all,
> 
>     very frequently I have to write something like the following:
> 
>     .[codetitle]#{srccaption}#
>     
> link:{src}/{chap}/{subchap}/__coffee05/Coffee.java[[__codelink]+coffee05/Coffee.__java+]
>     ifdef::backend-docbook[]
>     ["source","java",args="role=\"__code\""]
>     endif::[]
>     ifndef::backend-docbook[]
>     ["source","java"]
>     endif::[]
>     ----
>     sys::[{ex} Fillable {src}/{chap}/{subchap}/__coffee05/Coffee.java]
>     ----
>     <1> The interface
> 
> 
>     where {ex} is set to my source-code extractor tool, "Fillable" is
>     the snippet name to be extracted and the other document attributes
>     are set accordingly.
> 
>     I wonder if it is possible to write a macro to replace all the stuff
>     from above with *one* call, e.g.
> 
> 
> Hi Wilhelm,
> 
> It is, but....
> 
> Asciidoc "macros" are output substitution macros, not input substitution
> macros that many other languages have.  This means that you have to
> generate all the backend output you need yourself, so complex things are
> much harder, you can't run it back through asciidoc without going
> recursive (but that can be done, see how asciidoc table styles are
> implemented, it may be that is your solution).
> 
> I guess Asciidoc doesn't do input macro substitution since, in the Unix
> environment where it started, there are already several ways of doing
> input substitution, one of which you have found.  But they do cause the
> line number problem.  A nice-to-have would be for Asciidoc to accept
> line/column specifications as C compilers do to re-align input to the
> original source file/line/column at the end of a substitution.
> 
> Just an aside, some time ago I was creating a plugin to extract stuff
> and put it in source blocks as you are doing.  In the end I moved the
> whole thing to a pre-processor that extracted all the marked code
> snippets once and then made one pass through the asciidoc file to plug
> them in, much simpler, and of course it also plugged in the boilerplate,
> and muuuuuuuch faster since it searches the input once only.  But that
> may not matter if you are only doing a few snippet insertions.
>  
> 
> Cheers
> Lex
> 
> 
>     source::Coffee.java[Fillable]
>     <1> The interface
> 
>     Any hints are welcome!
> 
>     Actually I'm doing some preprocessing of the asciidoc-file with an
>     awk-based tool: this tool replaces the "pseudo" block-macro call
> 
>     source::Coffee.java[Fillable]
> 
>     with the stuff above. It works quite well but has the disadvantage
>     that the line numbers in error/warnings of asciidoc are displaced
>     because more lines are generated.
> 
>     -- 
>     Wilhelm
> 
>     -- 
>     You received this message because you are subscribed to the Google
>     Groups "asciidoc" group.
>     To post to this group, send email to [email protected]
>     <mailto:[email protected]>.
>     To unsubscribe from this group, send email to
>     asciidoc+unsubscribe@__googlegroups.com
>     <mailto:asciidoc%[email protected]>.
>     For more options, visit this group at
>     http://groups.google.com/__group/asciidoc?hl=en
>     <http://groups.google.com/group/asciidoc?hl=en>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google
> Groups "asciidoc" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/asciidoc?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"asciidoc" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/asciidoc?hl=en.

Reply via email to