X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Futil%2Fmisc.py;h=9b8d88cf424d2eeeb62e369c0d277701ec74023f;hb=64aad9d6539eb92b595b9e86485103999021cf05;hp=c0a70a9a20ba66b152009b84f36ce9ddd166f90e;hpb=52a003279ee401971e6e2e863fe51db208e7b191;p=ejpi diff --git a/src/util/misc.py b/src/util/misc.py index c0a70a9..9b8d88c 100644 --- a/src/util/misc.py +++ b/src/util/misc.py @@ -649,6 +649,35 @@ def call_trace(f): @contextlib.contextmanager +def nested_break(): + """ + >>> with nested_break() as mylabel: + ... for i in xrange(3): + ... print "Outer", i + ... for j in xrange(3): + ... if i == 2: raise mylabel + ... if j == 2: break + ... print "Inner", j + ... print "more processing" + Outer 0 + Inner 0 + Inner 1 + Outer 1 + Inner 0 + Inner 1 + Outer 2 + """ + + class NestedBreakException(Exception): + pass + + try: + yield NestedBreakException + except NestedBreakException: + pass + + +@contextlib.contextmanager def lexical_scope(*args): """ @note Source: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/520586