summaryrefslogtreecommitdiff
path: root/libs/python/pyste/src/Pyste/utils.py
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-06-25 22:59:01 +0000
committer <>2013-09-27 11:49:28 +0000
commit8c4528713d907ee2cfd3bfcbbad272c749867f84 (patch)
treec09e2ce80f47b90c85cc720f5139089ad9c8cfff /libs/python/pyste/src/Pyste/utils.py
downloadboost-tarball-baserock/morph.tar.gz
Imported from /home/lorry/working-area/delta_boost-tarball/boost_1_54_0.tar.bz2.boost_1_54_0baserock/morph
Diffstat (limited to 'libs/python/pyste/src/Pyste/utils.py')
-rw-r--r--libs/python/pyste/src/Pyste/utils.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/libs/python/pyste/src/Pyste/utils.py b/libs/python/pyste/src/Pyste/utils.py
new file mode 100644
index 000000000..a8843e3f6
--- /dev/null
+++ b/libs/python/pyste/src/Pyste/utils.py
@@ -0,0 +1,78 @@
+# Copyright Bruno da Silva de Oliveira 2003. Use, modification and
+# distribution is subject to the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+from __future__ import generators
+import string
+import sys
+
+#==============================================================================
+# enumerate
+#==============================================================================
+def enumerate(seq):
+ i = 0
+ for x in seq:
+ yield i, x
+ i += 1
+
+
+#==============================================================================
+# makeid
+#==============================================================================
+_valid_chars = string.ascii_letters + string.digits + '_'
+_valid_chars = dict(zip(_valid_chars, _valid_chars))
+
+def makeid(name):
+ 'Returns the name as a valid identifier'
+ if type(name) != str:
+ print type(name), name
+ newname = []
+ for char in name:
+ if char not in _valid_chars:
+ char = '_'
+ newname.append(char)
+ newname = ''.join(newname)
+ # avoid duplications of '_' chars
+ names = [x for x in newname.split('_') if x]
+ return '_'.join(names)
+
+
+#==============================================================================
+# remove_duplicated_lines
+#==============================================================================
+def remove_duplicated_lines(text):
+ includes = text.splitlines()
+ d = dict([(include, 0) for include in includes])
+ includes = d.keys()
+ includes.sort()
+ return '\n'.join(includes)
+
+
+#==============================================================================
+# left_equals
+#==============================================================================
+def left_equals(s):
+ s = '// %s ' % s
+ return s + ('='*(80-len(s))) + '\n'
+
+
+#==============================================================================
+# post_mortem
+#==============================================================================
+def post_mortem():
+
+ def info(type, value, tb):
+ if hasattr(sys, 'ps1') or not sys.stderr.isatty():
+ # we are in interactive mode or we don't have a tty-like
+ # device, so we call the default hook
+ sys.__excepthook__(type, value, tb)
+ else:
+ import traceback, pdb
+ # we are NOT in interactive mode, print the exception...
+ traceback.print_exception(type, value, tb)
+ print
+ # ...then start the debugger in post-mortem mode.
+ pdb.pm()
+
+ sys.excepthook = info