Templater 심화: User Functions (tp.user)
Templater 플러그인의 사용자 정의 함수는 크게 두 가지 유형으로 나눌 수 있습니다: Script User Function과 System Command User Function입니다.
Script User Function
JavaScript 파일에 정의된 JavaScript 함수를 호출하고 그 출력값을 받을 수 있습니다. 사용하기 위해서는 Templater 설정에서 스크립트 폴더를 지정해야 합니다. 이 폴더는 Vault에서 접근 가능해야 합니다.
Script User Function 정의하기
스크립트 폴더로 Scripts
폴더를 지정합니다. Templater는 Scripts
폴더 내의 모든 JavaScript 파일(.js 확장자)을 로드합니다. Scripts/my_script.js
와 같은 스크립트를 생성하여 사용할 수 있습니다. 스크립트는 CommonJS 모듈 사양을 따라야 하며, 단일 함수를 내보내야 합니다.
function my_function (msg) {
return `Message from my script: ${msg}`;
}
module.exports = my_function;
이 스크립트를 사용자 함수로 호출하려면 다음과 같이 입력합니다:
<% tp.user.my_script("Hello World!") %>
"Message from my script: Hello World!"라는 메시지를 출력합니다.
Script User Function에서는 app
이나 moment
와 같은 전역 네임스페이스 변수에 접근할 수 있지만, tp
나 tR
과 같은 템플릿 엔진 범위 변수에는 접근할 수 없습니다. 이 변수들을 사용하려면 함수의 인자로 전달해야 합니다.
System Command User Function
시스템 명령을 실행하고 그 출력값을 받을 수 있습니다. 사용하기 위해서는 Templater 설정에서 시스템 명령 사용자 함수를 활성화해야 합니다.
System Command User Function 정의하기
System Command User Function을 활성화를 합니다.
플러그인 설정으로 이동하여 Add New User Function
를 클릭합니다. 함수 이름을 시스템 명령과 연결해 Add New User Function을 정의합니다.
함수 인자는 선택적으로 전달할 수 있으며, 단일 JavaScript 객체로 전달됩니다. 이 인자는 환경 변수의 형태로 프로그램이나 스크립트에서 사용할 수 있습니다.
예를 들어, 다음과 같이 명령을 선언할 수 있습니다:
<% tp.user.echo({a: "value 1", b: "value 2"}) %>
만약 이 시스템 명령이 bash 스크립트를 호출한다면, $a
와 $b
를 사용하여 변수 a
와 b
에 접근할 수 있습니다.
시스템 명령 내에서 내부 함수를 사용할 수도 있으며, 시스템 명령이 실행되기 전에 내부 함수가 대체됩니다. 예를 들어, cat <% tp.file.path() %>
라는 시스템 명령을 구성했다면, 실행 전에 실제 파일 경로로 대체됩니다.
예시 1. 현재 날짜 작성
함수 이름을 write_current_date
로 설정하고, 연결할 시스템 명령을 echo "$(date)" >> ~/Documents/Obsidian/Logs/current_date.txt
로 입력합니다. 이 명령은 현재 날짜와 시간을 current_date.txt
파일에 추가합니다.
Obsidian 노트에서 다음과 같은 코드를 사용하여 방금 정의한 시스템 명령 사용자 함수를 호출할 수 있습니다:
<% tp.user.write_current_date() %>
이 코드를 실행하면 Templater가 write_current_date
사용자 함수를 호출하고, 설정한 시스템 명령에 따라 현재 날짜와 시간을 ~/Documents/Obsidian/Logs/current_date.txt
파일에 기록합니다.
예시 2. 디스크 사용
함수 이름을 disk_usage
로 설정하고, 시스템 명령으로 df -h
를 입력합니다. (df -h
명령은 Unix 기반 시스템에서 디스크 사용량을 인간이 읽을 수 있는 형식으로 보여줍니다. Windows 사용자는 wmic logicaldisk get size,freespace,caption
을 사용할 수 있습니다.)
Templater 문법을 사용하여 다음과 같이 함수를 호출합니다:
<% tp.user.disk_usage() %>
결과는 다음과 같이 나타날 수 있습니다:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 40G 11G 27G 30% /
위 예시처럼, 시스템 명령 사용자 함수는 Obsidian 사용자가 시스템 관련 정보를 쉽게 조회하고, 그 결과를 자신의 노트에 기록할 수 있도록 도와줍니다. 자신의 작업 환경에 대한 중요한 정보를 빠르게 문서화하고, 필요한 정보에 쉽게 접근할 수 있게 됩니다.
고려 사항
- 환경에 따른 명령 실행: UNIX 계열 시스템(예: macOS, Linux)과 Windows는 명령어 구문이 다릅니다.
- Obsidian 모바일 지원: 현재 Templater의 User Function는 Obsidian의 모바일 버전에서 지원되지 않습니다. 이 기능은 데스크톱 버전에서만 사용 가능합니다.
- 보안 고려 사항: 외부 스크립트나 시스템 명령을 실행할 때는 보안을 주의해야 합니다. 신뢰할 수 있는 스크립트만 실행하고, 개인 정보를 다룰 때는 특별히 주의해야 합니다.
'옵시디언 활용 > Templater' 카테고리의 다른 글
Templater 심화: 명령어 (Commands) (0) | 2024.03.01 |
---|---|
Templater 심화: Web Module (tp.web) (0) | 2024.02.21 |
Templater 심화: System Module (tp.system) (1) | 2024.02.20 |
Templater 심화: Obsidian Module (tp.obsidian) (0) | 2024.02.19 |
Templater 심화: Hooks Module (tp.hooks) (0) | 2024.02.18 |