Am 25.10.2012 00:26 schrieb Cameron Simpson:

If I could write this as:

   if re_FUNKYPATTERN.match(test_string) as m:
     do stuff with the results of the match, using "m"

then some cascading parse decisions would feel a bit cleaner. Where I
current have this:

   m = re_CONSTRUCT1.match(line)
   if m:
     ... handle construct 1 ...
   else:
     m = re_CONSTRUCT2.match(line)
     if m:
       ... handle construct 2 ...
     else:
       m = re_CONSTRUCT3.match(line)

I could have this:

   if re_CONSTRUCT1.match(line) as m:
     ... handle construct 1 ...
   elif re_CONSTRUCT2.match(line) as m:
     ... handle construct 2 ...
   elif re_CONSTRUCT3.match(line) as m:

I would do

    for r in re_CONSTRUCT1, re_CONSTRUCT2, re_CONSTRUCT3:
        m = r.match(line)
        if m: handle_construct

or maybe

    actions = {re_CONSTRUCT1: action1, ...}

    def matching(line, *rr):
        for r in rr:
            m = r.match(line)
            if m: yield r; return

    for r in matching(line, *actions.keys()):
        actions[r]()
        break
    else:
        raise NoActionMatched() # or something like that

Thomas
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to