| 74 | self.render() |
| 75 | |
| 76 | def render(self): |
| 77 | parts, remaining = self.master.commands.parse_partial(self.text) |
| 78 | ret = [] |
| 79 | if not parts: |
| 80 | # Means we just received the leader, so we need to give a blank |
| 81 | # text to the widget to render or it crashes |
| 82 | ret.append(("text", "")) |
| 83 | else: |
| 84 | for p in parts: |
| 85 | if p.valid: |
| 86 | if p.type == mitmproxy.types.Cmd: |
| 87 | ret.append(("commander_command", p.value)) |
| 88 | else: |
| 89 | ret.append(("text", p.value)) |
| 90 | elif p.value: |
| 91 | ret.append(("commander_invalid", p.value)) |
| 92 | |
| 93 | if remaining: |
| 94 | if parts[-1].type != mitmproxy.types.Space: |
| 95 | ret.append(("text", " ")) |
| 96 | for param in remaining: |
| 97 | ret.append(("commander_hint", f"{param} ")) |
| 98 | |
| 99 | return ret |
| 100 | |
| 101 | def left(self) -> None: |
| 102 | self.cursor = self.cursor - 1 |