@@ -230,38 +230,6 @@ MatchingLinkResult _getMatchingLinkElement(
230
230
return MatchingLinkResult (lookupResult);
231
231
}
232
232
233
- /// A link resolver which resolves [referenceText] as stemming from [element] .
234
- md.Node _makeLinkNode (String referenceText, Warnable element) {
235
- var result = getMatchingLinkElement (referenceText, element);
236
- var textContent = _htmlEscape.convert (referenceText);
237
- var linkedElement = result.commentReferable;
238
- if (linkedElement != null ) {
239
- if (linkedElement.href != null ) {
240
- var anchor = md.Element .text ('a' , textContent);
241
- if (linkedElement is ModelElement && linkedElement.isDeprecated) {
242
- anchor.attributes['class' ] = 'deprecated' ;
243
- }
244
- var href = linkedElement.href;
245
- if (href != null ) {
246
- anchor.attributes['href' ] = href;
247
- }
248
- return anchor;
249
- } else {
250
- // Otherwise this would be `linkedElement.linkedName`, but link bodies are
251
- // slightly different for doc references.
252
- return md.Element .text ('code' , textContent);
253
- }
254
- } else {
255
- // Avoid claiming documentation is inherited when it comes from the current
256
- // element.
257
- element.warn (PackageWarning .unresolvedDocReference,
258
- message: referenceText,
259
- referredFrom:
260
- element.documentationIsLocal ? [] : element.documentationFrom);
261
- return md.Element .text ('code' , textContent);
262
- }
263
- }
264
-
265
233
/// Creates a [MatchingLinkResult] for [referenceText] , the text of a doc
266
234
/// comment reference found in the doc comment attached to [element] .
267
235
@visibleForTesting
@@ -349,21 +317,30 @@ class MarkdownDocument extends md.Document {
349
317
/// Creates a document which resolves comment references as stemming from
350
318
/// [element] .
351
319
factory MarkdownDocument .withElementLinkResolver (Warnable element) {
352
- md.Node ? linkResolver (String name, [String ? _]) {
353
- if (name.isEmpty) {
354
- return null ;
355
- }
356
- return _makeLinkNode (name, element);
357
- }
358
-
359
- return MarkdownDocument (
320
+ return MarkdownDocument ._(
360
321
inlineSyntaxes: _markdownSyntaxes,
361
322
blockSyntaxes: _markdownBlockSyntaxes,
362
- linkResolver: linkResolver ,
323
+ linkResolver: ( String name, [ String ? _]) => _makeLinkNode (name, element) ,
363
324
);
364
325
}
365
326
327
+ @Deprecated ("MarkdownDocument's unnamed constructor is deprecated. Use "
328
+ '[MarkdownDocument.withElementLinkResolver]' )
366
329
MarkdownDocument ({
330
+ Iterable <md.BlockSyntax >? blockSyntaxes,
331
+ Iterable <md.InlineSyntax >? inlineSyntaxes,
332
+ md.ExtensionSet ? extensionSet,
333
+ md.Resolver ? linkResolver,
334
+ md.Resolver ? imageLinkResolver,
335
+ }) : this ._(
336
+ blockSyntaxes: blockSyntaxes,
337
+ inlineSyntaxes: inlineSyntaxes,
338
+ extensionSet: extensionSet,
339
+ linkResolver: linkResolver,
340
+ imageLinkResolver: imageLinkResolver,
341
+ );
342
+
343
+ MarkdownDocument ._({
367
344
super .blockSyntaxes,
368
345
super .inlineSyntaxes,
369
346
super .extensionSet,
@@ -405,6 +382,41 @@ class MarkdownDocument extends md.Document {
405
382
}
406
383
}
407
384
}
385
+
386
+ /// A link resolver which resolves [referenceText] as stemming from [element] .
387
+ static md.Node ? _makeLinkNode (String referenceText, Warnable element) {
388
+ if (referenceText.isEmpty) {
389
+ return null ;
390
+ }
391
+ var result = getMatchingLinkElement (referenceText, element);
392
+ var textContent = _htmlEscape.convert (referenceText);
393
+ var linkedElement = result.commentReferable;
394
+ if (linkedElement != null ) {
395
+ if (linkedElement.href != null ) {
396
+ var anchor = md.Element .text ('a' , textContent);
397
+ if (linkedElement is ModelElement && linkedElement.isDeprecated) {
398
+ anchor.attributes['class' ] = 'deprecated' ;
399
+ }
400
+ var href = linkedElement.href;
401
+ if (href != null ) {
402
+ anchor.attributes['href' ] = href;
403
+ }
404
+ return anchor;
405
+ } else {
406
+ // Otherwise this would be `linkedElement.linkedName`, but link bodies
407
+ // are slightly different for doc references.
408
+ return md.Element .text ('code' , textContent);
409
+ }
410
+ } else {
411
+ // Avoid claiming documentation is inherited when it comes from the
412
+ // current element.
413
+ element.warn (PackageWarning .unresolvedDocReference,
414
+ message: referenceText,
415
+ referredFrom:
416
+ element.documentationIsLocal ? [] : element.documentationFrom);
417
+ return md.Element .text ('code' , textContent);
418
+ }
419
+ }
408
420
}
409
421
410
422
class _InlineCodeSyntax extends md.InlineSyntax {
0 commit comments