mò Dã¸Ec@s€dZdkZdkZdklZlZdfd„ƒYZdkZdZei deƒZ ei deefƒZ [dS(sConfiguration parser.N(sisnames substitutet ZConfigParsercBsŒtZeZdZdd„Zd „Zd „Zd „Z d „Z d „Z d„Z d„Z d„Zd„Zd„Zd„Zd„ZRS(NtresourcetcontexttlinenotstacktdefinestfileturlcCs`||_||_|i|_|i|_d|_g|_|djo h}n||_dS(Ni( RtselfRRRRRRtNone(RRRR((t0/data/zmath/zope/lib/python/ZConfig/cfgparser.pyt__init__s        cCsG|iiƒ}|o#|id7_t|iƒfSn tdfSdS(Ni( RRtreadlinetlineRtFalsetstriptTrueR (RR ((R tnextline&s cCs@|iƒ\}}x |p|d djonÚ|d djo?|ddjo|idƒn|i||dd!ƒ}nŠ|d d jo?|ddjo|id ƒn|i||dd!ƒ}n:|d d jo|i||dƒn|i ||ƒ|iƒ\}}qW|i o|id ƒndS(Nitt#issmalformed section endit—scCs²|iddƒ}|i|dƒ}d}t|ƒdjo|d}n|i i |ƒo|i d| ƒnt |ƒp|i d| ƒn|i |ƒ|i |R?R8RR*(((R Rs          s[^\s()]+s"(?P%s)\s*(?P[^\s].*)?$s!(?P%s)(?:\s+(?P%s))?$( t__doc__R-t ZConfig.urltZConfig.substitutionRMRNRtret_name_retcompileR7R&(R&RMR[RNR7RR-R\((R t?s  ¡