Re: Using FMPP Output Tags separately

Daniel Dekany <[email protected]> Mon, 7 Dec 2009 19:04:52 +0100
Newsgroups gmane.comp.text.fmpp
Message-ID <[email protected]>
Monday, December 7, 2009, 5:08:02 PM, alebu wrote:

> Hi all,
>
> I need some guidelines about FMPP API. I am interested in collecting
> data for FMPP engine using my own code. In general, I only interested
> in those wanderfull tags, that allows to create multiple outputs from
> single template. The questions are:
> 1) What objects are responsible for actual generation part of code?

Sorry, I don't understant the question. Could you be more specific?
Responsible for the generation of... what?

> 2) How to configure them ? I was looking at code and I saw that
> TemplateEnvironment has some tags definitions, and Engine is using it
> somehow.
>
> 3) How to specify to search templates in classpath (it is important
> for me).

Unfortunatelly that's not supported by FMPP... altough FreeMarker
itself can load template from classpath, but there is no public API in
FMPP to achieve that. Worst, it has a real reason that it hasn't: FMPP
directly uses java.io.File etc. to process the source directory (which
not only consist of templates, so I couldn't use FreeMarker's loader
anyway). Next time I write a preprocessor surely I will use some kind
of virtual file-system, but when I wrote FMPP, I just didn't need
that... and now, it would be quite a work to allow loading from non-fs
sources. Unless, you just want to #import/#include those
classloader-loaded templates, becaue via "freemarkerLinks" (see on
http://fmpp.sourceforge.net/settings.html) those templates can be
outside the source root directory. Currently even "freemarkerLinks"
only support plain files, but that wouldn't be a big deal to improve.

> Also, if templates uses some macros and additional includes,
> then it must be specified too. It is probably more Freemarker
> question, but still...

See above... FreeMarker has its own template loader mechanism... that
can do things that FMPP's own "loader" can't (and the other way
around).

> In few words, i want to write a code that:
> 1) Takes some data (as freemarker content)

What do you mean? FreeMarker has templates, and that's not "data", but
a "program".

> 2) Instanciate FMPP Engine, configures it to use those tags and search
> templates and other Freemarker specific resources in classpath.
>
> 3) Processes data. Here I need to correctly handle output.
>
> Or maybe it is worth to somehow move those fmpp specific tags into
> freemarker environment? In this case, how can it be done?

In general, if the approach of FMPP (that can be grasped from the
Qucik Start chapter) doesn't fit your task then don't use it. It's a
tool for a quite specific class of tasks... If yours differs (that I
don't know) FMPP will more in your way than it hellps, and you are
better of using pure FreeMarker. The FMPP tags are not necesarly easy
to extract as is, because they depend on FMPP... but then, you only
have to implement the tags that your application needs. You need
something similar that a certain FMPP tag, you can still peek into the
FMPP source code... Those output slitter tags you meantion are quite
trivial to implement. You will immediatelly see if you look at
FreeMarker.

> General overview of solution will be fine for me, just point me please
> on the right directions (classes, execution chain, etc).
>
> Thanks in advance!

-- 
Best regards,
 Daniel Dekany


------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev