Skip to content

Commit cd0ed9c

Browse files
committed
content [nfc]: Use toDiagnosticsNode(name: ...)
This produces slightly nicer output, by indicating the index for each item. For example, after introducing an error in one test, the expected and actual values it prints look like this: Actual: <ZulipContent └─ListNode │ unordered │ ├─item 0: BlockContentNode list │ └─ParagraphNode │ │ was implicit │ │ │ └─TextNode │ "something" │ └─item 1: BlockContentNode list └─ParagraphNode │ was implicit │ └─TextNode "another"> instead of like this: Actual: <ZulipContent └─ListNode │ unordered │ ├─list item │ └─ParagraphNode │ │ was implicit │ │ │ └─TextNode │ "something" │ └─list item └─ParagraphNode │ was implicit │ └─TextNode "another"> This also means less code as we start adding more nodes that have this kind of structure; it avoids having to make a new subclass of DiagnosticableTree for each one.
1 parent f1f111a commit cd0ed9c

File tree

1 file changed

+19
-45
lines changed

1 file changed

+19
-45
lines changed

lib/model/content.dart

Lines changed: 19 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:collection/collection.dart';
12
import 'package:flutter/foundation.dart';
23
import 'package:html/dom.dart' as dom;
34
import 'package:html/parser.dart';
@@ -113,6 +114,20 @@ class UnimplementedBlockContentNode extends BlockContentNode
113114
// No ==/hashCode, because htmlNode is a whole subtree.
114115
}
115116

117+
class _BlockContentListNode extends DiagnosticableTree {
118+
const _BlockContentListNode(this.nodes);
119+
120+
final List<BlockContentNode> nodes;
121+
122+
@override
123+
String toStringShort() => 'BlockContentNode list';
124+
125+
@override
126+
List<DiagnosticsNode> debugDescribeChildren() {
127+
return nodes.map((node) => node.toDiagnosticsNode()).toList();
128+
}
129+
}
130+
116131
/// A block content node whose children are inline content nodes.
117132
///
118133
/// A node of this type expects a block layout context from its parent,
@@ -226,25 +241,12 @@ class ListNode extends BlockContentNode {
226241
@override
227242
List<DiagnosticsNode> debugDescribeChildren() {
228243
return items
229-
.map((nodes) => _ListItemDiagnosticableNode(nodes).toDiagnosticsNode())
244+
.mapIndexed((i, nodes) =>
245+
_BlockContentListNode(nodes).toDiagnosticsNode(name: 'item $i'))
230246
.toList();
231247
}
232248
}
233249

234-
class _ListItemDiagnosticableNode extends DiagnosticableTree {
235-
_ListItemDiagnosticableNode(this.nodes);
236-
237-
final List<BlockContentNode> nodes;
238-
239-
@override
240-
String toStringShort() => 'list item';
241-
242-
@override
243-
List<DiagnosticsNode> debugDescribeChildren() {
244-
return nodes.map((node) => node.toDiagnosticsNode()).toList();
245-
}
246-
}
247-
248250
class QuotationNode extends BlockContentNode {
249251
const QuotationNode(this.nodes, {super.debugHtmlNode});
250252

@@ -265,40 +267,12 @@ class SpoilerNode extends BlockContentNode {
265267
@override
266268
List<DiagnosticsNode> debugDescribeChildren() {
267269
return [
268-
_SpoilerHeaderDiagnosticableNode(header).toDiagnosticsNode(),
269-
_SpoilerContentDiagnosticableNode(content).toDiagnosticsNode(),
270+
_BlockContentListNode(header).toDiagnosticsNode(name: 'header'),
271+
_BlockContentListNode(content).toDiagnosticsNode(name: 'content'),
270272
];
271273
}
272274
}
273275

274-
class _SpoilerHeaderDiagnosticableNode extends DiagnosticableTree {
275-
_SpoilerHeaderDiagnosticableNode(this.nodes);
276-
277-
final List<BlockContentNode> nodes;
278-
279-
@override
280-
String toStringShort() => 'spoiler header';
281-
282-
@override
283-
List<DiagnosticsNode> debugDescribeChildren() {
284-
return nodes.map((node) => node.toDiagnosticsNode()).toList();
285-
}
286-
}
287-
288-
class _SpoilerContentDiagnosticableNode extends DiagnosticableTree {
289-
_SpoilerContentDiagnosticableNode(this.nodes);
290-
291-
final List<BlockContentNode> nodes;
292-
293-
@override
294-
String toStringShort() => 'spoiler content';
295-
296-
@override
297-
List<DiagnosticsNode> debugDescribeChildren() {
298-
return nodes.map((node) => node.toDiagnosticsNode()).toList();
299-
}
300-
}
301-
302276
class CodeBlockNode extends BlockContentNode {
303277
const CodeBlockNode(this.spans, {super.debugHtmlNode});
304278

0 commit comments

Comments
 (0)