############################################################################### ## ## ## ALEXANDRIA DIGITAL LIBRARY ## ## University of California at Santa Barbara ## ## ## ## ------------------------------------------------------------------------- ## ## ## ## Copyright (c) 2002 by the Regents of the University of California ## ## All rights reserved ## ## ## ## Redistribution and use in source and binary forms, with or without ## ## modification, 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. All advertising materials mentioning features or use of this ## ## software must display the following acknowledgement: This product ## ## includes software developed by the Alexandria Digital Library, ## ## University of California at Santa Barbara, and its contributors. ## ## ## ## 4. Neither the name of the University nor the names of its ## ## contributors may be used to endorse or promote products derived ## ## from this software without specific prior written permission. ## ## ## ## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND ANY ## ## EXPRESS 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 REGENTS OR CONTRIBUTORS BE LIABLE FOR ## ## ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ## ## DAMAGES (INCLUDING, 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. ## ## ## ############################################################################### # $Header: /export/home/gjanee/bucket99/paradigms/RCS/TextUtils.py,v 1.1 2002/10/30 04:03:17 gjanee Exp $ # SYNOPSIS # # TextUtils # # .mappings # # .identity # The identity mapping. # # .nonAlphanumericToWhitespace # Maps non-alphanumeric characters to whitespace. # # .lowercase # Maps characters to their lowercase equivalents. # # .uppercase # Maps characters to their uppercase equivalents. # # .lowercaseAlphanumericOthersToWhitespace # A combination of 'nonAlphanumericToWhitespace' and # 'lowercase'. # # .uppercaseAlphanumericOthersToWhitespace # A combination of 'nonAlphanumericToWhitespace' and # 'uppercase'. # # .deleteLists # # .keepAll # Keep all characters. # # .keepAlphanumeric # Keep alphanumeric characters; delete all others. # # DESCRIPTION # # Handy character mappings and character delete lists. # # AUTHOR # # Greg Janee # gjanee@alexandria.ucsb.edu # # HISTORY # # $Log: TextUtils.py,v $ # Revision 1.1 2002/10/30 04:03:17 gjanee # Initial revision # import string from java.lang import Character def _makeIdentity (): return string.maketrans("", "") def _makeNonAlphanumericToWhitespace (): m = "" for i in range(256): if Character.isLetterOrDigit(chr(i)): m = m + chr(i) else: m = m + " " return m def _makeLowercase (): m = "" for i in range(256): m = m + Character.toLowerCase(chr(i)) return m def _makeUppercase (): m = "" for i in range(256): m = m + Character.toUpperCase(chr(i)) return m def _makeLowercaseAlphanumericOthersToWhitespace (): m = "" for i in range(256): if Character.isLetterOrDigit(chr(i)): m = m + Character.toLowerCase(chr(i)) else: m = m + " " return m def _makeUppercaseAlphanumericOthersToWhitespace (): m = "" for i in range(256): if Character.isLetterOrDigit(chr(i)): m = m + Character.toUpperCase(chr(i)) else: m = m + " " return m class Mappings: identity = _makeIdentity() nonAlphanumericToWhitespace = _makeNonAlphanumericToWhitespace() lowercase = _makeLowercase() uppercase = _makeUppercase() lowercaseAlphanumericOthersToWhitespace =\ _makeLowercaseAlphanumericOthersToWhitespace() uppercaseAlphanumericOthersToWhitespace =\ _makeUppercaseAlphanumericOthersToWhitespace() def _makeKeepAlphanumeric (): l = "" for i in range(256): if not Character.isLetterOrDigit(chr(i)): l = l + chr(i) return l class DeleteLists: keepAll = "" keepAlphanumeric = _makeKeepAlphanumeric() class TextUtils: mappings = Mappings() deleteLists = DeleteLists()