diff --git a/lib/core/link.dart b/lib/core/link.dart
new file mode 100644
index 00000000..36232599
--- /dev/null
+++ b/lib/core/link.dart
@@ -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 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 visit(List nodes) {
+ for (final node in nodes) {
+ node.accept(this);
+ }
+ return links;
+ }
+}
diff --git a/lib/core/note.dart b/lib/core/note.dart
index 71766b72..6ebf5bc6 100644
--- a/lib/core/note.dart
+++ b/lib/core/note.dart
@@ -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 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 visit(List nodes) {
- for (final node in nodes) {
- node.accept(this);
- }
- return links;
- }
-}