Fungsi digunakan dalam [[Pengenalan Basis|Basis]] untuk memanipulasi data dari [[Properti|properti]] di [[Tampilan#Filter|filter]] dan [[Rumus|rumus]]. Lihat referensi [[Sintaksis Basis|sintaksis basis]] untuk mempelajari lebih lanjut tentang cara menggunakan fungsi.
Selain fungsi [[Fungsi#Global|Global]], sebagian besar fungsi bergantung pada tipe nilai yang ingin Anda modifikasi:
- [[Fungsi#Any|Any]]
- [[Fungsi#Date|Date]]
- [[Fungsi#String|String]]
- [[Fungsi#Number|Number]]
- [[Fungsi#List|List]]
- [[Fungsi#Link|Link]]
- [[Fungsi#File|File]]
- [[Fungsi#Object|Object]]
- [[Fungsi#Ekspresi reguler|Ekspresi reguler]]
## Global
Fungsi global digunakan tanpa tipe.
### `escapeHTML()`
`escapeHTML(html: string): string`
- Meng-escape karakter khusus dalam string agar aman untuk disertakan dalam HTML.
### `date()`
`date(date: string): date`
- `date(string): date` menguraikan string yang diberikan dan mengembalikan objek tanggal.
- String `date` harus dalam format `YYYY-MM-DD HH:mm:ss`.
### `duration()`
`duration(value: string): duration`
- Menguraikan string sebagai durasi. Lihat [[Sintaksis Basis#Aritmetika tanggal|bagian aritmetika tanggal]] untuk format string `value`.
- Durasi tidak perlu diuraikan secara eksplisit saat melakukan aritmetika tanggal (misalnya, `now() + '1d'`), tetapi perlu diuraikan saat melakukan aritmetika pada durasi (misalnya, `now() + (duration('1d') * 2)`).
- Saat melakukan aritmetika pada durasi dengan skalar, durasi harus berada di sisi kiri. Misalnya `duration('5h') * 2`, bukan `2 * duration('5h')`.
### `file()`
`file(path: string | file | url): file`
- Mengembalikan objek file untuk file atau path yang diberikan.
- Contoh: `file(link("[[namafile]]"))` atau `file("path ke file")`.
### `html()`
`html(html: string): html`
- Mengonversi string menjadi cuplikan kode yang dirender sebagai HTML.
### `if()`
`if(condition: any, trueResult: any, falseResult?: any): any`
- `condition` adalah kondisi yang akan dievaluasi.
- `trueResult` adalah output jika kondisi bernilai benar.
- `falseResult` adalah output opsional jika kondisi bernilai salah. Jika tidak diberikan, maka diasumsikan sebagai `null`.
- Mengembalikan `trueResult` jika `condition` bernilai benar, atau merupakan nilai truthy, atau `falseResult` sebaliknya.
- Contoh: `if(isModified, "Modified", "Unmodified")`
### `image()`
`image(path: string | file | url): image`
- Mengembalikan objek gambar yang akan merender gambar dalam tampilan.
- Contoh: `image(image-property)` atau `image("https://obsidian.md/images/obsidian-logo-gradient.svg")`
### `icon()`
`icon(name: string): icon`
- Mengembalikan nilai yang akan dirender sebagai ikon dalam tampilan. Nama ikon harus sesuai dengan ikon Lucide yang didukung.
- Contoh: `icon("arrow-right")`.
### `link()`
`link(path: string | file, display?: value): Link`
- Menguraikan string `path` dan mengembalikan objek Link yang dirender sebagai tautan ke path yang diberikan.
- Secara opsional berikan parameter `display` untuk mengubah teks yang ditampilkan tautan.
### `list()`
`list(element: any): List`
- Jika elemen yang diberikan adalah daftar, mengembalikannya tanpa modifikasi.
- Jika tidak, membungkus `element` yang diberikan dalam daftar, membuat daftar dengan satu elemen.
- Fungsi ini dapat berguna ketika properti berisi campuran string atau daftar di seluruh brankas.
- Contoh: `list("value")` mengembalikan `["value"]`.
### `max()`
`max(value1: number, value2: number...): number`
- Mengembalikan angka terbesar dari semua angka yang diberikan.
### `min()`
`min(value1: number, value2: number...): number`
- Mengembalikan angka terkecil dari semua angka yang diberikan.
### `now()`
`now(): date`
- `now()` mengembalikan objek tanggal yang merepresentasikan momen saat ini.
### `number()`
`number(input: any): number`
- Mencoba mengembalikan nilai yang diberikan sebagai angka.
- Objek tanggal akan dikembalikan sebagai milidetik sejak epoch unix.
- Boolean akan mengembalikan 1 atau 0.
- String akan diuraikan menjadi angka dan mengembalikan kesalahan jika hasilnya tidak valid.
- Contoh, `number("3.4")` mengembalikan `3.4`.
### `duration()`
`duration(value: string): duration`
- Menguraikan string sebagai durasi. Lihat [[Sintaksis Basis#Aritmetika tanggal|bagian aritmetika tanggal]] untuk format string `value`.
- Durasi tidak perlu diuraikan secara eksplisit saat melakukan aritmetika tanggal (misalnya, `now() + '1d'`), tetapi perlu diuraikan saat melakukan aritmetika pada durasi (misalnya, `now() + (duration('1d') * 2)`).
- Saat melakukan aritmetika pada durasi dengan skalar, durasi harus berada di sisi kiri. Misalnya `duration('5h') * 2`, bukan `2 * duration('5h')`.
### `today()`
`today(): date`
- `today()` mengembalikan objek tanggal yang merepresentasikan tanggal saat ini. Bagian waktu diatur ke nol.
### `random()`
`random(): number`
- `random()` mengembalikan angka acak antara 0 dan 1.
- Pembangkitan angka diperbarui setiap kali tampilan dimuat. Berpindah antar tampilan mengubah angka acak.
## Any
Fungsi yang dapat Anda gunakan dengan nilai apa pun. Ini termasuk string (misalnya `"hello"`), angka (misalnya `42`), daftar (misalnya `[1,2,3]`), objek, dan lainnya.
### `isTruthy()`
`any.isTruthy(): boolean`
- Mengembalikan nilai yang dikonversi menjadi boolean.
- Contoh: `1.isTruthy()` mengembalikan `true`.
### `isType()`
`any.isType(type: string): boolean`
- Mengembalikan true jika nilai bertipe yang diberikan.
- Contoh: `"example".isType("string")` dan `true.isType("boolean")` keduanya mengembalikan true.
### `toString()`
`any.toString(): string`
- Mengembalikan representasi string dari nilai apa pun.
- Contoh: `123.toString()` mengembalikan `"123"`.
## Date
Fungsi yang dapat Anda gunakan dengan tanggal dan waktu seperti `date("2025-05-27")`. Perbandingan tanggal dapat dilakukan menggunakan [[Sintaksis Basis#Aritmetika tanggal|aritmetika tanggal]].
### Field
Field berikut tersedia untuk tanggal:
| Field | Tipe | Deskripsi |
| ------------------ | -------- | ------------------------------ |
| `date.year` | `number` | Tahun dari tanggal |
| `date.month` | `number` | Bulan dari tanggal (1–12) |
| `date.day` | `number` | Hari dalam bulan |
| `date.hour` | `number` | Jam (0–23) |
| `date.minute` | `number` | Menit (0–59) |
| `date.second` | `number` | Detik (0–59) |
| `date.millisecond` | `number` | Milidetik (0–999) |
### `date()`
`date.date(): date`
- Mengembalikan objek tanggal dengan waktu dihapus.
- Contoh: `now().date().format("YYYY-MM-DD HH:mm:ss")` mengembalikan string seperti "2025-12-31 00:00:00"
### `format()`
`date.format(format: string): string`
- `format` adalah string format (misalnya, `"YYYY-MM-DD"`).
- Mengembalikan tanggal yang diformat sesuai dengan string format Moment.js.
- Contoh: `date.format("YYYY-MM-DD")` mengembalikan `"2025-05-27"`.
### `time()`
`date.time(): string`
- Mengembalikan waktu.
- Contoh: `now().time()` mengembalikan string seperti "23:59:59"
### `relative()`
`date.relative(): string`
- Mengembalikan perbandingan tanggal yang mudah dibaca terhadap waktu saat ini.
- Contoh: `file.mtime.relative()` mengembalikan nilai seperti `3 days ago`.
### `isEmpty()`
`date.isEmpty(): boolean`
- Mengembalikan false.
## String
Fungsi yang dapat Anda gunakan dengan urutan karakter seperti `"hello"`.
### Field
| Field | Tipe | Deskripsi |
| --------------- | -------- | ---------------------------------- |
| `string.length` | `number` | Jumlah karakter dalam string |
### `contains()`
`string.contains(value: string): boolean`
- `value` adalah substring yang dicari.
- Mengembalikan true jika string mengandung `value`.
- Contoh: `"hello".contains("ell")` mengembalikan `true`.
### `containsAll()`
`string.containsAll(...values: string): boolean`
- `values` adalah satu atau lebih substring yang dicari.
- Mengembalikan true jika string mengandung semua `values`.
- Contoh: `"hello".containsAll("h", "e")` mengembalikan `true`.
### `containsAny()`
`string.containsAny(...values: string): boolean`
- `values` adalah satu atau lebih substring yang dicari.
- Mengembalikan true jika string mengandung setidaknya satu dari `values`.
- Contoh: `"hello".containsAny("x", "y", "e")` mengembalikan `true`.
### `endsWith()`
`string.endsWith(query: string): boolean`
- `query` adalah string yang diperiksa di akhir.
- Mengembalikan true jika string ini diakhiri dengan `query`.
- Contoh: `"hello".endsWith("lo")` mengembalikan `true`.
### `isEmpty()`
`string.isEmpty(): boolean`
- Mengembalikan true jika string tidak memiliki karakter, atau tidak ada.
- Contoh: `"Hello world".isEmpty()` mengembalikan `false`.
- Contoh: `"".isEmpty()` mengembalikan `true`.
### `lower()`
`string.lower(): string`
- Mengembalikan string yang dikonversi ke huruf kecil.
### `replace()`
`string.replace(pattern: string | Regexp, replacement: string): string`
- `pattern` adalah nilai yang dicari dalam string target.
- `replacement` adalah nilai untuk menggantikan pola yang ditemukan.
- Jika `pattern` adalah string, semua kemunculan pola akan diganti.
- Jika `pattern` adalah Regexp, flag `g` menentukan apakah hanya kemunculan pertama atau semua kemunculan yang diganti.
- Contoh: `""a:b:c:d".replace(/:/, "-")` mengembalikan `"a-b,c,d"`, sedangkan `"a:b:c:d".replace(/:/g, "-")` mengembalikan `"a-b-c-d"`.
### `repeat()`
`string.repeat(count: number): string`
- `count` adalah jumlah kali string diulang.
- Contoh: `"123".repeat(2)` mengembalikan `"123123"`
### `reverse()`
`string.reverse(): string`
- Membalikkan string.
- Contoh: `"hello".reverse()` mengembalikan `"olleh"`.
### `slice()`
`string.slice(start: number, end?: number): string`
- `start` adalah indeks awal inklusif.
- `end` adalah indeks akhir eksklusif opsional.
- Mengembalikan substring dari `start` (inklusif) hingga `end` (eksklusif).
- Contoh: `"hello".slice(1, 4)` mengembalikan `"ell"`.
- Jika `end` dihilangkan, memotong hingga akhir string.
### `split()`
`string.split(separator: string | Regexp, n?: number): list`
- `separator` adalah pembatas untuk memisahkan string.
- `n` adalah angka opsional. Jika diberikan, hasilnya akan memiliki `n` elemen pertama.
- Mengembalikan daftar substring.
- Contoh: `"a,b,c,d".split(",", 3)` atau `"a,b,c,d".split(/,/, 3)` mengembalikan `["a", "b", "c"]`.
### `startsWith()`
`string.startsWith(query: string): boolean`
- `query` adalah string yang diperiksa di awal.
- Mengembalikan true jika string ini dimulai dengan `query`.
- Contoh: `"hello".startsWith("he")` mengembalikan `true`.
### `title()`
`string.title(): string`
- Mengonversi string ke huruf kapital di awal setiap kata (title case).
- Contoh: `"hello world".title()` mengembalikan `"Hello World"`.
### `trim()`
`string.trim(): string`
- Menghapus spasi dari kedua ujung string.
- Contoh: `" hi ".trim()` mengembalikan `"hi"`.
## Number
Fungsi yang dapat Anda gunakan dengan nilai numerik seperti `42`, `3.14`.
### `abs()`
`number.abs(): number`
- Mengembalikan nilai absolut dari angka.
- Contoh: `(-5).abs()` mengembalikan `5`.
### `ceil()`
`number.ceil(): number`
- Membulatkan angka ke atas ke bilangan bulat terdekat.
- Contoh: `(2.1).ceil()` mengembalikan `3`.
### `floor()`
`number.floor(): number`
- Membulatkan angka ke bawah ke bilangan bulat terdekat.
- Contoh: `(2.9).floor()` mengembalikan `2`.
### `isEmpty()`
`number.isEmpty(): boolean`
- Mengembalikan true jika angka tidak ada.
- Contoh: `5.isEmpty()` mengembalikan `false`.
### `round()`
`number.round(digits: number): number`
- Membulatkan angka ke bilangan bulat terdekat.
- Secara opsional, berikan parameter `digits` untuk membulatkan ke jumlah digit desimal tersebut.
- Contoh: `(2.5).round()` mengembalikan `3`, dan `(2.3333).round(2)` mengembalikan `2.33`.
### `toFixed()`
`number.toFixed(precision: number): string`
- `precision` adalah jumlah tempat desimal.
- Mengembalikan string dengan angka dalam notasi titik tetap.
- Contoh: `(3.14159).toFixed(2)` mengembalikan `"3.14"`.
## List
Fungsi yang dapat Anda gunakan dengan daftar elemen yang terurut seperti `[1, 2, 3]`.
### Field
| Field | Tipe | Deskripsi |
| ------------- | -------- | -------------------------------- |
| `list.length` | `number` | Jumlah elemen dalam daftar |
### `contains()`
`list.contains(value: any): boolean`
- `value` adalah elemen yang dicari.
- Mengembalikan true jika daftar mengandung `value`.
- Contoh: `[1,2,3].contains(2)` mengembalikan `true`.
### `containsAll()`
`list.containsAll(...values: any): boolean`
- `values` adalah satu atau lebih elemen yang dicari.
- Mengembalikan true jika daftar mengandung semua `values`.
- Contoh: `[1,2,3].containsAll(2,3)` mengembalikan `true`.
### `containsAny()`
`list.containsAny(...values: any): boolean`
- `values` adalah satu atau lebih elemen yang dicari.
- Mengembalikan true jika daftar mengandung setidaknya satu dari `values`.
- Contoh: `[1,2,3].containsAny(3,4)` mengembalikan `true`.
### `filter()`
`list.filter(value: Boolean): list`
- Menyaring elemen daftar ini dengan memanggil fungsi filter, yang menggunakan variabel `index` dan `value`, dan mengembalikan nilai boolean apakah elemen harus dipertahankan.
- `value` adalah nilai dari item dalam daftar.
- `index` adalah indeks dari nilai saat ini.
- Contoh: `[1,2,3,4].filter(value > 2)` mengembalikan `[3,4]`.
### `flat()`
`list.flat(): list`
- Meratakan daftar bersarang menjadi daftar tunggal.
- Contoh: `[1,[2,3]].flat()` mengembalikan `[1,2,3]`.
### `isEmpty()`
`list.isEmpty(): boolean`
- Mengembalikan true jika daftar tidak memiliki elemen.
- Contoh: `[1,2,3].isEmpty()` mengembalikan `false`.
### `join()`
`list.join(separator: string): string`
- `separator` adalah string yang disisipkan di antara elemen.
- Menggabungkan semua elemen daftar menjadi satu string.
- Contoh: `[1,2,3].join(",")` mengembalikan `"1,2,3"`.
### `map()`
`list.map(value: Any): list`
- Mengubah setiap elemen daftar ini dengan memanggil fungsi konversi, yang menggunakan variabel `index` dan `value`, dan mengembalikan nilai baru yang akan ditempatkan dalam daftar.
- `value` adalah nilai dari item dalam daftar.
- `index` adalah indeks dari nilai saat ini.
- Contoh: `[1,2,3,4].map(value + 1)` mengembalikan `[2,3,4,5]`.
### `reduce()`
`list.reduce(expression: Any, acc: Any): Any`
- Mereduksi elemen daftar ini menjadi satu nilai dengan menjalankan ekspresi untuk setiap elemen. Ekspresi dapat menggunakan variabel `index`, `value`, dan `acc` (akumulator), dan harus mengembalikan nilai akumulator berikutnya.
- `expression` dievaluasi untuk setiap elemen dalam daftar.
- `value` adalah nilai dari item saat ini dalam daftar.
- `index` adalah indeks dari item saat ini.
- `acc` adalah nilai yang diakumulasi sejauh ini.
- Contoh (jumlah): `[1,2,3].reduce(acc + value, 0)` mengembalikan `6`.
- Contoh (maksimum): `values.filter(value.isType("number")).reduce(if(acc == null || value > acc, value, acc), null)` mengembalikan angka terbesar, atau `null` jika tidak ada.
### `reverse()`
`list.reverse(): list`
- Membalikkan daftar di tempat.
- Contoh: `[1,2,3].reverse()` mengembalikan `[3,2,1]`.
### `slice()`
`list.slice(start: number, end?: number): list`
- `start` adalah indeks awal inklusif.
- `end` adalah indeks akhir eksklusif opsional.
- Mengembalikan salinan dangkal dari sebagian daftar dari `start` (inklusif) hingga `end` (eksklusif).
- Contoh: `[1,2,3,4].slice(1,3)` mengembalikan `[2,3]`.
- Jika `end` dihilangkan, memotong hingga akhir daftar.
### `sort()`
`list.sort(): list`
- Mengurutkan elemen daftar dari terkecil ke terbesar.
- Contoh: `[3, 1, 2].sort()` mengembalikan `[1, 2, 3]`.
- Contoh: `["c", "a", "b"].sort()` mengembalikan `["a", "b", "c"]`.
### `unique()`
`list.unique(): list`
- Menghapus elemen duplikat.
- Contoh: `[1,2,2,3].unique()` mengembalikan `[1,2,3]`.
## Link
Fungsi yang dapat Anda gunakan pada tautan. Tautan dapat dibuat dari file (`file.asLink()`) atau path (`link("path")`).
### `asFile()`
`link.asFile(): file`
- Mengembalikan objek file jika tautan merujuk ke file lokal yang valid.
- Contoh: `link("[[namafile]]").asFile()`
### `linksTo()`
`link.linksTo(file): boolean`
- Mengembalikan apakah file yang direpresentasikan oleh `link` memiliki tautan ke `file`.
## File
Fungsi yang dapat Anda gunakan dengan file di brankas.
### Field
Field berikut tersedia untuk file:
| Field | Tipe | Deskripsi |
| ----------------- | -------- | ----------------------------------------------------------- |
| `file.name` | `string` | Nama file ini. |
| `file.basename` | `string` | Nama file ini tanpa extension. |
| `file.path` | `string` | Path lengkap ke file ini, relatif terhadap root brankas. |
| `file.folder` | `string` | Path lengkap ke folder induk. |
| `file.ext` | `string` | Extension file untuk file ini. |
| `file.size` | `number` | Ukuran file ini, dalam byte. |
| `file.properties` | `object` | Properti catatan untuk file ini. |
| `file.tags` | `list` | Tag untuk file ini. Termasuk tag inline. |
| `file.links` | `list` | Tautan internal dalam file ini. |
| `file.ctime` | `date` | Timestamp kapan file ini dibuat. |
| `file.mtime` | `date` | Timestamp kapan file ini terakhir dimodifikasi. |
### `asLink()`
`file.asLink(display?: string): Link`
- `display` teks tampilan opsional untuk tautan.
- Mengembalikan objek Link yang dirender sebagai tautan yang berfungsi.
- Contoh: `file.asLink()`
### `hasLink()`
`file.hasLink(otherFile: file | string): boolean`
- `otherFile` adalah objek file lain atau path string yang diperiksa.
- Mengembalikan true jika `file` menautkan ke `otherFile`.
- Contoh: `file.hasLink(otherFile)` mengembalikan `true` jika ada tautan dari `file` ke `otherFile`.
### `hasProperty()`
`file.hasProperty(name: string): boolean`
- Mengembalikan true jika catatan memiliki properti file yang diberikan.
### `hasTag()`
`file.hasTag(...values: string): boolean`
- `values` adalah satu atau lebih nama tag.
- Mengembalikan true jika file memiliki salah satu tag dalam `values`.
- Contoh: `file.hasTag("tag1", "tag2")` mengembalikan `true` jika file memiliki tag `#tag1` atau `#tag2`. Ini juga mencakup [[Tag#Tag bersarang|tag bersarang]], seperti `#tag1/a` atau `#tag2/b`.
### `inFolder()`
`file.inFolder(folder: string): boolean`
- `folder` adalah nama folder yang diperiksa.
- Mengembalikan true jika file berada di folder yang ditentukan atau salah satu sub-foldernya.
- Contoh: `file.inFolder("notes")` mengembalikan `true`.
## Object
Fungsi yang dapat Anda gunakan dengan kumpulan pasangan kunci-nilai seperti `{"a": 1, "b": 2}`.
### `isEmpty()`
`object.isEmpty(): boolean`
- Mengembalikan true jika objek tidak memiliki properti sendiri.
- Contoh: `{}.isEmpty()` mengembalikan `true`.
### `keys()`
`object.keys(): list`
- Mengembalikan daftar yang berisi kunci-kunci dari objek.
### `values()`
`object.values(): list`
- Mengembalikan daftar yang berisi nilai-nilai dari objek.
## Ekspresi reguler
Fungsi yang dapat Anda gunakan dengan pola ekspresi reguler. Contoh: `/abc/`.
### `matches()`
`regexp.matches(value: string): boolean`
- `value` adalah string yang diuji.
- Mengembalikan true jika ekspresi reguler cocok dengan `value`.
- Contoh: `/abc/.matches("abcde")` mengembalikan `true`.