| 54 | self.join = self.sep.join |
| 55 | |
| 56 | def parse_parts(self, parts): |
| 57 | parsed = [] |
| 58 | sep = self.sep |
| 59 | altsep = self.altsep |
| 60 | drv = root = '' |
| 61 | it = reversed(parts) |
| 62 | for part in it: |
| 63 | if not part: |
| 64 | continue |
| 65 | if altsep: |
| 66 | part = part.replace(altsep, sep) |
| 67 | drv, root, rel = self.splitroot(part) |
| 68 | if sep in rel: |
| 69 | for x in reversed(rel.split(sep)): |
| 70 | if x and x != '.': |
| 71 | parsed.append(sys.intern(x)) |
| 72 | else: |
| 73 | if rel and rel != '.': |
| 74 | parsed.append(sys.intern(rel)) |
| 75 | if drv or root: |
| 76 | if not drv: |
| 77 | # If no drive is present, try to find one in the previous |
| 78 | # parts. This makes the result of parsing e.g. |
| 79 | # ("C:", "/", "a") reasonably intuitive. |
| 80 | for part in it: |
| 81 | if not part: |
| 82 | continue |
| 83 | if altsep: |
| 84 | part = part.replace(altsep, sep) |
| 85 | drv = self.splitroot(part)[0] |
| 86 | if drv: |
| 87 | break |
| 88 | break |
| 89 | if drv or root: |
| 90 | parsed.append(drv + root) |
| 91 | parsed.reverse() |
| 92 | return drv, root, parsed |
| 93 | |
| 94 | def join_parsed_parts(self, drv, root, parts, drv2, root2, parts2): |
| 95 | """ |