aboutsummaryrefslogtreecommitdiffstats
path: root/src/org/apache/fop/layout/hyphenation/PatternParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/apache/fop/layout/hyphenation/PatternParser.java')
-rw-r--r--src/org/apache/fop/layout/hyphenation/PatternParser.java119
1 files changed, 89 insertions, 30 deletions
diff --git a/src/org/apache/fop/layout/hyphenation/PatternParser.java b/src/org/apache/fop/layout/hyphenation/PatternParser.java
index 423318166..ac34ae60b 100644
--- a/src/org/apache/fop/layout/hyphenation/PatternParser.java
+++ b/src/org/apache/fop/layout/hyphenation/PatternParser.java
@@ -1,10 +1,53 @@
/*
* $Id$
- * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
- * For details on use and redistribution please refer to the
- * LICENSE file included with these sources.
- */
-
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
+ *
+ * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "FOP" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ============================================================================
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation and was originally created by
+ * James Tauber <jtauber@jtauber.com>. For more information on the Apache
+ * Software Foundation, please see <http://www.apache.org/>.
+ */
package org.apache.fop.layout.hyphenation;
// SAX
@@ -118,10 +161,12 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
File file = new File(filename);
String path = file.getAbsolutePath();
String fSep = System.getProperty("file.separator");
- if (fSep != null && fSep.length() == 1)
+ if (fSep != null && fSep.length() == 1) {
path = path.replace(fSep.charAt(0), '/');
- if (path.length() > 0 && path.charAt(0) != '/')
+ }
+ if (path.length() > 0 && path.charAt(0) != '/') {
path = '/' + path;
+ }
try {
return new InputSource(new URL("file", null, path).toString());
} catch (java.net.MalformedURLException e) {
@@ -133,15 +178,18 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
String word;
boolean space = false;
int i;
- for (i = 0; i < chars.length(); i++)
- if (Character.isWhitespace(chars.charAt(i)))
+ for (i = 0; i < chars.length(); i++) {
+ if (Character.isWhitespace(chars.charAt(i))) {
space = true;
- else
+ } else {
break;
+ }
+ }
if (space) {
// chars.delete(0,i);
- for (int countr = i; countr < chars.length(); countr++)
+ for (int countr = i; countr < chars.length(); countr++) {
chars.setCharAt(countr - i, chars.charAt(countr));
+ }
chars.setLength(chars.length() - i);
if (token.length() > 0) {
word = token.toString();
@@ -158,8 +206,9 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
}
token.append(chars.toString().substring(0, i));
// chars.delete(0,i);
- for (int countr = i; countr < chars.length(); countr++)
+ for (int countr = i; countr < chars.length(); countr++) {
chars.setCharAt(countr - i, chars.charAt(countr));
+ }
chars.setLength(chars.length() - i);
if (space) {
word = token.toString();
@@ -173,9 +222,11 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
protected static String getPattern(String word) {
StringBuffer pat = new StringBuffer();
int len = word.length();
- for (int i = 0; i < len; i++)
- if (!Character.isDigit(word.charAt(i)))
+ for (int i = 0; i < len; i++) {
+ if (!Character.isDigit(word.charAt(i))) {
pat.append(word.charAt(i));
+ }
+ }
return pat.toString();
}
@@ -188,9 +239,9 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
StringBuffer buf = new StringBuffer();
for (int j = 0; j < str.length(); j++) {
char c = str.charAt(j);
- if (c != hyphenChar)
+ if (c != hyphenChar) {
buf.append(c);
- else {
+ } else {
res.add(buf.toString());
buf.setLength(0);
char[] h = new char[1];
@@ -200,10 +251,12 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
res.add(new Hyphen(new String(h), null, null));
}
}
- if (buf.length() > 0)
+ if (buf.length() > 0) {
res.add(buf.toString());
- } else
+ }
+ } else {
res.add(item);
+ }
}
return res;
}
@@ -212,11 +265,12 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
StringBuffer res = new StringBuffer();
for (int i = 0; i < ex.size(); i++) {
Object item = ex.get(i);
- if (item instanceof String)
+ if (item instanceof String) {
res.append((String)item);
- else {
- if (((Hyphen)item).noBreak != null)
+ } else {
+ if (((Hyphen)item).noBreak != null) {
res.append(((Hyphen)item).noBreak);
+ }
}
}
return res.toString();
@@ -231,8 +285,9 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
if (Character.isDigit(c)) {
il.append(c);
i++;
- } else
+ } else {
il.append('0');
+ }
}
return il.toString();
}
@@ -248,13 +303,14 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
Attributes attrs) {
if (local.equals("hyphen-char")) {
String h = attrs.getValue("value");
- if (h != null && h.length() == 1)
+ if (h != null && h.length() == 1) {
hyphenChar = h.charAt(0);
- } else if (local.equals("classes"))
+ }
+ } else if (local.equals("classes")) {
currElement = ELEM_CLASSES;
- else if (local.equals("patterns"))
+ } else if (local.equals("patterns")) {
currElement = ELEM_PATTERNS;
- else if (local.equals("exceptions")) {
+ } else if (local.equals("exceptions")) {
currElement = ELEM_EXCEPTIONS;
exception = new ArrayList();
} else if (local.equals("hyphen")) {
@@ -291,13 +347,15 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
// nothing to do
break;
}
- if (currElement != ELEM_HYPHEN)
+ if (currElement != ELEM_HYPHEN) {
token.setLength(0);
+ }
}
- if (currElement == ELEM_HYPHEN)
+ if (currElement == ELEM_HYPHEN) {
currElement = ELEM_EXCEPTIONS;
- else
+ } else {
currElement = 0;
+ }
}
@@ -368,8 +426,9 @@ public class PatternParser extends DefaultHandler implements PatternConsumer {
String systemId = ex.getSystemId();
if (systemId != null) {
int index = systemId.lastIndexOf('/');
- if (index != -1)
+ if (index != -1) {
systemId = systemId.substring(index + 1);
+ }
str.append(systemId);
}
str.append(':');