001 // Copyright 2004, 2005 The Apache Software Foundation
002 //
003 // Licensed under the Apache License, Version 2.0 (the "License");
004 // you may not use this file except in compliance with the License.
005 // You may obtain a copy of the License at
006 //
007 // http://www.apache.org/licenses/LICENSE-2.0
008 //
009 // Unless required by applicable law or agreed to in writing, software
010 // distributed under the License is distributed on an "AS IS" BASIS,
011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012 // See the License for the specific language governing permissions and
013 // limitations under the License.
014
015 package org.apache.tapestry.util.text;
016
017 /**
018 * An object that translates selected ASCII characters into equivalent strings.
019 *
020 * @author mb
021 * @since 4.0
022 */
023 public class AsciiCharacterTranslator implements ICharacterTranslator
024 {
025
026 private String[] _charMap;
027
028 /**
029 * Creates and initializes a new translator that translates the provided
030 * ASCII characters into strings. All other characters will be translated to
031 * null.
032 *
033 * @param characterMap
034 * an array of pairs of strings. Each pair consists of a key that
035 * must be a single ASCII character, and a value that is its
036 * equivalent string.
037 */
038 public AsciiCharacterTranslator(String[][] characterMap)
039 {
040 _charMap = new String[128];
041
042 int pairCount = characterMap.length;
043 for(int i = 0; i < pairCount; i++)
044 {
045 String[] pair = characterMap[i];
046 if (pair.length != 2) continue;
047 String key = pair[0];
048 String value = pair[1];
049 if (key.length() != 1) continue;
050 char ch = key.charAt(0);
051 if (ch >= 128) continue;
052
053 _charMap[ch] = value;
054 }
055 }
056
057 /**
058 * @see org.apache.tapestry.util.text.ICharacterTranslator#translate(char) .
059 */
060 public String translate(char ch)
061 {
062 if (ch >= 128) return null;
063 return _charMap[ch];
064 }
065 }