mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-06-30 11:33:34 +08:00
MarkdownToolBar: Test h1 removal
And fix cursor position after removing of the header
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
## [1.63] - 2020-08-12
|
## [1.64] - 2020-08-12
|
||||||
* Showcase list of Features in Purchase Screen
|
* Showcase list of Features in Purchase Screen
|
||||||
* Fix: Payment slider being glitchy
|
* Fix: Payment slider being glitchy
|
||||||
* Fix: MetaData Settings page crashing
|
* Fix: MetaData Settings page crashing
|
||||||
|
@ -114,9 +114,19 @@ TextEditingValue modifyCurrentLine(
|
|||||||
// Check if already present
|
// Check if already present
|
||||||
if (text.startsWith(char, lineStartPos)) {
|
if (text.startsWith(char, lineStartPos)) {
|
||||||
//print('Removing `$char`');
|
//print('Removing `$char`');
|
||||||
|
var endOffset = cursorPos;
|
||||||
|
//print("End Offset: $endOffset");
|
||||||
|
if (endOffset > lineStartPos) {
|
||||||
|
endOffset -= char.length;
|
||||||
|
//print("End Offset min char: $endOffset");
|
||||||
|
}
|
||||||
|
if (endOffset < lineStartPos) {
|
||||||
|
endOffset = lineStartPos;
|
||||||
|
//print("End Offset equal LineStartPos: $endOffset");
|
||||||
|
}
|
||||||
return TextEditingValue(
|
return TextEditingValue(
|
||||||
text: text.replaceFirst(char, '', lineStartPos),
|
text: text.replaceFirst(char, '', lineStartPos),
|
||||||
selection: TextSelection.collapsed(offset: cursorPos - char.length),
|
selection: TextSelection.collapsed(offset: endOffset),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,11 +4,12 @@ import 'package:test/test.dart';
|
|||||||
import 'package:gitjournal/widgets/markdown_toolbar.dart';
|
import 'package:gitjournal/widgets/markdown_toolbar.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
void _testH1({
|
void _testLine({
|
||||||
@required String before,
|
@required String before,
|
||||||
@required int beforeOffset,
|
@required int beforeOffset,
|
||||||
@required String after,
|
@required String after,
|
||||||
@required int afterOffset,
|
@required int afterOffset,
|
||||||
|
@required String char,
|
||||||
}) {
|
}) {
|
||||||
var val = TextEditingValue(
|
var val = TextEditingValue(
|
||||||
text: before,
|
text: before,
|
||||||
@ -20,8 +21,30 @@ void main() {
|
|||||||
selection: TextSelection.collapsed(offset: afterOffset),
|
selection: TextSelection.collapsed(offset: afterOffset),
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(modifyCurrentLine(val, '# '), expectedVal);
|
expect(modifyCurrentLine(val, char), expectedVal);
|
||||||
expect(modifyCurrentLine(expectedVal, '# '), val);
|
}
|
||||||
|
|
||||||
|
void _testH1({
|
||||||
|
@required String before,
|
||||||
|
@required int beforeOffset,
|
||||||
|
@required String after,
|
||||||
|
@required int afterOffset,
|
||||||
|
}) {
|
||||||
|
_testLine(
|
||||||
|
before: before,
|
||||||
|
beforeOffset: beforeOffset,
|
||||||
|
after: after,
|
||||||
|
afterOffset: afterOffset,
|
||||||
|
char: '# ',
|
||||||
|
);
|
||||||
|
|
||||||
|
_testLine(
|
||||||
|
before: after,
|
||||||
|
beforeOffset: afterOffset,
|
||||||
|
after: before,
|
||||||
|
afterOffset: beforeOffset,
|
||||||
|
char: '# ',
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
test('Adds a header to the first line correctly', () {
|
test('Adds a header to the first line correctly', () {
|
||||||
@ -60,6 +83,23 @@ void main() {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Removes when cursor is at the start of the line
|
test('Removes header when cursor is at the start of the line', () {
|
||||||
// Removes when cursor is in between '#' and ' '
|
_testLine(
|
||||||
|
before: 'Hi\n# Hello Darkness\nFire',
|
||||||
|
beforeOffset: 3,
|
||||||
|
after: 'Hi\nHello Darkness\nFire',
|
||||||
|
afterOffset: 3,
|
||||||
|
char: '# ',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Removes header when cursor is in between '#' and ' '", () {
|
||||||
|
_testLine(
|
||||||
|
before: 'Hi\n# Hello Darkness\nFire',
|
||||||
|
beforeOffset: 4,
|
||||||
|
after: 'Hi\nHello Darkness\nFire',
|
||||||
|
afterOffset: 3,
|
||||||
|
char: '# ',
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user