55import 'package:analyzer/dart/ast/ast.dart' ;
66import 'package:analyzer/dart/element/element.dart' ;
77import 'package:analyzer/file_system/file_system.dart' ;
8+ import 'package:dartdoc/src/comment_references/parser.dart' ;
89import 'package:dartdoc/src/model_utils.dart' ;
910
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+
1025/// A stripped down analyzer AST [CommentReference] containing only that
1126/// information needed for Dartdoc. Drops link to the [CommentReference]
1227/// and [ResourceProvider] after construction.
13- class ModelCommentReference {
28+ class _ModelCommentReferenceImpl implements ModelCommentReference {
29+ @override
1430 final String codeRef;
31+ @override
1532 final Element staticElement;
1633
17- ModelCommentReference (CommentReference ref, ResourceProvider resourceProvider)
34+ _ModelCommentReferenceImpl (
35+ CommentReference ref, ResourceProvider resourceProvider)
1836 : codeRef = _referenceText (ref, resourceProvider),
1937 staticElement = ref.identifier.staticElement;
2038
39+ _ModelCommentReferenceImpl .synthetic (this .codeRef, this .staticElement);
40+
2141 /// "Unparse" the code reference into the raw text associated with the
2242 /// [CommentReference] .
2343 static String _referenceText (
@@ -26,4 +46,6 @@ class ModelCommentReference {
2646 (ref.root as CompilationUnit ).declaredElement, resourceProvider);
2747 return contents.substring (ref.offset, ref.end);
2848 }
49+
50+ List <CommentReferenceNode > parse () => CommentReferenceParser (codeRef).parse ();
2951}
0 commit comments