|
2 | 2 |
|
3 | 3 | from typing import Dict
|
4 | 4 |
|
5 |
| -from .basetype import CWLBaseType, IntelligenceContext, Intelligence, MapSubjectPredicate, TypeCheck, Match |
| 5 | +from .basetype import (CWLBaseType, IntelligenceContext, Intelligence, IntelligenceNode, |
| 6 | + MapSubjectPredicate, TypeCheck, Match) |
6 | 7 | from .linkedfiletype import CWLLinkedFile
|
7 | 8 | from .linkedschemadeftype import CWLLinkedSchemaDef
|
8 | 9 | from .importincludetype import CWLImportInclude
|
|
23 | 24 | class CWLRecordType(CWLBaseType):
|
24 | 25 |
|
25 | 26 | def __init__(self, name: str, doc: str, fields: Dict[str, 'CWLFieldType']):
|
26 |
| - super().__init__(name) |
27 |
| - self.doc = doc |
| 27 | + super().__init__(name, doc=doc) |
28 | 28 | self.fields = fields
|
29 | 29 | self.required_fields = set((k for k, v in self.fields.items() if v.required))
|
30 | 30 | self.all_fields = set(self.fields.keys())
|
@@ -116,8 +116,15 @@ def parse(self,
|
116 | 116 | value_range = get_range_for_value(node, k)
|
117 | 117 |
|
118 | 118 | # key completer
|
| 119 | + _field = self.fields.get(k) |
| 120 | + _key_doc = (_field.doc or "") if _field is not None else "" |
| 121 | + _key_doc += "\n---\n## Sibling fields\n\n```" + \ |
| 122 | + "\n".join(f"- {k}" for k in self.fields.keys()) + \ |
| 123 | + "\n```\n" |
| 124 | + _key_doc += f"\n---\n## {self.name or '-'}\n\n" + (self.doc or "") |
119 | 125 | ln = LookupNode(loc=key_range)
|
120 |
| - ln.intelligence_node = self |
| 126 | + ln.intelligence_node = IntelligenceNode( |
| 127 | + completions=list(self.fields.keys()), doc=_key_doc) # self |
121 | 128 | code_intel.add_lookup_node(ln)
|
122 | 129 |
|
123 | 130 | # TODO: looks like this logic and the logic in lomtype can be combined
|
|
0 commit comments