Hacked By AnonymousFox
�
^
bc @ sV d Z d d l Z d g Z e j d � Z d � Z d � Z e d k rR e � n d S( s%
Generic framework path manipulation
i����Nt framework_infos� (?x)
(?P<location>^.*)(?:^|/)
(?P<name>
(?P<shortname>\w+).framework/
(?:Versions/(?P<version>[^/]+)/)?
(?P=shortname)
(?:_(?P<suffix>[^_]+))?
)$
c C s# t j | � } | s d S| j � S( s}
A framework name can take one of the following four forms:
Location/Name.framework/Versions/SomeVersion/Name_Suffix
Location/Name.framework/Versions/SomeVersion/Name
Location/Name.framework/Name_Suffix
Location/Name.framework/Name
returns None if not found, or a mapping equivalent to:
dict(
location='Location',
name='Name.framework/Versions/SomeVersion/Name_Suffix',
shortname='Name',
version='SomeVersion',
suffix='Suffix',
)
Note that SomeVersion and Suffix are optional and may be None
if not present
N( t STRICT_FRAMEWORK_REt matcht Nonet groupdict( t filenamet is_framework( ( s>