Move Link to its own file

This commit is contained in:
Vishesh Handa
2020-06-08 00:35:55 +02:00
parent a43498ef6d
commit 702366671a
2 changed files with 64 additions and 62 deletions

63
lib/core/link.dart Normal file
View File

@ -0,0 +1,63 @@
import 'package:meta/meta.dart';
import 'package:markdown/markdown.dart' as md;
class Link {
String term;
String filePath;
Link({@required this.term, @required this.filePath});
@override
int get hashCode => filePath.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Link &&
runtimeType == other.runtimeType &&
filePath == other.filePath;
@override
String toString() {
return 'Link{term: $term, filePath: $filePath}';
}
}
class LinkExtractor implements md.NodeVisitor {
List<Link> links = [];
@override
bool visitElementBefore(md.Element element) {
return true;
}
@override
void visitText(md.Text text) {}
@override
void visitElementAfter(md.Element el) {
final String tag = el.tag;
if (tag == 'a') {
var title = el.attributes['title'] ?? "";
if (title.isEmpty) {
for (var child in el.children) {
if (child is md.Text) {
title += child.text;
}
}
}
var url = el.attributes['href'];
var link = Link(term: title, filePath: url);
links.add(link);
}
}
List<Link> visit(List<md.Node> nodes) {
for (final node in nodes) {
node.accept(this);
}
return links;
}
}

View File

@ -10,11 +10,11 @@ import 'package:gitjournal/utils/logger.dart';
import 'package:gitjournal/utils/datetime.dart';
import 'package:path/path.dart' as p;
import 'package:meta/meta.dart';
import 'package:markdown/markdown.dart' as md;
import 'package:uuid/uuid.dart';
import 'link.dart';
import 'md_yaml_doc.dart';
import 'md_yaml_doc_codec.dart';
import 'note_serializer.dart';
@ -505,64 +505,3 @@ String buildTitleFileName(String parentDir, String title) {
}
}
}
class Link {
String term;
String filePath;
Link({@required this.term, @required this.filePath});
@override
int get hashCode => filePath.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is Note &&
runtimeType == other.runtimeType &&
filePath == other.filePath;
@override
String toString() {
return 'Link{term: $term, filePath: $filePath}';
}
}
class LinkExtractor implements md.NodeVisitor {
List<Link> links = [];
@override
bool visitElementBefore(md.Element element) {
return true;
}
@override
void visitText(md.Text text) {}
@override
void visitElementAfter(md.Element el) {
final String tag = el.tag;
if (tag == 'a') {
var title = el.attributes['title'] ?? "";
if (title.isEmpty) {
for (var child in el.children) {
if (child is md.Text) {
title += child.text;
}
}
}
var url = el.attributes['href'];
var link = Link(term: title, filePath: url);
links.add(link);
}
}
List<Link> visit(List<md.Node> nodes) {
for (final node in nodes) {
node.accept(this);
}
return links;
}
}