| 585 | return sorted(itertools.chain(self._superdir(), self.default_fields)) |
| 586 | |
| 587 | def __repr__(self): |
| 588 | # type: () -> str |
| 589 | s = "" |
| 590 | ct = conf.color_theme |
| 591 | for f in self.fields_desc: |
| 592 | if isinstance(f, ConditionalField) and not f._evalcond(self): |
| 593 | continue |
| 594 | if f.name in self.fields: |
| 595 | fval = self.fields[f.name] |
| 596 | if isinstance(fval, (list, dict, set)) and len(fval) == 0: |
| 597 | continue |
| 598 | val = f.i2repr(self, fval) |
| 599 | elif f.name in self.overloaded_fields: |
| 600 | fover = self.overloaded_fields[f.name] |
| 601 | if isinstance(fover, (list, dict, set)) and len(fover) == 0: |
| 602 | continue |
| 603 | val = f.i2repr(self, fover) |
| 604 | else: |
| 605 | continue |
| 606 | if isinstance(f, Emph) or f in conf.emph: |
| 607 | ncol = ct.emph_field_name |
| 608 | vcol = ct.emph_field_value |
| 609 | else: |
| 610 | ncol = ct.field_name |
| 611 | vcol = ct.field_value |
| 612 | |
| 613 | s += " %s%s%s" % (ncol(f.name), |
| 614 | ct.punct("="), |
| 615 | vcol(val)) |
| 616 | return "%s%s %s %s%s%s" % (ct.punct("<"), |
| 617 | ct.layer_name(self.__class__.__name__), |
| 618 | s, |
| 619 | ct.punct("|"), |
| 620 | repr(self.payload), |
| 621 | ct.punct(">")) |
| 622 | |
| 623 | def __str__(self): |
| 624 | # type: () -> str |