<?xml version="1.0" ?>
<!--

  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.

-->
<project name="Squiggly" default="compile" basedir=".">

    <property file="${basedir}/env.properties"/>
    <property environment="env"/>
    <property file="${basedir}/local.properties"/>
    <property file="${basedir}/build.properties"/>
	
    <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
        <isset property="env.FLEX_HOME" />
    </condition>
        	
    <property name="version" value="1.1" />
	
    <path id="flexTasks.path">
        <fileset dir="${FLEX_HOME}">
            <include name="lib/flexTasks.jar" />
            <include name="ant/lib/flexTasks.jar" />
        </fileset>
    </path>
    <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/>
	
	<target name="compile" description="compile squiggly swcs and ane" depends="compile-swc,compile-ane">
	</target>
	
	<target name="compile-swc" description="compile squiggly swcs">
		<ant dir="main" />
	</target>
	
	<target name="compile-ane" description="compile squiggly ane">
		<!-- TODO may be added in a future release -->
	</target>
		
	<target name="package" description="package up all source files" depends="package-dir,generate-docs,package-source-tar,package-source-zip,package-binary-tar,package-binary-zip">
	</target>
	
	<target name="generate-docs" description="generate asdocs">
		<asdoc output="docs" lenient="true" failonerror="true" warnings="false" strict="false" locale="en_US" fork="true"
			exclude-dependencies="true"  
			window-title="Apache Flex Squiggly API Documentation ${version}"
            main-title="Apache Flex Squiggly API${version} API Reference">

		    <doc-classes class="com.adobe.linguistics.spelling.SpellUI"/>
		    <doc-classes class="com.adobe.linguistics.spelling.SpellUIForTLF"/>
		    <doc-classes class="com.adobe.linguistics.spelling.HunspellDictionary"/>
		    <doc-classes class="com.adobe.linguistics.spelling.SpellChecker"/>
		    <doc-classes class="com.adobe.linguistics.spelling.UserDictionary"/>
		    <doc-classes class="com.adobe.linguistics.utils.TextTokenizer"/>
		    <doc-classes class="com.adobe.linguistics.utils.Token"/>
		    <doc-classes class="com.adobe.linguistics.spelling.framework.ResourceTable"/>
		    <doc-classes class="com.adobe.linguistics.spelling.framework.SpellingConfiguration"/>		    
		    <doc-classes class="com.adobe.linguistics.spelling.framework.SpellingService"/>		    
		    <doc-classes class="com.adobe.linguistics.spelling.framework.ui.IHighlighter"/>
		    <doc-classes class="com.adobe.linguistics.spelling.framework.ui.HaloHighlighter"/>
			<doc-classes class="com.adobe.linguistics.spelling.framework.ui.SparkHighlighter"/>
			<doc-classes class="com.adobe.linguistics.spelling.framework.ui.TLFHighlighter"/>
	    		    
			<compiler.source-path path-element="main/SpellingUI/src"/>
			<compiler.source-path path-element="main/SpellingUITLF/src"/>
			<compiler.source-path path-element="main/SpellingEngine/src"/>
			<compiler.source-path path-element="main/LinguisticUtils/src"/>
			<compiler.source-path path-element="main/SpellingFramework/src"/>
			
			<package name="com.adobe.linguistics.spelling" description="This package providing spell checking functionality to your action script applications. This includes the core spell checking engine and the optional SpellUI class for easy integration with your existing Flex projects." />
			<package name="com.adobe.linguistics.spelling.framework.ui" description="This package provides text highlighting related functionalities." />
			<package name="com.adobe.linguistics.spelling.framework" description="This package provides spelling service and spelling configuration related functionalities." />
			<package name="com.adobe.linguistics.utils" description="This package provides text parsing and tokenizing related classes." />
		</asdoc>
	</target>
	
	<target name="package-dir">
		<delete dir="${basedir}/out"/>  
		<mkdir dir="${basedir}/out"/> 
	</target>
		
	<target name="package-source-tar" description="tar up all source files">     
        <tar destfile="${basedir}/out/apache-flex-squiggly-${version}-src.tar.gz" 
         	compression="gzip"
            longfile="gnu">
            <tarfileset dir="${basedir}">
                <include name="LICENSE" />
                <include name="NOTICE" />
                <include name="README" />
            	<include name="RELEASE_NOTES" />
            	<include name="CONTRIBUTING" />
            	<include name="CONTRIBUTORS" />
                <include name="**/*.xml" />
                <include name="**/*.mxml" />
            	<include name="**/*.as" />
            	<include name="**/*.txt" />
            	<include name="**/*.bat" />
            	<include name="**/*.py" />
            	<include name="**/*.sh" />
            	<include name="**/*.properties" />
            	<include name="docs/**" />
            	<include name="dictionaries/**" />
            	<exclude name="ane/**" />
            	<exclude name="main/ASDocExamples/**" />
            	<exclude name="main/Automation/**" />
            	<exclude name="main/Data/**" />
            	<exclude name="main/Demo/**" />
            	<exclude name="main/Tools/**" />
            	<exclude name="main/generated/**" />
             </tarfileset>
         </tar>
	</target>
	
	<target name="package-source-zip" description="zip up all source files">    
        <zip destfile="${basedir}/out/apache-flex-squiggly-${version}-src.zip">
            <fileset dir="${basedir}">
                <include name="LICENSE" />
                <include name="NOTICE" />
                <include name="README" />
                <include name="RELEASE_NOTES" />
            	<include name="CONTRIBUTING" />
            	<include name="CONTRIBUTORS" />
                <include name="**/*.xml" />
                <include name="**/*.mxml" />
            	<include name="**/*.as" />
            	<include name="**/*.txt" />
            	<include name="**/*.bat" />
            	<include name="**/*.py" />
            	<include name="**/*.sh" />
            	<include name="**/*.properties" />
            	<include name="docs/**" />
            	<include name="dictionaries/**" />
            	<exclude name="ane/**" />
            	<exclude name="main/ASDocExamples/**" />
            	<exclude name="main/Automation/**" />
            	<exclude name="main/Data/**" />
            	<exclude name="main/Demo/**" />
            	<exclude name="main/Tools/**" />
            	<exclude name="main/generated/**" />
             </fileset>
         </zip>
	</target>
	
	<target name="package-binary-tar" description="tar up all source files and swcs">     
	        <tar destfile="${basedir}/out/apache-flex-squiggly-${version}-bin.tar.gz" 
	         	compression="gzip"
	            longfile="gnu">
	            <tarfileset dir="${basedir}">
	                <include name="LICENSE" />
	                <include name="NOTICE" />
	                <include name="README" />
	                <include name="RELEASE_NOTES" />
	            	<include name="CONTRIBUTING" />
	            	<include name="CONTRIBUTORS" />
	                <include name="**/*.xml" />
	                <include name="**/*.mxml" />
	            	<include name="**/*.as" />
	            	<include name="**/*.txt" />
	            	<include name="**/*.bat" />
	            	<include name="**/*.py" />
	            	<include name="**/*.sh" />
	            	<include name="**/*.properties" />
	            	<include name="docs/**" />
	            	<include name="dictionaries/**" />
	                <include name="**/*.swc" />
					<include name="**/*.swf" />
	            	<exclude name="ane/**" />
	            	<exclude name="main/ASDocExamples/**" />
	            	<exclude name="main/Automation/**" />
	            	<exclude name="main/Data/**" />
	            	<exclude name="main/Demo/**" />
	            	<exclude name="main/Tools/**" />
	            	<exclude name="main/generated/**" />
	             </tarfileset>
	         </tar>
		</target>
		
		<target name="package-binary-zip" description="zip up all source files and swcs">    
	        <zip destfile="${basedir}/out/apache-flex-squiggly-${version}-bin.zip">
	            <fileset dir="${basedir}">
	                <include name="LICENSE" />
	                <include name="NOTICE" />
	                <include name="README" />
	                <include name="RELEASE_NOTES" />
	            	<include name="CONTRIBUTING" />
	            	<include name="CONTRIBUTORS" />
	                <include name="**/*.xml" />
	                <include name="**/*.mxml" />
	            	<include name="**/*.as" />
	            	<include name="**/*.txt" />
	            	<include name="**/*.bat" />
	            	<include name="**/*.py" />
	            	<include name="**/*.sh" />
	            	<include name="**/*.properties" />
	            	<include name="docs/**" />
	            	<include name="dictionaries/**" />
	                <include name="**/*.swc" />
					<include name="**/*.swf" />
	            	<exclude name="ane/**" />
	            	<exclude name="main/ASDocExamples/**" />
	            	<exclude name="main/Automation/**" />
	            	<exclude name="main/Data/**" />
	            	<exclude name="main/Demo/**" />
	            	<exclude name="main/Tools/**" />
	            	<exclude name="main/generated/**" />
	             </fileset>
	         </zip>
		</target>
   
    <target name="clean" description="clean up">
    	<delete>
    		<fileset dir="${basedir}" includes="**/*.swf" />
    	</delete>
    	<delete dir="${basedir}/out"/> 
    </target>
	
	<target name="test" description="Runs the FlexUnit tests for this project">
		<ant dir="main" target="unit-tests" />
    </target>
</project>
