mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-26 16:46:51 +08:00
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:
@ -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('|')) {
|
||||||
|
Reference in New Issue
Block a user