(Sorry if this is a FAQ: I just joined the mailing list and didn't find an
answer to my question after "google"-ing. BTW, is there a way to search the
Velocity mailing list archives?)
I need to generate a mapping from output line numbers back to the corresponding
resource filenames and line numbers. What's the easiest way to do that?
I have one method in mind, but am hoping there's an easier way. My method
involves overloading the standard resource loaders' "getResourceStream" methods
so that each resulting "InputStream" prepends a path and line number to each
resource line. So for instance, given a template of:
public enum ${EnumName} {
/* #foreach ( $name in $names ) */
${name},
/* #end */
;
}
my overloaded "FileResourceLoader" would produce an InputStream that contained:
Template.vtl:1:public enum ${EnumName} {
Template.vtl:2: /* #foreach ( $name in $names ) */
Template.vtl:3: ${name},
Template.vtl:4: /* #end */
Template.vtl:5: ;
Template.vtl:6:}
Template expansion would then produce something like the following; output is
in the box, and output line numbers are to the left of the box:
RGB.java
+-------------------------------------------+
1 | Template.vtl:1:public enum ${EnumName} { |
2 | Template.vtl:2: /* */ |
3 | Template.vtl:3: Red, |
4 | Template.vtl:4: /* */ |
5 | Template.vtl:3: Green, |
6 | Template.vtl:4: /* */ |
7 | Template.vtl:3: Blue, |
8 | Template.vtl:4: /* */ |
9 | Template.vtl:5: ; |
10| Template.vtl:6:} |
+-------------------------------------------+
In this way, it can be inferred that (e.g.) line 7 in "RGB.java" was generated
from line 3 of "Template.vtl".
Post-processing would then strip off the prepended file/line information from
the output, while at the same time saving line mapping information to a
separate file. (Post-processing also provides a chance to remove the
extraneous empty comment lines, e.g. "RGB.java" lines 2, 4, 6 and 8... :-)
(Note that doing this at the Resource Loader level means it'd handle
#include-ed and #parse-ed resources.)
All well and good, but is there an easier way to get what I want?
Thanks in advance,
Rich
_________________________________________________________________
Hotmail: Trusted email with Microsoft’s powerful SPAM protection.
http://clk.atdmt.com/GBL/go/177141664/direct/01/
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]