refactor: remove named parameters

This commit is contained in:
Vincent Chan 2022-08-01 12:58:32 +08:00
parent 5e86b83eee
commit 46dba122bd
3 changed files with 79 additions and 68 deletions

View File

@ -5,15 +5,19 @@ abstract class Operation {
factory Operation.fromJson(Map<String, dynamic> map) {
String t = map["type"] as String;
if (t == "insert-operation") {
final path = map["path"] as List<int>;
final value = Node.fromJson(map["value"]);
return InsertOperation(path: path, value: value);
return InsertOperation.fromJson(map);
} else if (t == "update-operation") {
return UpdateOperation.fromJson(map);
} else if (t == "delete-operation") {
return DeleteOperation.fromJson(map);
} else if (t == "text-edit-operation") {
return TextEditOperation.fromJson(map);
}
throw ArgumentError('unexpected type $t');
}
final Path path;
Operation({required this.path});
Operation(this.path);
Operation copyWithPath(Path path);
Operation invert();
Map<String, dynamic> toJson();
@ -22,13 +26,16 @@ abstract class Operation {
class InsertOperation extends Operation {
final Node value;
InsertOperation({
required super.path,
required this.value,
});
factory InsertOperation.fromJson(Map<String, dynamic> map) {
final path = map["path"] as List<int>;
final value = Node.fromJson(map["value"]);
return InsertOperation(path, value);
}
InsertOperation(Path path, this.value) : super(path);
InsertOperation copyWith({Path? path, Node? value}) =>
InsertOperation(path: path ?? this.path, value: value ?? this.value);
InsertOperation(path ?? this.path, value ?? this.value);
@override
Operation copyWithPath(Path path) => copyWith(path: path);
@ -36,8 +43,8 @@ class InsertOperation extends Operation {
@override
Operation invert() {
return DeleteOperation(
path: path,
removedValue: value,
path,
value,
);
}
@ -55,18 +62,23 @@ class UpdateOperation extends Operation {
final Attributes attributes;
final Attributes oldAttributes;
UpdateOperation({
required super.path,
required this.attributes,
required this.oldAttributes,
});
factory UpdateOperation.fromJson(Map<String, dynamic> map) {
final path = map["path"] as List<int>;
final attributes = map["attributes"] as Map<String, dynamic>;
final oldAttributes = map["oldAttributes"] as Map<String, dynamic>;
return UpdateOperation(path, attributes, oldAttributes);
}
UpdateOperation(
Path path,
this.attributes,
this.oldAttributes,
) : super(path);
UpdateOperation copyWith(
{Path? path, Attributes? attributes, Attributes? oldAttributes}) =>
UpdateOperation(
path: path ?? this.path,
attributes: attributes ?? this.attributes,
oldAttributes: oldAttributes ?? this.oldAttributes);
UpdateOperation(path ?? this.path, attributes ?? this.attributes,
oldAttributes ?? this.oldAttributes);
@override
Operation copyWithPath(Path path) => copyWith(path: path);
@ -74,9 +86,9 @@ class UpdateOperation extends Operation {
@override
Operation invert() {
return UpdateOperation(
path: path,
attributes: oldAttributes,
oldAttributes: attributes,
path,
oldAttributes,
attributes,
);
}
@ -94,23 +106,26 @@ class UpdateOperation extends Operation {
class DeleteOperation extends Operation {
final Node removedValue;
DeleteOperation({
required super.path,
required this.removedValue,
});
factory DeleteOperation.fromJson(Map<String, dynamic> map) {
final path = map["path"] as List<int>;
final removedValue = Node.fromJson(map["removedValue"]);
return DeleteOperation(path, removedValue);
}
DeleteOperation copyWith({Path? path, Node? removedValue}) => DeleteOperation(
path: path ?? this.path, removedValue: removedValue ?? this.removedValue);
DeleteOperation(
Path path,
this.removedValue,
) : super(path);
DeleteOperation copyWith({Path? path, Node? removedValue}) =>
DeleteOperation(path ?? this.path, removedValue ?? this.removedValue);
@override
Operation copyWithPath(Path path) => copyWith(path: path);
@override
Operation invert() {
return InsertOperation(
path: path,
value: removedValue,
);
return InsertOperation(path, removedValue);
}
@override
@ -127,24 +142,29 @@ class TextEditOperation extends Operation {
final Delta delta;
final Delta inverted;
TextEditOperation({
required super.path,
required this.delta,
required this.inverted,
});
factory TextEditOperation.fromJson(Map<String, dynamic> map) {
final path = map["path"] as List<int>;
final delta = Delta.fromJson(map["delta"]);
final invert = Delta.fromJson(map["invert"]);
return TextEditOperation(path, delta, invert);
}
TextEditOperation(
Path path,
this.delta,
this.inverted,
) : super(path);
TextEditOperation copyWith({Path? path, Delta? delta, Delta? inverted}) =>
TextEditOperation(
path: path ?? this.path,
delta: delta ?? this.delta,
inverted: inverted ?? this.inverted);
path ?? this.path, delta ?? this.delta, inverted ?? this.inverted);
@override
Operation copyWithPath(Path path) => copyWith(path: path);
@override
Operation invert() {
return TextEditOperation(path: path, delta: inverted, inverted: delta);
return TextEditOperation(path, inverted, delta);
}
@override

View File

@ -1,5 +1,4 @@
import 'dart:collection';
import 'dart:math';
import 'package:flowy_editor/editor_state.dart';
import 'package:flowy_editor/document/node.dart';
import 'package:flowy_editor/document/path.dart';
@ -31,21 +30,21 @@ class TransactionBuilder {
insertNode(Path path, Node node) {
beforeSelection = state.cursorSelection;
add(InsertOperation(path: path, value: node));
add(InsertOperation(path, node));
}
updateNode(Node node, Attributes attributes) {
beforeSelection = state.cursorSelection;
add(UpdateOperation(
path: node.path,
attributes: Attributes.from(node.attributes)..addAll(attributes),
oldAttributes: node.attributes,
node.path,
Attributes.from(node.attributes)..addAll(attributes),
node.attributes,
));
}
deleteNode(Node node) {
beforeSelection = state.cursorSelection;
add(DeleteOperation(path: node.path, removedValue: node));
add(DeleteOperation(node.path, node));
}
textEdit(TextNode node, Delta Function() f) {
@ -56,7 +55,7 @@ class TransactionBuilder {
final inverted = delta.invert(node.delta);
add(TextEditOperation(path: path, delta: delta, inverted: inverted));
add(TextEditOperation(path, delta, inverted));
}
insertText(TextNode node, int index, String content) {
@ -82,9 +81,9 @@ class TransactionBuilder {
last is TextEditOperation &&
pathEquals(op.path, last.path)) {
final newOp = TextEditOperation(
path: op.path,
delta: last.delta.compose(op.delta),
inverted: op.inverted.compose(last.inverted),
op.path,
last.delta.compose(op.delta),
op.inverted.compose(last.inverted),
);
operations[operations.length - 1] = newOp;
return;

View File

@ -27,26 +27,18 @@ void main() {
group('transform operation', () {
test('insert + insert', () {
final t = transformOperation(
InsertOperation(path: [
0,
1
], value: Node(type: "node", attributes: {}, children: LinkedList())),
InsertOperation(
path: [0, 1],
value:
Node(type: "node", attributes: {}, children: LinkedList())));
InsertOperation([0, 1],
Node(type: "node", attributes: {}, children: LinkedList())),
InsertOperation([0, 1],
Node(type: "node", attributes: {}, children: LinkedList())));
expect(t.path, [0, 2]);
});
test('delete + delete', () {
final t = transformOperation(
DeleteOperation(
path: [0, 1],
removedValue:
Node(type: "node", attributes: {}, children: LinkedList())),
DeleteOperation(
path: [0, 2],
removedValue:
Node(type: "node", attributes: {}, children: LinkedList())));
DeleteOperation([0, 1],
Node(type: "node", attributes: {}, children: LinkedList())),
DeleteOperation([0, 2],
Node(type: "node", attributes: {}, children: LinkedList())));
expect(t.path, [0, 1]);
});
});