<s> """<STR_LIT>""" <EOL> import ellyChar <EOL> import simpleTransform <EOL> Zn = [ <EOL> u'<STR_LIT>' , u'<STR_LIT>' , <EOL> u'<STR_LIT>' , u'<STR_LIT>' , <EOL> u'<STR_LIT>' , u'<STR_LIT>' , <EOL> u'<STR_LIT>' , u'<STR_LIT>' , <EOL> u'<STR_LIT>' , u'<STR_LIT>' <EOL> ] <EOL> Lm = <NUM_LIT:5> <EOL> Ln = <NUM_LIT:11> <EOL> class TimeTransform ( simpleTransform . SimpleTransform ) : <EOL> """<STR_LIT>""" <EOL> def __init__ ( self ) : <EOL> """<STR_LIT>""" <EOL> super ( TimeTransform , self ) . __init__ ( ) <EOL> self . _tz = u'<STR_LIT>' <EOL> def setZone ( self , zone ) : <EOL> """<STR_LIT>""" <EOL> if type ( zone ) is str and len ( zone ) == <NUM_LIT:3> : <EOL> self . _tz = zone <EOL> def rewrite ( self , ts ) : <EOL> """<STR_LIT>""" <EOL> lts = len ( ts ) <EOL> if lts < Lm : return False <EOL> tz = self . _tz <EOL> self . _xm = '<STR_LIT>' <EOL> self . _m = u'<STR_LIT>' <EOL> self . _s = u'<STR_LIT>' <EOL> c = ts [ <NUM_LIT:0> ] <EOL> if not ellyChar . isDigit ( c ) : <EOL> return False <EOL> k = self . _matchN ( ts ) <EOL> if k == <NUM_LIT:0> : return False <EOL> k += self . _findAMorPM ( ts [ k : ] ) <EOL> if self . _xm == '<STR_LIT:p>' and self . _hr < <NUM_LIT:12> : <EOL> self . _hr += <NUM_LIT:12> <EOL> elif self . _xm == '<STR_LIT:a>' and self . _hr == <NUM_LIT:12> : <EOL> self . _hr = <NUM_LIT:0> <EOL> t = ts [ k : ] <EOL> dk = <NUM_LIT:0> <EOL> ns = <NUM_LIT:0> <EOL> if len ( t ) > <NUM_LIT:0> : <EOL> if t [ <NUM_LIT:0> ] == '<STR_LIT:U+0020>' : <EOL> dk += <NUM_LIT:1> <EOL> ns = <NUM_LIT:1> <EOL> dk += self . get ( t [ dk : ] ) <EOL> ss = self . string <EOL> if ss in Zn : <EOL> tz = ss <EOL> elif ns == <NUM_LIT:0> and ss == u'<STR_LIT:z>' : <EOL> tz = u'<STR_LIT>' <EOL> else : <EOL> dk = <NUM_LIT:0> <EOL> k += dk <EOL> t = t [ dk : ] <EOL> if len ( t ) > <NUM_LIT:0> and ellyChar . isLetterOrDigit ( t [ <NUM_LIT:0> ] ) : return False <EOL> for _ in range ( k ) : <EOL> ts . pop ( <NUM_LIT:0> ) <EOL> r = str ( self . _hr ) . zfill ( <NUM_LIT:2> ) + u'<STR_LIT::>' + self . _m + u'<STR_LIT::>' + self . _s + tz <EOL> rr = r [ : : - <NUM_LIT:1> ] <EOL> for c in rr : <EOL> ts . insert ( <NUM_LIT:0> , c ) <EOL> self . _rwl = len ( r ) <EOL> return True <EOL> def length ( self ) : <EOL> """<STR_LIT>""" <EOL> return self . _rwl <EOL> def _matchN ( self , ts ) : <EOL> """<STR_LIT>""" <EOL> self . _m = u'<STR_LIT>' <EOL> self . _s = u'<STR_LIT>' <EOL> k = <NUM_LIT:1> <EOL> if len ( ts ) < <NUM_LIT:3> : <EOL> return <NUM_LIT:0> <EOL> if ellyChar . isDigit ( ts [ k ] ) : <EOL> k += <NUM_LIT:1> <EOL> if ts [ k ] != '<STR_LIT::>' : <EOL> if k == <NUM_LIT:2> : <EOL> h = u'<STR_LIT>' . join ( ts [ : k ] ) <EOL> if h > '<STR_LIT>' : <EOL> return <NUM_LIT:0> <EOL> else : <EOL> h = ts [ <NUM_LIT:0> ] <EOL> if h == '<STR_LIT:0>' : <EOL> return <NUM_LIT:0> <EOL> m = self . _findAMorPM ( ts [ k : ] ) <EOL> if m == <NUM_LIT:0> : <EOL> return <NUM_LIT:0> <EOL> self . _hr = int ( h ) <EOL> return k + m <EOL> self . _hr = int ( u'<STR_LIT>' . join ( ts [ : k ] ) ) <EOL> if self . _hr >= <NUM_LIT> : return <NUM_LIT:0> <EOL> k += <NUM_LIT:1> <EOL> t = ts [ k : ] <EOL> lt = len ( t ) <EOL> if lt < <NUM_LIT:2> : return <NUM_LIT:0> <EOL> c = t [ <NUM_LIT:0> ] <EOL> d = t [ <NUM_LIT:1> ] <EOL> if not ellyChar . isDigit ( c ) or not ellyChar . isDigit ( d ) : return <NUM_LIT:0> <EOL> if c > '<STR_LIT:5>' : return <NUM_LIT:0> <EOL> self . _m = u'<STR_LIT>' . join ( t [ : <NUM_LIT:2> ] ) <EOL> t = t [ <NUM_LIT:2> : ] <EOL> lt -= <NUM_LIT:2> <EOL> k += <NUM_LIT:2> <EOL> if lt > <NUM_LIT:2> : <EOL> if t [ <NUM_LIT:0> ] == '<STR_LIT::>' : <EOL> c = t [ <NUM_LIT:1> ] <EOL> d = t [ <NUM_LIT:2> ] <EOL> if not ellyChar . isDigit ( c ) or not ellyChar . isDigit ( d ) : return <NUM_LIT:0> <EOL> if c > '<STR_LIT:5>' : return <NUM_LIT:0> <EOL> if lt > <NUM_LIT:3> and ellyChar . isDigit ( t [ <NUM_LIT:3> ] ) : return <NUM_LIT:0> <EOL> self . _s = u'<STR_LIT>' . join ( t [ <NUM_LIT:1> : <NUM_LIT:3> ] ) <EOL> t = t [ <NUM_LIT:3> : ] <EOL> lt -= <NUM_LIT:3> <EOL> k += <NUM_LIT:3> <EOL> if lt > <NUM_LIT:0> and ellyChar . isDigit ( t [ <NUM_LIT:0> ] ) : <EOL> return <NUM_LIT:0> <EOL> else : <EOL> return k <EOL> def _findAMorPM ( self , ts ) : <EOL> """<STR_LIT>""" <EOL> k = <NUM_LIT:0> <EOL> lt = len ( ts ) <EOL> if lt < <NUM_LIT:2> : <EOL> return <NUM_LIT:0> <EOL> elif ts [ k ] == '<STR_LIT:U+0020>' : <EOL> k += <NUM_LIT:1> <EOL> x = ts [ k ] . lower ( ) <EOL> if x != '<STR_LIT:a>' and x != '<STR_LIT:p>' : <EOL> return <NUM_LIT:0> <EOL> k += <NUM_LIT:1> <EOL> if lt == k : <EOL> return <NUM_LIT:0> <EOL> if ts [ k ] == '<STR_LIT:.>' : <EOL> k += <NUM_LIT:1> <EOL> if lt == k : <EOL> return <NUM_LIT:0> <EOL> y = ts [ k ] . lower ( ) <EOL> if y != '<STR_LIT:m>' : <EOL> return <NUM_LIT:0> <EOL> k += <NUM_LIT:1> <EOL> if lt == k or not ellyChar . isLetterOrDigit ( ts [ k ] ) : <EOL> self . _xm = x <EOL> return k <EOL> else : <EOL> return <NUM_LIT:0> <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> import sys <EOL> tdat = [ <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' , <EOL> u'<STR_LIT>' <EOL> ] <EOL> if len ( sys . argv ) > <NUM_LIT:1> : <EOL> sys . argv . pop ( <NUM_LIT:0> ) <EOL> for tme in sys . argv : <EOL> tdat . append ( tme . decode ( '<STR_LIT:utf8>' ) ) <EOL> te = TimeTransform ( ) <EOL> for xt in tdat : <EOL> tst = list ( xt ) <EOL> stat = te . rewrite ( tst ) <EOL> print xt , '<STR_LIT>' , u'<STR_LIT>' . join ( tst ) , '<STR_LIT:=>' , stat <EOL> print '<STR_LIT>' </s>
