1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Desktop: Resolves #4813 : Skip empty lines while converting selection to list (#4832)

This commit is contained in:
Adarsh Singh 2021-05-04 14:19:56 +05:30 committed by GitHub
parent a0ead2c48e
commit b1ecb75e1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 19 deletions

View File

@ -382,6 +382,9 @@ packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js.map

3
.gitignore vendored
View File

@ -369,6 +369,9 @@ packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.test.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js.map

View File

@ -0,0 +1,20 @@
import { modifyListLines } from './useCursorUtils';
describe('useCursorUtils', () => {
let listWithDashes = `- item1
- item2
- item3`;
let listNoDashes = `item1
item2
item3`;
test('should remove "- " from beggining of each line of input string', () => {
expect(JSON.stringify(modifyListLines(listWithDashes.split('\n'), 0, '- '))).toBe(JSON.stringify(listNoDashes.split('\n')));
});
test('should add "- " at the beggining of each line of the input string', () => {
expect(JSON.stringify(modifyListLines(listNoDashes.split('\n'), 0, '- '))).toBe(JSON.stringify(listWithDashes.split('\n')));
});
});

View File

@ -1,6 +1,24 @@
import markdownUtils from '@joplin/lib/markdownUtils';
import Setting from '@joplin/lib/models/Setting';
export function modifyListLines(lines: string[],num: number,listSymbol: string) {
for (let j = 0; j < lines.length; j++) {
const line = lines[j];
if (!line && j === lines.length - 1) continue;
// Only add the list token if it's not already there
// if it is, remove it
if (!line.startsWith(listSymbol)) {
if (num) {
lines[j] = `${num.toString()}. ${line}`;
num++;
} else {
lines[j] = listSymbol + line;
}
} else {
lines[j] = line.substr(listSymbol.length, line.length - listSymbol.length);
}
}
return lines;
}
// Helper functions that use the cursor
export default function useCursorUtils(CodeMirror: any) {
@ -81,28 +99,12 @@ export default function useCursorUtils(CodeMirror: any) {
for (let i = 0; i < selectedStrings.length; i++) {
const selected = selectedStrings[i];
let num = markdownUtils.olLineNumber(string1);
const num = markdownUtils.olLineNumber(string1);
const lines = selected.split(/\r?\n/);
// Save the newline character to restore it later
const newLines = selected.match(/\r?\n/);
for (let j = 0; j < lines.length; j++) {
const line = lines[j];
// Only add the list token if it's not already there
// if it is, remove it
if (!line.startsWith(string1)) {
if (num) {
lines[j] = `${num.toString()}. ${line}`;
num++;
} else {
lines[j] = string1 + line;
}
} else {
lines[j] = line.substr(string1.length, line.length - string1.length);
}
}
modifyListLines(lines,num,string1);
const newLine = newLines !== null ? newLines[0] : '\n';
selectedStrings[i] = lines.join(newLine);
}