Преглед на файлове

feat: remove the codec code from main project

Lucas.Xu преди 2 години
родител
ревизия
76d1267aa5

+ 0 - 29
frontend/app_flowy/lib/workspace/application/markdown/document_markdown.dart

@@ -1,29 +0,0 @@
-library delta_markdown;
-
-import 'dart:convert';
-
-import 'package:appflowy_editor/appflowy_editor.dart' show Document;
-import 'package:app_flowy/workspace/application/markdown/src/parser/markdown_encoder.dart';
-
-/// Codec used to convert between Markdown and AppFlowy Editor Document.
-const AppFlowyEditorMarkdownCodec _kCodec = AppFlowyEditorMarkdownCodec();
-
-Document markdownToDocument(String markdown) {
-  return _kCodec.decode(markdown);
-}
-
-String documentToMarkdown(Document document) {
-  return _kCodec.encode(document);
-}
-
-class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
-  const AppFlowyEditorMarkdownCodec();
-
-  @override
-  Converter<String, Document> get decoder => throw UnimplementedError();
-
-  @override
-  Converter<Document, String> get encoder {
-    return AppFlowyEditorMarkdownEncoder();
-  }
-}

+ 0 - 14
frontend/app_flowy/lib/workspace/application/markdown/src/parser/image_node_parser.dart

@@ -1,14 +0,0 @@
-import 'package:app_flowy/workspace/application/markdown/src/parser/node_parser.dart';
-import 'package:appflowy_editor/appflowy_editor.dart';
-
-class ImageNodeParser extends NodeParser {
-  const ImageNodeParser();
-
-  @override
-  String get id => 'image';
-
-  @override
-  String transform(Node node) {
-    return '![](${node.attributes['image_src']})';
-  }
-}

+ 0 - 39
frontend/app_flowy/lib/workspace/application/markdown/src/parser/markdown_encoder.dart

@@ -1,39 +0,0 @@
-import 'dart:convert';
-
-import 'package:app_flowy/workspace/application/markdown/src/parser/image_node_parser.dart';
-import 'package:app_flowy/workspace/application/markdown/src/parser/node_parser.dart';
-import 'package:app_flowy/workspace/application/markdown/src/parser/text_node_parser.dart';
-import 'package:appflowy_editor/appflowy_editor.dart';
-
-class AppFlowyEditorMarkdownEncoder extends Converter<Document, String> {
-  AppFlowyEditorMarkdownEncoder({
-    this.parsers = const [
-      TextNodeParser(),
-      ImageNodeParser(),
-    ],
-  });
-
-  final List<NodeParser> parsers;
-
-  @override
-  String convert(Document input) {
-    final buffer = StringBuffer();
-    for (final node in input.root.children) {
-      NodeParser? parser =
-          parsers.firstWhereOrNull((element) => element.id == node.type);
-      if (parser != null) {
-        buffer.write(parser.transform(node));
-      }
-    }
-    return buffer.toString();
-  }
-}
-
-extension IterableExtension<T> on Iterable<T> {
-  T? firstWhereOrNull(bool Function(T element) test) {
-    for (var element in this) {
-      if (test(element)) return element;
-    }
-    return null;
-  }
-}

+ 0 - 8
frontend/app_flowy/lib/workspace/application/markdown/src/parser/node_parser.dart

@@ -1,8 +0,0 @@
-import 'package:appflowy_editor/appflowy_editor.dart';
-
-abstract class NodeParser {
-  const NodeParser();
-
-  String get id;
-  String transform(Node node);
-}

+ 0 - 68
frontend/app_flowy/lib/workspace/application/markdown/src/parser/text_node_parser.dart

@@ -1,68 +0,0 @@
-import 'dart:convert';
-
-import 'package:app_flowy/workspace/application/markdown/delta_markdown.dart';
-import 'package:app_flowy/workspace/application/markdown/src/parser/node_parser.dart';
-import 'package:appflowy_editor/appflowy_editor.dart';
-
-class TextNodeParser extends NodeParser {
-  const TextNodeParser();
-
-  @override
-  String get id => 'text';
-
-  @override
-  String transform(Node node) {
-    assert(node is TextNode);
-    final textNode = node as TextNode;
-    final delta = jsonEncode(
-      textNode.delta
-        ..add(TextInsert('\n'))
-        ..toJson(),
-    );
-    final markdown = deltaToMarkdown(delta);
-    final attributes = textNode.attributes;
-    var result = markdown;
-    var suffix = '';
-    if (attributes.isNotEmpty &&
-        attributes.containsKey(BuiltInAttributeKey.subtype)) {
-      final subtype = attributes[BuiltInAttributeKey.subtype];
-      if (node.next?.subtype != subtype) {
-        suffix = '\n';
-      }
-      if (subtype == 'heading') {
-        final heading = attributes[BuiltInAttributeKey.heading];
-        if (heading == 'h1') {
-          result = '# $markdown';
-        } else if (heading == 'h2') {
-          result = '## $markdown';
-        } else if (heading == 'h3') {
-          result = '### $markdown';
-        } else if (heading == 'h4') {
-          result = '#### $markdown';
-        } else if (heading == 'h5') {
-          result = '##### $markdown';
-        } else if (heading == 'h6') {
-          result = '###### $markdown';
-        }
-      } else if (subtype == 'quote') {
-        result = '> $markdown';
-      } else if (subtype == 'code') {
-        result = '`$markdown`';
-      } else if (subtype == 'code-block') {
-        result = '```\n$markdown\n```';
-      } else if (subtype == 'bulleted-list') {
-        result = '- $markdown';
-      } else if (subtype == 'number-list') {
-        final number = attributes['number'];
-        result = '$number. $markdown';
-      } else if (subtype == 'checkbox') {
-        if (attributes[BuiltInAttributeKey.checkbox] == true) {
-          result = '- [x] $markdown';
-        } else {
-          result = '- [ ] $markdown';
-        }
-      }
-    }
-    return '$result$suffix';
-  }
-}

+ 3 - 4
frontend/app_flowy/packages/appflowy_editor/lib/src/plugins/markdown/document_markdown.dart

@@ -3,6 +3,7 @@ library delta_markdown;
 import 'dart:convert';
 import 'dart:convert';
 
 
 import 'package:appflowy_editor/src/core/document/document.dart';
 import 'package:appflowy_editor/src/core/document/document.dart';
+import 'package:appflowy_editor/src/plugins/markdown/decoder/document_markdown_decoder.dart';
 import 'package:appflowy_editor/src/plugins/markdown/encoder/document_markdown_encoder.dart';
 import 'package:appflowy_editor/src/plugins/markdown/encoder/document_markdown_encoder.dart';
 
 
 /// Codec used to convert between Markdown and AppFlowy Editor Document.
 /// Codec used to convert between Markdown and AppFlowy Editor Document.
@@ -20,10 +21,8 @@ class AppFlowyEditorMarkdownCodec extends Codec<Document, String> {
   const AppFlowyEditorMarkdownCodec();
   const AppFlowyEditorMarkdownCodec();
 
 
   @override
   @override
-  Converter<String, Document> get decoder => throw UnimplementedError();
+  Converter<String, Document> get decoder => DocumentMarkdownDecoder();
 
 
   @override
   @override
-  Converter<Document, String> get encoder {
-    return DocumentMarkdownEncoder();
-  }
+  Converter<Document, String> get encoder => DocumentMarkdownEncoder();
 }
 }