옵시디언 활용/Templater

Templater 심화: 명령어 (Commands)

반응형

명령어 (Commands)

명령어 유형

Templater는 두 가지 유형의 명령어 태그를 정의합니다:

  • Interpolation Command (<%:): 이 명령어는 간단한 데이터 출력이나 계산 결과를 문서에 바로 표시할 때 사용됩니다. 예를 들어, 오늘 날짜를 문서에 삽입하거나, 사용자 지정 변수의 값을 출력할 수 있습니다.
  • JavaScript Execution Command (<%*): 이 명령어는 JavaScript 코드를 실행하여 더 복잡한 로직을 처리할 수 있게 합니다. 이를 통해 조건부 내용 표시, 데이터 변환, 외부 API 호출 등의 작업을 수행할 수 있습니다.

모든 명령어의 종결 태그는 %>로 동일합니다.

명령어 유틸리티

명령어 타입 외에도, 명령어 유틸리티를 사용하여 명령어의 기능을 확장할 수 있습니다. 이 유틸리티는 명령어 태그의 시작 부분에 선언되며, 모든 명령어 유형과 함께 작동합니다. 사용할 수 있는 명령어 유틸리티는 다음과 같습니다:

  • Whitespace Control (<%_): 명령어 실행 후에 발생할 수 있는 불필요한 공백이나 줄바꿈을 제어합니다.
  • Dynamic Commands (<%+): 명령어를 동적으로 선언하여, 문서를 미리 보기 모드에서 열었을 때만 해당 명령어가 실행되도록 합니다.

Dynamic Commands

Dynamic Commands는 명령어를 동적으로 선언하여, 문서를 미리 보기 모드에서 열었을 때만 해당 명령어가 실행되도록 합니다.

 

이 기능은 tp.file.last_modified_date와 같은 내부 함수에 유용합니다:

마지막 수정 날짜: <%+ tp.file.last_modified_date("YYYY-MM-DD") %>
동적 명령어는 문제가 있어, 앞으로 유지 관리되지 않을 가능성이 높습니다. 대부분의 경우 Dataview의 인라인 쿼리를 사용하는 것을 추천합니다.

새로 고침 문제

미리보기 모드의 단점중 하나는 렌더링된 노트를 캐시에 저장하여 속도를 높인다는 것입니다. 노트를 열 때 한 번만 Dynamic Commands가 렌더링되지만, 이후 새로 고침되지 않습니다. 새로 고침하려면 캐시를 지우기 위해 노트를 닫았다가 다시 열어야 합니다.

Javascript Execution Command

Javascript Execution Command는 JavaScript가 허용하는 거의 모든 작업을 수행할 수 있습니다. tp 객체와 내부 변수/함수에 접근할 수 있으며, app이나 moment와 같은 전역 네임스페이스 변수에도 접근할 수 있습니다. 비동기 함수를 호출할 때는 await 키워드를 사용해야 합니다.

 

값을 출력하고 싶을 때는, tR 문자열 변수에 원하는 출력 값을 추가하면 됩니다. 예를 들어, <%* tR += "test" %>test를 출력합니다.

 

예시: 문서 내용에서 특정 단어를 다른 단어로 대체하고 싶다면, 다음과 같은 코드를 사용할 수 있습니다:

<%* tR += tp.file.content.replace(/stuff/, "things"); %>

이 코드는 문서 내의 "stuff"라는 단어를 모두 "things"로 대체합니다.

<%* if (tp.file.title.startsWith("Hello")) { %>
This is a hello file !
<%* } else { %>
This is a normal file !
<%* } %>

Whitespace Control

Templater 명령어는 기본적으로 새 줄을 제거하지 않습니다. Whitespace Control을 사용하면, 명령어의 실행 결과가 문서에 삽입될 때 주변의 공백이나 줄바꿈을 제어할 수 있습니다.

공백 제어를 위한 구체적인 문법은 다음과 같습니다:

  • <%_: 명령어 앞의 모든 공백을 제거합니다.
  • _%>: 명령어 뒤의 모든 공백을 제거합니다.
  • <%-: 명령어 앞의 줄바꿈 하나를 제거합니다.
  • -%>: 명령어 뒤의 줄바꿈 하나를 제거합니다.

예시: 명령어 실행 결과 주변의 불필요한 줄바꿈을 제거하고자 할 때, 다음과 같은 구문을 사용할 수 있습니다:

<%* if (tp.file.title == "MyFile" ) { -%>
This is my file!
<%* } else { -%>
This isn't my file!
<%* } -%>
Some content ...

이 코드는 조건에 따라 "This is my file!" 또는 "This isn't my file!"을 출력하며, 명령어 실행으로 인해 추가될 수 있는 불필요한 줄바꿈을 제거합니다.


 

반응형