(self, kv_node, sep, line_number, indent)
| 666 | self.write(")") |
| 667 | |
| 668 | def kv_map(self, kv_node, sep, line_number, indent): |
| 669 | first_time = True |
| 670 | for kv in kv_node: |
| 671 | assert kv in ("kv", "kv2", "kv3") |
| 672 | |
| 673 | # kv ::= DUP_TOP expr ROT_TWO expr STORE_SUBSCR |
| 674 | # kv2 ::= DUP_TOP expr expr ROT_THREE STORE_SUBSCR |
| 675 | # kv3 ::= expr expr STORE_MAP |
| 676 | |
| 677 | # FIXME: DRY this and the above |
| 678 | if kv == "kv": |
| 679 | self.write(sep) |
| 680 | name = self.traverse(kv[-2], indent="") |
| 681 | if first_time: |
| 682 | line_number = self.indent_if_source_nl(line_number, indent) |
| 683 | first_time = False |
| 684 | pass |
| 685 | line_number = self.line_number |
| 686 | self.write(name, ": ") |
| 687 | value = self.traverse(kv[1], indent=self.indent + (len(name) + 2) * " ") |
| 688 | elif kv == "kv2": |
| 689 | self.write(sep) |
| 690 | name = self.traverse(kv[1], indent="") |
| 691 | if first_time: |
| 692 | line_number = self.indent_if_source_nl(line_number, indent) |
| 693 | first_time = False |
| 694 | pass |
| 695 | line_number = self.line_number |
| 696 | self.write(name, ": ") |
| 697 | value = self.traverse( |
| 698 | kv[-3], indent=self.indent + (len(name) + 2) * " " |
| 699 | ) |
| 700 | elif kv == "kv3": |
| 701 | self.write(sep) |
| 702 | name = self.traverse(kv[-2], indent="") |
| 703 | if first_time: |
| 704 | line_number = self.indent_if_source_nl(line_number, indent) |
| 705 | first_time = False |
| 706 | pass |
| 707 | line_number = self.line_number |
| 708 | self.write(name, ": ") |
| 709 | line_number = self.line_number |
| 710 | value = self.traverse(kv[0], indent=self.indent + (len(name) + 2) * " ") |
| 711 | pass |
| 712 | self.write(value) |
| 713 | sep = ", " |
| 714 | if line_number != self.line_number: |
| 715 | sep += "\n" + self.indent + " " |
| 716 | line_number = self.line_number |
| 717 | pass |
| 718 | pass |
| 719 | |
| 720 | def template_engine(self, entry, startnode): |
| 721 | """The format template interpretation engine. See the comment at the |
no test coverage detected