Browse Source

Reintroduce they user's hyphenation patterns into the build process.

Fix a bug in the jar-hyphenation target.


git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@239447 13f79535-47bb-0310-9956-ffa450edef68
pull/31/head
Simon Pepping 19 years ago
parent
commit
f37d2354ff
2 changed files with 44 additions and 26 deletions
  1. 10
    4
      build.xml
  2. 34
    22
      src/java/org/apache/fop/tools/anttasks/SerializeHyphPattern.java

+ 10
- 4
build.xml View File

<property name="xdocs.dir" value="${src.dir}/documentation/content/xdocs"/> <property name="xdocs.dir" value="${src.dir}/documentation/content/xdocs"/>
<property name="fo.examples.dir" value="${basedir}/examples/fo/basic"/> <property name="fo.examples.dir" value="${basedir}/examples/fo/basic"/>
<property name="lib.dir" value="${basedir}/lib"/> <property name="lib.dir" value="${basedir}/lib"/>
<property name="user.hyph.dir" value="${basedir}/hyph"/>


<property name="build.dir" value="${basedir}/build"/> <property name="build.dir" value="${basedir}/build"/>
<property name="build.gensrc.dir" value="${build.dir}/gensrc"/> <property name="build.gensrc.dir" value="${build.dir}/gensrc"/>
</path> </path>
<taskdef name="serHyph" classname="org.apache.fop.tools.anttasks.SerializeHyphPattern" classpathref="hyph-classpath"/> <taskdef name="serHyph" classname="org.apache.fop.tools.anttasks.SerializeHyphPattern" classpathref="hyph-classpath"/>
<mkdir dir="${build.dir}/hyph"/> <mkdir dir="${build.dir}/hyph"/>
<serHyph includes="*.xml"
sourceDir="${src.hyph.dir}"
targetDir="${build.dir}/hyph"/>
<serHyph targetDir="${build.dir}/hyph">
<fileset dir="${user.hyph.dir}">
<include name="*.xml"/>
</fileset>
<fileset dir="${src.hyph.dir}">
<include name="*.xml"/>
</fileset>
</serHyph>
</target> </target>


<target name="uptodate-jar-hyphenation" depends="compile-hyphenation"> <target name="uptodate-jar-hyphenation" depends="compile-hyphenation">
<tstamp> <tstamp>
<format property="ts" pattern="yyyyMMdd-HHmmss-z"/> <format property="ts" pattern="yyyyMMdd-HHmmss-z"/>
</tstamp> </tstamp>
<jar jarfile="${build.dir}/fop-hyph.jar" basedir="${build.dir}/hyph">
<jar jarfile="${build.dir}/fop-hyph.jar" basedir="${build.dir}" includes="hyph/*.hyp">
<manifest> <manifest>
<attribute name="Implementation-Title" value="${Name}"/> <attribute name="Implementation-Title" value="${Name}"/>
<attribute name="Implementation-Version" value="${version}"/> <attribute name="Implementation-Version" value="${version}"/>

+ 34
- 22
src/java/org/apache/fop/tools/anttasks/SerializeHyphPattern.java View File

import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.util.List;


// Ant // Ant
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.types.FileSet;


// FOP // FOP
import org.apache.fop.hyphenation.HyphenationTree; import org.apache.fop.hyphenation.HyphenationTree;
*/ */




public class SerializeHyphPattern extends MatchingTask {
private File sourceDir, targetDir;
public class SerializeHyphPattern extends Task {
private List filesets = new java.util.ArrayList();
private File targetDir;
private boolean errorDump = false; private boolean errorDump = false;


/** /**
* @see org.apache.tools.ant.Task#execute() * @see org.apache.tools.ant.Task#execute()
*/ */
public void execute() throws org.apache.tools.ant.BuildException { public void execute() throws org.apache.tools.ant.BuildException {
DirectoryScanner ds = this.getDirectoryScanner(sourceDir);
String[] files = ds.getIncludedFiles();
for (int i = 0; i < files.length; i++) {
processFile(files[i].substring(0, files[i].length() - 4));
// deal with the filesets
for (int i = 0; i < getFilesets().size(); i++) {
FileSet fs = (FileSet) getFilesets().get(i);
DirectoryScanner ds = fs.getDirectoryScanner(getProject());
File basedir = ds.getBasedir();
String[] files = ds.getIncludedFiles();
for (int j = 0; j < files.length; j++) {
processFile(basedir, files[j].substring(0, files[j].length() - 4));
}
} }
} // end execute } // end execute




/** /**
* Sets the source directory.
* @param sourceDir source directory
* Adds a set of pattern files (nested fileset attribute).
* @param set a fileset
*/ */
public void setSourceDir(String sourceDir) {
File dir = new File(sourceDir);
if (!dir.exists()) {
System.err.println("Fatal Error: source directory " + sourceDir
+ " for hyphenation files doesn't exist.");
System.exit(1);
}
this.sourceDir = dir;
public void addFileset(FileSet set) {
filesets.add(set);
}

/**
* Returns the current list of filesets.
* @return the filesets
*/
public List getFilesets() {
return this.filesets;
} }


/** /**
* checks whether input or output files exists or the latter is older than input file * checks whether input or output files exists or the latter is older than input file
* and start build if necessary * and start build if necessary
*/ */
private void processFile(String filename) {
File infile = new File(sourceDir, filename + ".xml");
private void processFile(File basedir, String filename) {
File infile = new File(basedir, filename + ".xml");
File outfile = new File(targetDir, filename + ".hyp"); File outfile = new File(targetDir, filename + ".hyp");
//long outfileLastModified = outfile.lastModified(); //long outfileLastModified = outfile.lastModified();
boolean startProcess = true; boolean startProcess = true;
* //quick access for debugging * //quick access for debugging
* public static void main (String args[]) { * public static void main (String args[]) {
* SerializeHyphPattern ser = new SerializeHyphPattern(); * SerializeHyphPattern ser = new SerializeHyphPattern();
* ser.setIncludes("*.xml");
* ser.setSourceDir("\\xml-fop\\hyph\\");
* ser.setTargetDir("\\xml-fop\\hyph\\");
* FileSet set = new FileSet();
* set.setDir(new File("src/hyph"));
* set.setIncludes("*.xml");
* ser.addFileset(set);
* ser.setTargetDir("build/hyph");
* ser.execute(); * ser.execute();
* } * }
*/ */

Loading…
Cancel
Save