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에 빠른실행 등록하는 방법을 참고해주세요

관련 플러그인

 

텍스트를 정렬해주는 Sort & Permute lines 플러그인

개요 Sort & Permute lines는 텍스트를 정렬해주는 플러그인입니다. 이 플러그인은 Order list 플러그인과 달리, 문장 끝에 숫자가 없어도 정렬할 수 있는 기능을 제공합니다. 다양한 종류의 명령어를 지

kaminik.tistory.com

 

[Templater] 체크박스 정렬하기

체크박스를 정렬하는 Templater Snippet입니다. 예시 Templater Snippet { if (line.startsWith('- [ ]') || line.startsWith('- [x]')) { isTaskSection = true; taskLines.push(line); } else { if (isTaskSection && taskLines.length > 0) { textLines.push

kaminik.tistory.com


 

반응형