Skip to content

Commit d7513b2

Browse files
authored
Make MarkdownDocument unnamed constructor to be private (#3098)
1 parent e476b1a commit d7513b2

File tree

1 file changed

+53
-41
lines changed

1 file changed

+53
-41
lines changed

lib/src/markdown_processor.dart

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -230,38 +230,6 @@ MatchingLinkResult _getMatchingLinkElement(
230230
return MatchingLinkResult(lookupResult);
231231
}
232232

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-
265233
/// Creates a [MatchingLinkResult] for [referenceText], the text of a doc
266234
/// comment reference found in the doc comment attached to [element].
267235
@visibleForTesting
@@ -349,21 +317,30 @@ class MarkdownDocument extends md.Document {
349317
/// Creates a document which resolves comment references as stemming from
350318
/// [element].
351319
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._(
360321
inlineSyntaxes: _markdownSyntaxes,
361322
blockSyntaxes: _markdownBlockSyntaxes,
362-
linkResolver: linkResolver,
323+
linkResolver: (String name, [String? _]) => _makeLinkNode(name, element),
363324
);
364325
}
365326

327+
@Deprecated("MarkdownDocument's unnamed constructor is deprecated. Use "
328+
'[MarkdownDocument.withElementLinkResolver]')
366329
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._({
367344
super.blockSyntaxes,
368345
super.inlineSyntaxes,
369346
super.extensionSet,
@@ -405,6 +382,41 @@ class MarkdownDocument extends md.Document {
405382
}
406383
}
407384
}
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+
}
408420
}
409421

410422
class _InlineCodeSyntax extends md.InlineSyntax {

0 commit comments

Comments
 (0)