| 236 | # TODO: add constructor that takes dongle_id, time_str, segment_num and then create instances |
| 237 | # of this class instead of manually constructing a segment name (use canonical_name prop instead) |
| 238 | def __init__(self, name_str: str, allow_route_name=False): |
| 239 | data_dir_path_separator_index = name_str.rsplit("|", 1)[0].rfind("/") |
| 240 | use_data_dir = (data_dir_path_separator_index != -1) and ("|" in name_str) |
| 241 | self._name_str = name_str[data_dir_path_separator_index + 1:] if use_data_dir else name_str |
| 242 | self._data_dir = name_str[:data_dir_path_separator_index] if use_data_dir else None |
| 243 | |
| 244 | seg_num_delim = "--" if self._name_str.count("--") == 2 else "/" |
| 245 | name_parts = self._name_str.rsplit(seg_num_delim, 1) |
| 246 | if allow_route_name and len(name_parts) == 1: |
| 247 | name_parts.append("-1") # no segment number |
| 248 | self._route_name = RouteName(name_parts[0]) |
| 249 | self._num = int(name_parts[1]) |
| 250 | self._canonical_name = f"{self._route_name._dongle_id}|{self._route_name._time_str}--{self._num}" |
| 251 | |
| 252 | @property |
| 253 | def canonical_name(self) -> str: return self._canonical_name |