| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 |
|
| 7 | |
| 8 | Data class to store a kernel-doc Item.
|
| 9 |
|
| 10 |
|
| 11 | class KdocItem:
|
| 12 | |
| 13 | A class that will, eventually, encapsulate all of the parsed data that we
|
| 14 | then pass into the output modules.
|
| 15 |
|
| 16 |
|
| 17 | def __init__(self, name, fname, type, start_line,
|
| 18 | **other_stuff):
|
| 19 | self.name = name
|
| 20 | self.fname = fname
|
| 21 | self.type = type
|
| 22 | self.declaration_start_line = start_line
|
| 23 | self.sections = {}
|
| 24 | self.sections_start_lines = {}
|
| 25 | self.parameterlist = []
|
| 26 | self.parameterdesc_start_lines = {}
|
| 27 | self.parameterdescs = {}
|
| 28 | self.parametertypes = {}
|
| 29 |
|
| 30 | self.warnings = []
|
| 31 |
|
| 32 | |
| 33 | |
| 34 | |
| 35 | |
| 36 | |
| 37 | known_keys = {
|
| 38 | 'declaration_start_line',
|
| 39 | 'sections',
|
| 40 | 'sections_start_lines',
|
| 41 | 'parameterlist',
|
| 42 | 'parameterdesc_start_lines',
|
| 43 | 'parameterdescs',
|
| 44 | 'parametertypes',
|
| 45 | 'warnings',
|
| 46 | }
|
| 47 |
|
| 48 | self.other_stuff = {}
|
| 49 | for k, v in other_stuff.items():
|
| 50 | if k in known_keys:
|
| 51 | setattr(self, k, v) |
| 52 | else:
|
| 53 | self.other_stuff[k] = v
|
| 54 |
|
| 55 | def get(self, key, default = None):
|
| 56 | |
| 57 | Get a value from optional keys.
|
| 58 |
|
| 59 | return self.other_stuff.get(key, default)
|
| 60 |
|
| 61 | def __getitem__(self, key):
|
| 62 | return self.get(key)
|
| 63 |
|
| 64 | def __repr__(self):
|
| 65 | return f"KdocItem({self.name}, {self.fname}, {self.type}, {self.declaration_start_line})"
|
| 66 |
|
| 67 | @classmethod
|
| 68 | def from_dict(cls, d):
|
| 69 |
|
| 70 |
|
| 71 | cp = d.copy()
|
| 72 | name = cp.pop('name', None)
|
| 73 | fname = cp.pop('fname', None)
|
| 74 | type = cp.pop('type', None)
|
| 75 | start_line = cp.pop('start_line', 1)
|
| 76 | other_stuff = cp.pop('other_stuff', {})
|
| 77 |
|
| 78 | |
| 79 | return cls(name, fname, type, start_line, **cp, **other_stuff)
|
| 80 |
|
| 81 | |
| 82 | |
| 83 | |
| 84 | def set_sections(self, sections, start_lines):
|
| 85 | |
| 86 | Set sections and start lines.
|
| 87 |
|
| 88 | self.sections = sections
|
| 89 | self.sections_start_lines = start_lines
|
| 90 |
|
| 91 | def set_params(self, names, descs, types, starts):
|
| 92 | |
| 93 | Set parameter list: names, descriptions, types and start lines.
|
| 94 |
|
| 95 | self.parameterlist = names
|
| 96 | self.parameterdescs = descs
|
| 97 | self.parametertypes = types
|
| 98 | self.parameterdesc_start_lines = starts
|