170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath<!-- 270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// This file is part of TagSoup and is Copyright 2002-2008 by John Cowan. 370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// 470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// TagSoup is licensed under the Apache License, 570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// Version 2.0. You may obtain a copy of this license at 670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// http://www.apache.org/licenses/LICENSE-2.0 . You may also have 770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// additional legal rights not granted by this license. 870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// 970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// TagSoup is distributed in the hope that it will be useful, but 1070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// unless required by applicable law or agreed to in writing, TagSoup 1170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 1270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// OF ANY KIND, either express or implied; not even the implied warranty 1370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 1470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath--> 1570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 1670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath<project name="tagsoup" default="dist"> 1770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 1870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- generic properties --> 1970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property file="etc/build/build.properties"/> 2070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- additional tasks --> 2170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <taskdef file="etc/build/taskdefs.txt" classpath="bin"/> 2270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 2370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <available property="transformer.factory" 2470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath classname="com.icl.saxon.TransformerFactoryImpl" 2570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath value="com.icl.saxon.TransformerFactoryImpl"/> 2670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <available property="transformer.factory" 2770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath classname="net.sf.saxon.TransformerFactoryImpl" 2870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath value="net.sf.saxon.TransformerFactoryImpl"/> 2970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <available property="transformer.factory" 3070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath classname="org.apache.xalan.processor.TransformerFactoryImpl" 3170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath value="org.apache.xalan.processor.TransformerFactoryImpl"/> 3270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <available property="transformer.factory" 3370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath classname="com.sun.org.apache.xalan.processor.TransformerFactoryImpl" 3470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath value="com.sun.org.apache.xalan.processor.TransformerFactoryImpl"/> 3570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 3670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- some folder settings --> 3770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="bin" value="bin"/> 3870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="src" value="src"/> 3970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="build" value="build"/> 4070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="dist" value="dist"/> 4170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="docs" value="docs"/> 4270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="tmp" value="tmp"/> 4370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 4470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 4570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- initialize project --> 4670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="init" description="Init project."> 4770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <tstamp/> 4870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 4970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 5070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 5170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- ensure needed folders are available --> 5270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="prepare" description="Set up folders."> 5370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <mkdir dir="${build}"/> 5470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <mkdir dir="${tmp}"/> 5570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 5670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 5770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- Build a distribution jar file --> 5870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="dist" depends="init,compile" 5970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath description="Build a binary distribution file."> 6070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <antcall target="jar-release"> 6170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="buildDir" value="build"/> 6270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="version" value="${tagsoup.version}"/> 6370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </antcall> 6470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 6570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 6670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 6770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="jar-release" depends="init" 6870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath description="Build a release jar file."> 6970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <mkdir dir="${dist}/lib" /> 7070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <jar jarfile="${dist}/lib/tagsoup-${tagsoup.version}.jar" basedir="${buildDir}"> 7170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <manifest> 7270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <attribute name="Version" value="${tagsoup.version}"/> 7370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <attribute name="Main-Class" value="org.ccil.cowan.tagsoup.CommandLine"/> 7470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </manifest> 7570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </jar> 7670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 7770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 7870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 7970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- compile java sources --> 8070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="compile" depends="init,prepare,build-parser" 8170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath description="Compile java classes."> 8270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <javac source="1.4" target="1.4" srcdir="${src}/java" destdir="${build}" deprecation="on" verbose="off" debug="on"> 8370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <src path="${src}/java"/> 8470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <src path="${tmp}/src"/> 8570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </javac> 8670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 8770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 8870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath<!-- prepare generation of the parser classes based on the definition files --> 8970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target depends="init,prepare" description="Prepare generation of parser classes." name="prepare-parser"> 9070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 9170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <echo> 9270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath Using ${transformer.factory} as the TransformerFactory 9370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </echo> 9470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 9570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <xslt in="${src}/definitions/html.tssl" out="${tmp}/HTMLModels.i" 9670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamathstyle="tssl/tssl-models.xslt"> 9770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <factory name="${transformer.factory}"/> 9870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </xslt> 9970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <xslt in="${src}/definitions/html.tssl" out="${tmp}/HTMLSchema.i" 10070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamathstyle="tssl/tssl.xslt"> 10170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <factory name="${transformer.factory}"/> 10270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </xslt> 10370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <xslt in="${src}/definitions/html.stml" out="${tmp}/HTMLScanner.i" 10470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamathstyle="stml/stml.xslt"> 10570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <factory name="${transformer.factory}"/> 10670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </xslt> 10770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 10870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 10970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 11070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 11170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- patch the parser class files --> 11270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="build-parser" depends="prepare-parser" 11370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath description="Generate parser class files."> 11470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <property name="parser.pkg-path" value="org/ccil/cowan/tagsoup"/> 11570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <mkdir dir="${tmp}/src/${parser.pkg-path}"/> 11670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <antcall target="patch-file"> 11770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="file-pref" value="HTMLModels"/> 11870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="token" value="MODEL_DEFINITIONS"/> 11970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </antcall> 12070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <antcall target="patch-file"> 12170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="file-pref" value="HTMLSchema"/> 12270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="token" value="SCHEMA_CALLS"/> 12370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </antcall> 12470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <antcall target="patch-file"> 12570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="file-pref" value="HTMLScanner"/> 12670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <param name="token" value="STATE_TABLE"/> 12770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </antcall> 12870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 12970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 13070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 13170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- patch one parser class file --> 13270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="patch-file" depends="" description="Patch a parser class file."> 13370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <copy file="${src}/templates/${parser.pkg-path}/${file-pref}.java" toDir="${tmp}/src/${parser.pkg-path}"/> 13470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <loadfile property="patch" srcFile="${tmp}/${file-pref}.i"/> 13570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <replace file="${tmp}/src/${parser.pkg-path}/${file-pref}.java" token="@@${token}@@" value="${patch}"/> 13670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 13770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 13870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- clean up the mess --> 13970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="clean" description="Clean up folders."> 14070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <delete dir="${build}"/> 14170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <delete dir="${tmp}"/> 14270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <delete dir="${docs}"/> 14370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <delete dir="${dist}"/> 14470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 14570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 14670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 14770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <!-- generate javadoc for the java classes --> 14870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <target name="docs-api" depends="init" 14970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath description="Generate javadoc documentation."> 15070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <mkdir dir="${docs}/api"/> 15170dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <javadoc packagenames="org.*" 15270dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath sourcepath="${src}/java" destdir="${docs}/api" 15370dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath use="true" 15470dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath windowtitle="TagSoup ${tagsoup.version} API"> 15570dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <doctitle><![CDATA[<h1>TagSoup Package Documentation</h1>]]></doctitle> 15670dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath <bottom><![CDATA[<em>Licence</em>: <strong>Academic Free License 3.0</strong> and/or <strong>GPL 2.0</strong>]]></bottom> 15770dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </javadoc> 15870dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath </target> 15970dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath 16070dce01b47b7ef16f67b6bd17ee66fca72b42ef1Narayan Kamath</project> 161