5
5
import 'package:analyzer/dart/ast/ast.dart' ;
6
6
import 'package:analyzer/dart/element/element.dart' ;
7
7
import 'package:analyzer/file_system/file_system.dart' ;
8
+ import 'package:dartdoc/src/comment_references/parser.dart' ;
8
9
import 'package:dartdoc/src/model_utils.dart' ;
9
10
11
+ abstract class ModelCommentReference {
12
+ String get codeRef;
13
+ Element get staticElement;
14
+
15
+ /// Construct a [ModelCommentReference] using the analyzer AST.
16
+ factory ModelCommentReference (
17
+ CommentReference ref, ResourceProvider resourceProvider) =>
18
+ _ModelCommentReferenceImpl (ref, resourceProvider);
19
+
20
+ /// Construct a [ModelCommentReference] given a raw string.
21
+ factory ModelCommentReference .synthetic (String codeRef, Element element) =>
22
+ _ModelCommentReferenceImpl .synthetic (codeRef, element);
23
+ }
24
+
10
25
/// A stripped down analyzer AST [CommentReference] containing only that
11
26
/// information needed for Dartdoc. Drops link to the [CommentReference]
12
27
/// and [ResourceProvider] after construction.
13
- class ModelCommentReference {
28
+ class _ModelCommentReferenceImpl implements ModelCommentReference {
29
+ @override
14
30
final String codeRef;
31
+ @override
15
32
final Element staticElement;
16
33
17
- ModelCommentReference (CommentReference ref, ResourceProvider resourceProvider)
34
+ _ModelCommentReferenceImpl (
35
+ CommentReference ref, ResourceProvider resourceProvider)
18
36
: codeRef = _referenceText (ref, resourceProvider),
19
37
staticElement = ref.identifier.staticElement;
20
38
39
+ _ModelCommentReferenceImpl .synthetic (this .codeRef, this .staticElement);
40
+
21
41
/// "Unparse" the code reference into the raw text associated with the
22
42
/// [CommentReference] .
23
43
static String _referenceText (
@@ -26,4 +46,6 @@ class ModelCommentReference {
26
46
(ref.root as CompilationUnit ).declaredElement, resourceProvider);
27
47
return contents.substring (ref.offset, ref.end);
28
48
}
49
+
50
+ List <CommentReferenceNode > parse () => CommentReferenceParser (codeRef).parse ();
29
51
}
0 commit comments