Version History |
![]() ![]() ![]() ![]() | |
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() |
Page contents
![]() |
![]() |
![]() |
![]() |
![]() |
Date of release: 2007-12-16
Bugfixes:
skipUnchanged
setting haven't had any effect since 0.9.10. Now it works again.slicedText
data loader has ignored the encoding
parameter.csv
, text
and slicedText
data loaders didn't skipped the BOM (byte order mark) character at the beginning of the file. This was a problem as the Windows Notepad inserts a BOM there when it saves with UTF-8 encoding. This fix is not 100% backward compatible, as someone may indeed wanted to have that BOM.fmpp.dataloaders.AbstractTextDataLoader
ignored the encoding returned by the parseExtraArguments
method.fmpp.dataloaders.AbstractTextDataLoader
didn't removed the BOM character from the beginning of files.New features, improvements:
csv
data loader has a few new options: normalizeHeaders
, trimCells
, and emptyValue
. More details...ignoreSvnFiles
. This will ignore directories with name .svn
inside the source root directory. This setting is by default on (true
), so it's theoretically not backward compatible.DataLoaderUtil.getStringArrayArgument
and getStringArrayOption
now have an overload with allowString
argument, so that a single item can be easily treated as an array of length 1.freemarker.jar
and the included FreeMarker Manual to 2.3.11.Date of release: 2007-04-27
Bugfixes:
{
and }
). Like {x: 1, y: false}
was interpreted as {x: "1", y: "false"}
, that is, both values were strings. From now it is interpreted correctly, so with the above example x
will be the number 1
and y
will be the boolean false
.New features, improvements:
tddSequence
for loading a TDD file as a TDD sequence (i.e. list) rather than as a TDD hash (i.e. map). More...
freemarker.jar
to 2.3.10, and bhs.jar
(BeanShell) to 2.0b4 in the distribution pack.
Date of release: 2006-03-15
New features, improvements:
tagSyntax
. This let you access this new setting of FreeMaker 2.3.5.
freemarker.jar
to 2.3.6, and bhs.jar
(BeanShell) to 2.0b1.1 in the distribution pack.
Bugfixes:
sources
was set to any empty list in a configuration file, the whole source root directory was processed in certain cases. From now it will process no files in that case. If you want to process the whole source root directory, don't specify the sources
setting at all.
Settings
class was badly assumed that the whole source root directory has to be processed if the sources
setting was an empty list. This was incorrect, as in that case simply 0 files should be processed, and processing the whole source directory should occur only if the sources
setting was not set at all (it's null
when you get it). So, if you want the whole source root directory to be processed, don't set the sources
setting at all. If it is already set, you can "unset" it with settings.remove(Settings.NAME_SOURCES)
.xpathSupport.lib
to the build.properties
.
Date of release: 2005-10-23
New features, improvements:
pp.newWritableSequence
and pp.newWritableHash
methods now have an optional parameter, which is the sequence or hash whose items are added to the new writable sequence or hash. This makes pp.copyWritable
deprecated, which was not able to create writable sequences/hashes based on non-writable ones.objectWrapper
. This let FreeMarker "experts" to create and fully configure the freemarker.template.ObjectWrapper
object that FMPP will use.fmpp.Engine
constructor now let you specify the freemarker.template.ObjectWrapper
to use.[#...]
, [@...]
, etc instead of <#...>
, <@...>
, etc if you start the template with [#ftl]
.<FMPP>/docs/examples/multipage_list
was updated to use sequence?chunk(pageSize)
, instead of complex BeanShell script that was needed before FreeMarker 2.3.3.Bugfixes:
fmpp.bat
has sometimes build the CLASSPATH
badly that ruined the command line call to java.exe and caused it to die with a strange ClassNotFoundError
.freemarker.template.ObjectWrapper.BEANS_WRAPPER
object, which is dangerous. From now by default it uses its own ObjectWrapper
instance. If you have utilized that it uses the shared ObjectWrapper.BEANS_WRAPPER
object (not recommended!), then for 100% backward compatibility you have to use the objectWrapper
setting with this value:"ow = ObjectWrapper.BEANS_WRAPPER; ow.setSimpleMapWrapper(true); return ow;"
ObjectWrapper ow = ObjectWrapper.BEANS_WRAPPER; ow.setSimpleMapWrapper(true); Engine eng = new Engine(ObjectWrapper.BEANS_WRAPPER);
)Date of release: 2005-04-12
New features, improvements:
headers
option you can specify the header row for a CSV file that doesn't actually have a header row.replaceHeaders
option you can override the header row of a CSV file.slicedText
for loading a text file as a sequence of strings. More...
fmpp.dataloaders.AbstractTextDataLoader
, to ease the creation of custom text file data loaders for Java programmers.StringUtil
methods: normalizeNewliens
, split
with trimming.+
operator in TDD files and configuration files is not allowed anymore. This operator was used for adding hashes prior 0.9.0. Since 0.9.0 the preferred (and now required) way of adding hashes is different. For example, assuming that your configuration file is in "properties" format (that is, the extension of the FMPP configuration file is cfg
or properties
), instead of this:data={a:1, b:2} + properties(data/style.properties) + birds:csv(data/birds.csv)
data=a:1, b:2, tdd(data/style.tdd), birds:csv(data/birds.csv)
Bugfixes:
csv
data loader has incorrectly interpreted "\n\r"
as a single line-break.
Date of release: 2005-01-28
New features, improvements:
urlEscapingCharset
Engine
for reserved engine parameter (setting) value strings: PARAMETER_VALUE_SOURCE
, PARAMETER_VALUE_HOST
, PARAMETER_VALUE_OUTPUT
. Also added the similar missing static fields to the Settings
class.
Bugfixes:
"host"
output encoding value was not resolved in some rare cases.
pp.urlEnc
/pp.urlPathEnc
functions and the fmpp.util.StringUtil.urlEnc(...)
/urlPathEnc(...)
methods were malfunctioned with a few charsets, for example with UTF-16, UTF-7, and EBCDIC based charsets.
fmpp.ProgressListener.notifyProgressEvent(...)
forgot to mention regarding the event
parameter that: "As new event types can be introduced with new FMPP versions (even if it happens very seldom), a progress listener implementation should survive events that it does not understand. That is, it must not stop with an error, but it should silently ignore the event." Note that there is no new event type in this version.fmpp.util.NullWriter
and fmpp.util.NullOutputStream
classes has no public constructor anymore. Use their static INSTANCE
field to get the singleton.build.xml
.Date of release: 2004-03-01
New features, improvements:
freemarkerLinks
. This is a dirty hack to satisfy a frequent demand: <#include ...>
/<#import ...>
files that are outside the source root directory (as FTL macro libraries used by more projects).Bugfixes:
<#import ...>
and <#include ...>
directives. You must use /
there.Date of release: 2004-01-20
New features, improvements:
renderXml
. When a source file is processed in this mode, it's parsed as XML, and then the parsed XML document is rendered to output file(s) by a FreeMarker template, which is chosen based on the path or the document element of the XML document.
xmlRenderings
. More info...pp
variable: pp.doc
. More info...fmpp.XmlRenderingConfiguration
. New fmpp.Engine.PMODE_...
constant: PMODE_RENDER_XML
. New Engine
methods to add/clean XML rendering configurations.build.xml
, qinstall
. It's the same as install
, but assumes y
for all questions.Engine
: static String getProgressListenerEventName(int event)
Date of release: 2004-01-14
New features, improvements:
Settings
class:
execute(Engine)
method is now deprecated, and will be soon removed. Use execute()
instead. If you use Settings
, then don't create Engine
objects manually anymore, just use the Settings
object alone. See an example here...Settings.set(String, boolean)
, Settings.set(String, int)
, Settings.setDefault(String, boolean)
, Settings.setDefault(String, int)
, Engine.isXmlSupportAvailable()
, TddHashLocalDataLoader(String)
install
Ant target.fmpp.Engine
object (known be people who use FMPP at Java API level) are now called "engine parameters", as the "settings" term is already used since version 0.9.0 for the high level settings seen by usual front-end users.Bugfixes:
@@markup
, @@nested_markup
, @@start_tag
, and @@attributes_markup
. This is mostly important for people who uses data of XHTML format for generating (X)HTML pages.Date of release: 2004-01-03
New features, improvements:
localData
data
setting. With the new localData
setting you can add variables to, and override the variables of the common data model, for groups of source files selected by path patterns.templateData
setting is now deprecated.fmpp.LocalDataBuilder
, deprecates fmpp.TemplateDataModelBuilder
.borders
setting supports multiple layers. That is, multiple borders can be used at once for the same file.
<@pp.renameOutputFile ... />
you can use the extension
parameter instead of name
, to change only the extension of the output file.
TemplateEnvironment
has new methods, most importantly static TemplateEnvironment getCurrentInstance()
for accessing the current template environment in FreeMarker transforms/methods.Engine
: Object getData(name)
(returns unwrapped original values), Object removeData(name)
, cleatData()
(deprecates misnamed clearSharedVariables()
).ProgressListener
get notifications about engine events.fmpp.tdd.FunctionCall
has public constructor now.Engine.getData(...)
doesn't throw TemplateModelException
anymore, because data wrapping is now deferred until the session execution.Engine
. It did the same as if you synchronize on the Engine
instance and call the methods anyway...ProgressListener.notifyProgressEvent(...)
is now allowed to throw Exception
.
Bugfixes:
<@pp.renameOutputFile ... />
has malfunctioned when the buffer was already flushed.fmpp.listeners
were renamed to fmpp.progresslisteners
.
Engine.removeAttribue
was renamed to Engine.removeAttribute
.
Date of release: 2003-12-22
New features, improvements:
xmlCatalogFiles
, xmlCatalogPrefer
. With these settings you can setup the OASIS catalogs that will be used for resolving entities in XML files. (See <FMPP>/docs/examples/xml_validating
)validate
. This specifies if the XML file will be checked for validity.validateXml
. This specifies if by default XML files will be checked for validity.xpathEngine
. With this setting you can set if you want to use Jaxen or Xalan for XPath-s.Bugfixes:
NullPointerException
on low memory conditions is now fixed. A bug in Jaxen XPath support that caused NullPointerException
-s has been fixed. Etc.Engine.process
doesn't throw sly unchecked fmpp.IllegalConfigurationException
-s anymore. Also, fmpp.IllegalConfigurationException
is not public from now; it wasn't mentioned in other public API-s anyway.Date of release: 2003-11-12
Bugfixes:
<#include ...>
and <#import ...>
were badly interpreted relatively to the sourceRoot
. Now they are correctly interpreted relatively to the directory of the template file. This bugfix is not backward compatible, if you have accidentally utilized the bad behavior. For example, you have included <sourceRoot>/includes/foo.ftl
in a template file which is in not directly in the sourceRoot
like this: <#include "includes/foo.ftl">
. Now you should replace it with: <#include "/includes/foo.ftl">
.Date of release: 2003-11-09
New features, improvements:
antProperty
and antProperties
now can convert the property values to numerical, boolean, or data/time/date-time variables. For example, to expose property x
as numerical variable, use antProperty(x?n)
instead of antProperty(x)
. This causes backward compatibility problem only if you have Ant property names that ends with one of these: ?n
, ?b
, ?d
, ?t
, ?dt
, ?s
, and you have specified their name as parameter to these data loaders. In this case, append ?s
at the end of the parameters. More info...csv
now supports columns of type date, time, and date-time. More info...j_string
, js_string
. These can be used to escape text with Java language or JavaScript string literal escaping rules. Also it contains some minor bugfixes.Bugfixes:
expert
setting worked inverted with the Ant task when it decided if you are allowed to use the project base directory as outputRoot
.install
target of build.xml
didn't stopped nicely if the ANT_HOME
was not set.Date of release: 2003-10-30
New features, improvements:
cfg
or properties
are automatically interpreted as "Java properties" file, so the old fmpp.cfg
-s will still work. But if your old configuration file doesn't use extension cfg
or properties
, then you have to rename it now. Also, note that the default file name for the new (TDD) configuration files is config.fmpp
, which has priority over fmpp.cfg
when both present in the same directory. More info...
+
will be available for other purposes. To prepare for this future change, just replace +
characters with comma (,
) in your hash unions. See the chapter about the new TDD...
#
comments are supported.
true
.
fmpp.tdd.TddParser
was gone, and fmpp.tdd.Interpreter
was introduced instead, which has different API.configuration
. Thus, now you can store the settings in a single place if you use FMPP both as command-line tool and Ant task. Look at <FMPP>/docs/examples/build.xml
and <FMPP>/docs/examples/ant3
to see applications.
inheritConfiguration
. It is used for "customizing" an existing configuration by overriding some settings in it. See <FMPP>/docs/examples/inherit_cfg
. More info...
sources
now uses TDD sequence syntax. Thus, you can't separate the files with :
or ;
anymore, but with comma (,
). According to TDD syntax, quote file names that contain problematic characters, e.g.:no/problem/with.it, "but quote this.txt",
C:\windows\path, r"C:\quote this win\path"
.fmpprc
file placed into the user home directory or into the FMPP home directory. More info...
get
data loader function returns the values of other variables in the data model. This can be used to pass previously loaded data to other data loaders as parameters, for example:data: {doc:xml(data/foo.xml), index:com.example.IndexBuilderDataLoader(get(doc))}
. More information...
eval
has an optional 2nd parameter, the hash of variables that will be available when the BeansScript is evaluated. For example:data: eval('...', {foo:properties(foo.properties), items:get(items)})
appendLogFile
setting you can specify that the log file is continued, rather than restarted for each processing session.
fmpp
file extension is now reserved for the purposes of FMPP. Files with this extension are never processed (they are ignored). If you had to process files of this extension, protect them using double extension as test.fmpp.keepme
, and then add the extra extension (keepme
in this case) to the removeExtensions
setting.
quiet
setting now accepts values true
, false
, and reallyQuiet
. Integer values are supported for backward compatibility only.
removePostfix
to removePostfixes
, removeExtension
to removeExtensions
, replaceExtension
to replaceExtensions
. This change is backward compatible, because the old names are internally translated.
antTaskFailOnError
. This tells if the FMPP Ant task should abort the Ant project with error if there were errors during the FMPP processing session.
Engine.process(File src, File out)
now modifies null
sourceRoot
and/or outputRoot
settings for the time of the method call to the parent directories of the source and output files respectively.
Engine.getBuildInfo
. Also now the command-line tool prints it with --version
.
--long-help
.
Engine.process
doesn't throw IOException
anymore, only ProcessingException
.
DataLoader
implementations were moved into new package tdd.dataloaders
.
tdd.util.StringUtil.excToStr(Throwable)
was removed.
bin/*
in the tar file.
Bugfixes:
fmpp.bat
was stopped with error if it didn't find Ant! AAARGH!
stopOnError="false"
, and the were skipped failed processing. Now it does. Note that the old behavior can be emulated using antTaskFailOnError="false"
.
pp.locale
didn't followed the locale changes made at template execution time with <#setting locale=...>
.Date of release: 2003-09-30
New features, improvements:
<#include ...>
or user-defined directive tag with empty directive syntax as <@myMacro/>
(or its equivalents: <@myMacro></@myMacro>
and <@myMacro></@>
). Now white-space is removed in these cases as well.) Also, top-level white-space that separates macro definitions and/or assignments is now ignored. More information...
freemarker.template.TemplateMethodModel.exec(...)
is Object
, not TemplateModel
.
pp
variable: freemarkerVersion
. Also, new fmpp.Engine
method: fmpp.Engine.getFreeMarkerVersionNumber()
. Also, FreeMarker version number is printed together with FMPP version number everywhere.
fmpp.Engine.getVersionNumber()
does not throw checked exceptions anymore.
pp
directive: pp.restartOutputFile
. This directive empties the output file, but does not delete the file or discards the further output as pp.dropOutputFile
does..bak
and ~*
filter mechanism was removed. Note that this all does not affect the FMPP Ant task. More information...
Bugfixes:
<#ftl ...>
resulted on illegal FreeMarker template, as nothing can precede the ftl
directive. Now the header is intelligently moved after the ftl
directive.
pp.set
and pp.add
was totally confused.
.#?*
files. Now it does.
Date of release: 2003-08-11
New features, improvements:
foo.@bar
now return sequences (similarly to child element queries and XPath queries), not single nodes. Because of the rule with node sequences of size 1, it is still good to write ${foo.@bar}
, but built-ins such as ?exists
, ?if_exists
or ?default
don't work as before. For example, instead of foo.@bar?default('black')
, you now have to write foo.@bar[0]?default('black')
. So if you have used existence built-ins with attributes, you have to find those occurrences in the templates and add that [0]
.xmlns
.@@
and @*
now return a sequence of attribute nodes instead of the hash of them.xml
data loader has a new boolean option: namespaceAware
. If this is set to false
, you can load XML files with the logic as XML has worked before the introduction of name-spaces.
Bugfixes:
Date of release: 2003-07-03
New features, improvements:
antProperties
improved: You can give the names of Ant properties you want to expose, as parameters. So if you want to expose only properties foo
and bar
, then just write antProperties(foo, bar)
. More info...
antProperty
, to expose the value of a single Ant property. More info...
xml
, which uses the new XML wrapper of FreeMarker. It replaces the old xmlInfoset
data loader, which is kept only for backward compatibility. More info...
freemarker.jar
will be checked in to the CVS repository.
Bugfixes:
fmpp.util.FreemarkerUtil
, FtlVarToCoreJavaObject
is now renamed to ftlVarToCoreJavaObject
Date of release: 2003-05-02
New features, improvements:
text
. This loads a plain text file into a string variable.
pp.version
Bugfixes:
build.properties
.
Date of release: 2003-04-29
New features, improvements:
fmpp.bat
; it is now more flexible.
pp
hash methods: outputFileLastModified
, sourceFileLastModified
, realFileLastModified
Bugfixes:
now
didn't used the "time zone" FMPP engine setting.
Date of release: 2003-04-12
New features, improvements:
pp
variables: now
, sessionStart
.
Bugfixes:
fmpp.jar
didn't included bsh.jar
.
Date of release: 2003-04-06
New features, improvements:
pp.loadData(dataLoaderName, args...)
. This can be used to load data into a variable in templates, with the same data loaders as with the "data" setting. More information...
Engine
method: TemplateModel wrap(Object obj)
Bugfixes:
DataLoader.load(engine, args)
now uses List
instead of ArrayList
for the args
.
install
target of build.xml
forgot to copy bsh.jar
.
Date of release: 2003-03-23
New features, improvements:
eval(JavaExpression)
Bugfixes:
Date of release: 2003-03-21
New features, improvements:
remove-extension
or remove-postfix
is specified both in the configuration file and in the command-line, then the two option parameter values will be merged.
Bugfixes:
Date of release: 2003-03-16
New features, improvements:
bin/fmpp
and bin\fmpp.bat
now can load the FMPP realted jars from the ANT_HOME
.
install
target to build.xml
that copies the jars to the ANT_HOME
.Bugfixes:
fmpp.FileUtil.compressPath
has died with IndexOutOfBounds
in rare cases.
rar
was missing from the list of static file extensions.
Date of release: 2003-03-13
New features, improvements:
@capture
. For example, instead of <@capture local="foo">...</@capture>
you can write <#local foo>...</#local>
.
pathTo
and sourcePathTo
.fmpp.FileUtil.getRelativePath
does no require anymore that the starting point is an ascendent directory of the destination.
Bugfixes:
fmpp.FileUtil.getRelativePath
has returned bad results in some rare situations.
Date of release: 2003-03-10
New features, improvements:
xml_infoset
example.
?chop
was renamed to ?chop_linebreak
(due the changes in the FreeMarker 2.2 CVS head)
**/.cvsignore
and **/CVS/
) in the source directory will be ignored by default.
Bugfixes:
Manifest.mf
in fmpp.jar
was empty.
Date of release: 2003-03-05
The initial Sourceforge release.
![]() |
![]() |
![]() |
![]() |
![]() |
|
||
![]() ![]() |