Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / globplot / biopython-1.50 / Bio / stringfns.py
diff --git a/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/stringfns.py b/website/archive/binaries/mac/src/globplot/biopython-1.50/Bio/stringfns.py
new file mode 100644 (file)
index 0000000..24e461f
--- /dev/null
@@ -0,0 +1,90 @@
+# Copyright 2000 by Jeffrey Chang.  All rights reserved.
+# This code is part of the Biopython distribution and governed by its
+# license.  Please see the LICENSE file that should have been included
+# as part of this package.
+
+"""This provides useful general functions for working with strings (DEPRECATED).
+
+This module and its C code equivalent are considered to be deprecated, and
+are likely to be removed in a future release of Biopython.  Please get in
+touch via the mailing list if this will affect you.
+
+Functions:
+splitany       Split a string using many delimiters.
+find_anychar   Find one of a list of characters in a string.
+rfind_anychar  Find one of a list of characters in a string, from end to start.
+
+"""
+import warnings
+warnings.warn("Bio.stringfns and its C code equivalent Bio.cstringfns are" \
+              +" deprecated, and will be removed in a future release of"\
+              +" Biopython.  If you want to continue to use this code,"\
+              +" please get in contact with the Biopython developers via"\
+              +" the mailing lists to avoid its permanent removal from"\
+              +" Biopython.", \
+              DeprecationWarning)
+
+def splitany(s, sep=" \011\012\013\014\015", maxsplit=None, negate=0):
+    """splitany(s [,sep [,maxsplit [,negate]]]) -> list of strings
+
+    Split a string.  Similar to string.split, except that this considers
+    any one of the characters in sep to be a delimiter.  If negate is
+    true, then everything but sep will be a separator.
+
+    """
+    strlist = []
+    prev = 0
+    for i in range(len(s)):
+        if maxsplit is not None and len(strlist) >= maxsplit:
+            break
+        if (s[i] in sep) == (not negate):
+            strlist.append(s[prev:i])
+            prev = i+1
+    strlist.append(s[prev:])
+    return strlist
+
+def find_anychar(string, chars, index=None, negate=0):
+    """find_anychar(string, chars[, index]) -> index of a character or -1
+
+    Find a character in string.  chars is a list of characters to look
+    for.  Return the index of the first occurrence of any of the
+    characters, or -1 if not found.  index is the index where the
+    search should start.  By default, I search from the beginning of
+    the string.
+    
+    """
+    if index is None:
+        index = 0
+    while index < len(string) and \
+          ((not negate and string[index] not in chars) or
+           (negate and string[index] in chars)):
+        index += 1
+    if index == len(string):
+        return -1
+    return index
+
+def rfind_anychar(string, chars, index=None, negate=0):
+    """rfind_anychar(string, chars[, index]) -> index of a character or -1
+
+    Find a character in string, looking from the end to the start.
+    chars is a list of characters to look for.  Return the index of
+    the first occurrence of any of the characters, or -1 if not found.
+    index is the index where the search should start.  By default, I
+    search from the end of the string.
+    
+    """
+    if index is None:
+        index = len(string)-1
+    while index >= 0 and \
+          ((not negate and string[index] not in chars) or
+           (negate and string[index] in chars)):
+        index -= 1
+    # If not found, index will already be -1.
+    return index
+
+# Try and load C implementations of functions.  If I can't,
+# then just ignore and use the pure python implementations.
+try:
+    from cstringfns import *
+except ImportError:
+    pass