From 702366671a959e3d3f41f06e2add6897cea0629d Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Mon, 8 Jun 2020 00:35:55 +0200 Subject: [PATCH] Move Link to its own file --- lib/core/link.dart | 63 ++++++++++++++++++++++++++++++++++++++++++++++ lib/core/note.dart | 63 +--------------------------------------------- 2 files changed, 64 insertions(+), 62 deletions(-) create mode 100644 lib/core/link.dart 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; - } -}