Extract and consolidate indent detection functions
This commit is contained in:
parent
c3d93998d1
commit
30200ceb7b
2 changed files with 9 additions and 27 deletions
2
TODO.md
2
TODO.md
|
|
@ -18,10 +18,10 @@
|
||||||
- [ ] Consolidate menu creation (card menus and burger menu)
|
- [ ] Consolidate menu creation (card menus and burger menu)
|
||||||
- [ ] Extract line parsing logic - separate parsing from state management
|
- [ ] Extract line parsing logic - separate parsing from state management
|
||||||
- [ ] Make createAddForm more generic to handle both columns and cards
|
- [ ] Make createAddForm more generic to handle both columns and cards
|
||||||
- [ ] Extract and consolidate indent detection functions
|
|
||||||
|
|
||||||
## Done
|
## Done
|
||||||
|
|
||||||
|
- [x] Extract and consolidate indent detection functions
|
||||||
- [x] Reduce IndexedDB boilerplate with generic DB operation wrapper
|
- [x] Reduce IndexedDB boilerplate with generic DB operation wrapper
|
||||||
- [x] Simplify drop indicator logic
|
- [x] Simplify drop indicator logic
|
||||||
- [x] Extract file operations into higher-level abstraction
|
- [x] Extract file operations into higher-level abstraction
|
||||||
|
|
|
||||||
34
index.html
34
index.html
|
|
@ -1121,11 +1121,13 @@ chmod 755 kbtd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function detectIndentInFile(text) {
|
function detectIndent(lines, defaultIndent = ' ') {
|
||||||
const lines = text.split('\n');
|
if (!lines || lines.length === 0) return defaultIndent;
|
||||||
|
|
||||||
|
const lineArray = typeof lines === 'string' ? lines.split('\n') : lines;
|
||||||
let minIndent = null;
|
let minIndent = null;
|
||||||
|
|
||||||
for (const line of lines) {
|
for (const line of lineArray) {
|
||||||
if (line.trim() === '') continue;
|
if (line.trim() === '') continue;
|
||||||
|
|
||||||
const match = line.match(/^(\s+)/);
|
const match = line.match(/^(\s+)/);
|
||||||
|
|
@ -1137,27 +1139,7 @@ chmod 755 kbtd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return minIndent || ' ';
|
return minIndent || defaultIndent;
|
||||||
}
|
|
||||||
|
|
||||||
function detectBaseIndent(nestedLines) {
|
|
||||||
if (nestedLines.length === 0) return '';
|
|
||||||
|
|
||||||
let minIndent = null;
|
|
||||||
|
|
||||||
for (const line of nestedLines) {
|
|
||||||
if (line.trim() === '') continue;
|
|
||||||
|
|
||||||
const match = line.match(/^(\s+)/);
|
|
||||||
if (match) {
|
|
||||||
const indent = match[1];
|
|
||||||
if (minIndent === null || indent.length < minIndent.length) {
|
|
||||||
minIndent = indent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return minIndent || '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function stripBaseIndent(nestedLines, baseIndent) {
|
function stripBaseIndent(nestedLines, baseIndent) {
|
||||||
|
|
@ -1734,10 +1716,10 @@ chmod 755 kbtd
|
||||||
const cardDetailModal = createModal('card-detail-modal', async (card) => {
|
const cardDetailModal = createModal('card-detail-modal', async (card) => {
|
||||||
const file = await state.fileHandle.getFile();
|
const file = await state.fileHandle.getFile();
|
||||||
const text = await file.text();
|
const text = await file.text();
|
||||||
const defaultIndent = detectIndentInFile(text);
|
const defaultIndent = detectIndent(text);
|
||||||
|
|
||||||
const baseIndent = card.nestedLines.length > 0
|
const baseIndent = card.nestedLines.length > 0
|
||||||
? detectBaseIndent(card.nestedLines)
|
? detectIndent(card.nestedLines, '')
|
||||||
: defaultIndent;
|
: defaultIndent;
|
||||||
|
|
||||||
const strippedContent = stripBaseIndent(card.nestedLines, baseIndent);
|
const strippedContent = stripBaseIndent(card.nestedLines, baseIndent);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue