Link: Port to null safety

Migrating all of GitJournal seems like quite a daunting task that will
take a long time.
This commit is contained in:
Vishesh Handa
2021-04-15 16:42:55 +02:00
parent d42fbcce41
commit 3c1f2fa6d2

View File

@ -1,25 +1,22 @@
// @dart=2.9
import 'package:markdown/markdown.dart' as md; import 'package:markdown/markdown.dart' as md;
import 'package:meta/meta.dart';
class Link { class Link {
String publicTerm = ""; String? publicTerm;
String filePath = ""; String? filePath;
String headingID = ""; String? headingID;
String alt = ""; String? alt;
String wikiTerm = ""; String? wikiTerm;
Link({ Link({
@required this.publicTerm, required this.publicTerm,
@required this.filePath, required this.filePath,
this.headingID = "", this.headingID,
this.alt = "", this.alt,
}); });
Link.wiki(this.wikiTerm); Link.wiki(this.wikiTerm);
bool get isWikiLink => wikiTerm.isNotEmpty; bool get isWikiLink => wikiTerm != null;
@override @override
int get hashCode => filePath.hashCode; int get hashCode => filePath.hashCode;
@ -37,9 +34,9 @@ class Link {
@override @override
String toString() { String toString() {
return wikiTerm.isNotEmpty return wikiTerm != null
? 'WikiLink($wikiTerm)' ? 'WikiLink($wikiTerm)'
: 'Link{publicTerm: $publicTerm, filePath: $filePath, headingID: $headingID}'; : 'Link{publicTerm: $publicTerm, filePath: $filePath, headingID: $headingID, alt: $alt}';
} }
} }
@ -67,11 +64,6 @@ class LinkExtractor implements md.NodeVisitor {
var term = el.attributes['term']; var term = el.attributes['term'];
var link = Link.wiki(term); var link = Link.wiki(term);
assert(link.filePath.isEmpty);
assert(link.publicTerm.isEmpty);
assert(link.alt.isEmpty);
assert(link.headingID.isEmpty);
links.add(link); links.add(link);
return; return;
} }
@ -80,11 +72,12 @@ class LinkExtractor implements md.NodeVisitor {
var title = _getText(el.children); var title = _getText(el.children);
var url = el.attributes['href']; var url = el.attributes['href'];
if (isExternalLink(url)) { if (url == null || isExternalLink(url)) {
return; return;
} }
if (url.startsWith('#') || url.startsWith('//')) { if (url.startsWith('#') || url.startsWith('//')) {
// FIXME: The heading ID seems incorrect
var link = Link( var link = Link(
publicTerm: title, publicTerm: title,
filePath: filePath, filePath: filePath,
@ -112,7 +105,7 @@ class LinkExtractor implements md.NodeVisitor {
return links; return links;
} }
String _getText(List<md.Node> nodes) { String _getText(List<md.Node>? nodes) {
if (nodes == null) { if (nodes == null) {
return ""; return "";
} }
@ -141,7 +134,7 @@ class WikiLinkSyntax extends md.InlineSyntax {
@override @override
bool onMatch(md.InlineParser parser, Match match) { bool onMatch(md.InlineParser parser, Match match) {
var term = match[1].trim(); var term = match[1]!.trim();
var displayText = term; var displayText = term;
if (term.contains('|')) { if (term.contains('|')) {