Homemade Source/Templater snippets
[Templater] 텍스트, 리스트, 체크박스 정렬하기
반응형
텍스트, 리스트, 체크박스를 정렬하는 Templater snippet입니다. 기존에 만들었던 체크박스 정렬하는 snippet과 비슷하면서 조금 다릅니다. 이 스니펫은 선택한 텍스트만 정렬이 가능합니다.
Sort & Permute lines 플러그인과 기능은 같지만 명령어를 여러개 써야된다는 점 때문에 자주쓰는 정렬부분만 Templater로 구현하였습니다.
예시
Templater Snippet
<%*
function parseListToTree(lines) {
const root = { children: [] };
const stack = [root];
lines.forEach(line => {
const depth = line.match(/^(\t*)/)[0].length + 1;
const node = { item: line.trim(), children: [] };
while (depth < stack.length) {
stack.pop();
}
stack[stack.length - 1].children.push(node);
stack.push(node);
});
return root.children;
}
function sortTree(tree) {
tree.sort((a, b) => a.item.localeCompare(b.item));
tree.forEach(node => {
if (node.children.length > 0) {
sortTree(node.children);
}
});
}
function treeToList(tree, prefix = '') {
return tree.flatMap(node => [`${prefix}${node.item}`].concat(treeToList(node.children, prefix + '\t')));
}
const editor = app.workspace.activeLeaf.view.editor;
const selection = editor.getSelection();
if (selection) {
const lines = selection.split("\n");
const tree = parseListToTree(lines);
sortTree(tree);
const sortedSelection = treeToList(tree).join("\n");
editor.replaceSelection(sortedSelection);
} else {
new Notice("텍스트를 선택해주세요.");
}
%>
Templater로 작성한 명령어(스크립트)을 단축키로 실행하는 방법을 참고해주세요.
Commander에 빠른실행 등록하는 방법을 참고해주세요
관련 플러그인
반응형
'Homemade Source > Templater snippets' 카테고리의 다른 글
[Templater] 옵시디언 문서의 update 날짜 자동 갱신하기 (1) | 2024.03.16 |
---|---|
[Templater] 선택된 영역에서 링크 삭제하기 (0) | 2024.03.14 |
[Templater] 오늘 생성한 노트의 목록을 데일리 노트에 출력하기 (0) | 2024.03.03 |
[Templater] 시간과 시계 이모지 출력하기 (0) | 2024.02.08 |
[Templater] 체크박스 정렬하기 (0) | 2024.02.06 |