diff options
Diffstat (limited to 'src/org/apache/fop/layout/hyphenation/PatternParser.java')
-rw-r--r-- | src/org/apache/fop/layout/hyphenation/PatternParser.java | 119 |
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(':'); |