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.
|
||