Manchmal ist es notwendig eine Benutzereingabe nachträglich zu bearbeiten. Ant bietet so weit ich es beurteilen kann, diese möglichkeit nativ nicht an. Einen Task dafür zu schreiben schien mir etwas zu viel, da ich diesen Fall auch nur einmalig benötigte. Dabei bin ich auf eine Andere interessante Möglichkeit gestoßen. Das javax.script Package bzw. Rhino, womit ich JavaScript sozusagen on the fly verwenden kann.
Was wir benötigen ist die Java Version ab 1.6, wo Rhino schon mit dabei ist. Ein Tutorial über JavaScript und Ant befindet sich auf der SitePen Blog Seite. Nun kommen wir zu meiner Ad-hoc Lösung.
<?xml version="1.0"?>
<project name="cds" default="main" basedir=".">
<!-- Ganz viel anderes Zeug... -->
<!--
Add a new controller and a view script
-->
<target name="controller">
<input message="Module?:" addproperty="create.modulename" defaultvalue="default" />
<input message="Controller?:" addproperty="create.controllername" />
<!--
A small script to upper or lower chase the first character of a user input
-->
<script language="javascript">
<![CDATA[
String.prototype.ucFirst = function () {
return this.substring(0, 1).toUpperCase() + this.substring(1);
}
String.prototype.lcFirst = function () {
return this.substring(0, 1).toLowerCase() + this.substring(1);
}
// store the result in a new property
cds.setProperty("create.controllernameUpper", cds.getProperty("create.controllername").ucFirst());
cds.setProperty("create.controllernameLower", cds.getProperty("create.controllername").lcFirst());
cds.setProperty("create.modulenameLower", cds.getProperty("create.modulename").lcFirst());
]]>
</script>
<!-- Ganz viel anderes Zeug... -->
</target>
Der Code ist selbsterklärend und aus diesem Grund werde ich nicht weiter darauf eingehen. Das einzige was zu beachten ist, ist das cds der Name des Projektes ist. Das war es auch schon wieder. Happy Coding.