34 LINK_ID_PATTERN_CORE = r'[0-9a-z](?:[0-9a-z]|_[0-9a-z])*' |
34 LINK_ID_PATTERN_CORE = r'[0-9a-z](?:[0-9a-z]|_[0-9a-z])*' |
35 LINK_ID_ARG_PATTERN = r'(?P<link_id>%s)' % LINK_ID_PATTERN_CORE |
35 LINK_ID_ARG_PATTERN = r'(?P<link_id>%s)' % LINK_ID_PATTERN_CORE |
36 LINK_ID_PATTERN = r'^%s$' % LINK_ID_PATTERN_CORE |
36 LINK_ID_PATTERN = r'^%s$' % LINK_ID_PATTERN_CORE |
37 LINK_ID_REGEX = re.compile(LINK_ID_PATTERN) |
37 LINK_ID_REGEX = re.compile(LINK_ID_PATTERN) |
38 |
38 |
39 # partial path is multiple link_id chunks, |
39 # scope path is multiple link_id chunks, |
40 # each separated by a trailing / |
40 # each separated by a trailing / |
41 # (at least 1) |
41 # (at least 1) |
42 PARTIAL_PATH_ARG_PATTERN = (r'(?P<partial_path>%(link_id)s' |
42 SCOPE_PATH_ARG_PATTERN = (r'(?P<scope_path>%(link_id)s' |
43 '(?:/%(link_id)s)*)' % { |
43 '(?:/%(link_id)s)*)' % { |
44 'link_id': LINK_ID_PATTERN_CORE}) |
44 'link_id': LINK_ID_PATTERN_CORE}) |
45 PARTIAL_PATH_PATTERN = r'^%s$' % PARTIAL_PATH_ARG_PATTERN |
45 SCOPE_PATH_PATTERN = r'^%s$' % SCOPE_PATH_ARG_PATTERN |
46 PARTIAL_PATH_REGEX = re.compile(PARTIAL_PATH_PATTERN) |
46 SCOPE_PATH_REGEX = re.compile(SCOPE_PATH_PATTERN) |
47 |
47 |
48 # path is multiple link_id chunks, |
48 # path is multiple link_id chunks, |
49 # each separated by a trailing / |
49 # each separated by a trailing / |
50 # (at least 1) |
50 # (at least 1) |
51 # followed by a single link_id with no trailing / |
51 # followed by a single link_id with no trailing / |
52 PATH_LINK_ID_ARGS_PATTERN = ( |
52 PATH_LINK_ID_ARGS_PATTERN = ( |
53 r'%(partial_path)s/' |
53 r'%(scope_path)s/' |
54 '(?P<link_id>%(link_id)s)' % { |
54 '(?P<link_id>%(link_id)s)' % { |
55 'partial_path' : PARTIAL_PATH_ARG_PATTERN, |
55 'scope_path' : SCOPE_PATH_ARG_PATTERN, |
56 'link_id': LINK_ID_PATTERN_CORE}) |
56 'link_id': LINK_ID_PATTERN_CORE}) |
57 PATH_LINK_ID_PATTERN = r'^%s$' % PATH_LINK_ID_ARGS_PATTERN |
57 PATH_LINK_ID_PATTERN = r'^%s$' % PATH_LINK_ID_ARGS_PATTERN |
58 PATH_LINK_ID_REGEX = re.compile(PATH_LINK_ID_PATTERN) |
58 PATH_LINK_ID_REGEX = re.compile(PATH_LINK_ID_PATTERN) |
59 |
59 |
60 |
60 |
61 def getPartsFromPath(path): |
61 def getPartsFromPath(path): |
62 """Splits path string into partial_path and link_id. |
62 """Splits path string into scope_path and link_id. |
63 |
63 |
64 Returns: |
64 Returns: |
65 {'partial_path': 'everything/but', |
65 {'scope_path': 'everything/but', |
66 'link_id': 'link_id'} |
66 'link_id': 'link_id'} |
67 or {} (empty dict) if string did not match PATH_LINK_ID_PATTERN. |
67 or {} (empty dict) if string did not match PATH_LINK_ID_PATTERN. |
68 """ |
68 """ |
69 path_link_name_match = PATH_LINK_ID_REGEX.match(path) |
69 path_link_name_match = PATH_LINK_ID_REGEX.match(path) |
70 |
70 |