As funções são usadas no [[Introdução ao Bases|Bases]] para manipular dados de [[Propriedades|propriedades]] em [[Vistas#Filtros|filtros]] e [[Fórmulas|fórmulas]]. Consulte a referência de [[Sintaxe de Bases|sintaxe de Bases]] para saber mais sobre como pode utilizar funções. Para além das funções [[Funções#Global|Globais]], a maioria das funções depende do tipo de valor que pretende modificar: - [[Funções#Qualquer|Qualquer]] - [[Funções#Data|Data]] - [[Funções#String|String]] - [[Funções#Número|Número]] - [[Funções#Lista|Lista]] - [[Funções#Ligação|Ligação]] - [[Funções#Ficheiro|Ficheiro]] - [[Funções#Objeto|Objeto]] - [[Funções#Expressão regular|Expressão regular]] ## Global As funções globais são utilizadas sem um tipo. ### `escapeHTML()` `escapeHTML(html: string): string` - Escapa caracteres especiais numa string para a tornar segura para inclusão em HTML. ### `date()` `date(date: string): date` - `date(string): date` analisa a string fornecida e retorna um objeto de data. - A string `date` deve estar no formato `YYYY-MM-DD HH:mm:ss`. ### `duration()` `duration(value: string): duration` - Analisa uma string como uma duração. Consulte a [[Sintaxe de Bases#Aritmética de datas|secção de aritmética de datas]] para o formato da string `value`. - As durações não precisam de ser explicitamente analisadas ao realizar aritmética de datas (por exemplo, `now() + '1d'`), mas precisam ao realizar aritmética sobre durações (por exemplo, `now() + (duration('1d') * 2)`). - Ao realizar aritmética de durações com escalares, a duração deve estar à esquerda. Por exemplo `duration('5h') * 2`, em vez de `2 * duration('5h')`. ### `file()` `file(path: string | file | url): file` - Retorna um objeto de ficheiro para o ficheiro ou caminho fornecido. - Exemplo: `file(link("[[filename]]"))` ou `file("path to file")`. ### `html()` `html(html: string): html` - Converte uma string num excerto de código que é renderizado como HTML. ### `if()` `if(condition: any, trueResult: any, falseResult?: any): any` - `condition` é a condição a ser avaliada. - `trueResult` é o resultado se a condição for verdadeira. - `falseResult` é o resultado opcional se a condição for falsa. Se não for fornecido, assume-se como `null`. - Retorna o `trueResult` se `condition` for verdadeira, ou for um valor truthy, ou `falseResult` caso contrário. - Exemplo: `if(isModified, "Modified", "Unmodified")` ### `image()` `image(path: string | file | url): image` - Retorna um objeto de imagem que renderiza a imagem na vista. - Exemplo: `image(image-property)` ou `image("https://obsidian.md/images/obsidian-logo-gradient.svg")` ### `icon()` `icon(name: string): icon` - Retorna um valor que será renderizado como um ícone numa vista. O nome do ícone deve corresponder a um ícone Lucide suportado. - Exemplo: `icon("arrow-right")`. ### `link()` `link(path: string | file, display?: value): Link` - Analisa uma string `path` e retorna um objeto Link que é renderizado como uma ligação para o caminho fornecido. - Opcionalmente, forneça o parâmetro `display` para alterar o texto que a ligação apresenta. ### `list()` `list(element: any): List` - Se o elemento fornecido for uma lista, retorna-o sem modificação. - Caso contrário, envolve o `element` fornecido numa lista, criando uma lista com um único elemento. - Esta função pode ser útil quando uma propriedade contém uma mistura de strings ou listas ao longo do cofre. - Exemplo: `list("value")` retorna `["value"]`. ### `max()` `max(value1: number, value2: number...): number` - Retorna o maior de todos os números fornecidos. ### `min()` `min(value1: number, value2: number...): number` - Retorna o menor de todos os números fornecidos. ### `now()` `now(): date` - `now()` retorna um objeto de data que representa o momento atual. ### `number()` `number(input: any): number` - Tenta retornar o valor fornecido como um número. - Objetos de data serão retornados como milissegundos desde a época unix. - Booleanos retornam 1 ou 0. - Strings serão analisadas como um número e retornam um erro se o resultado for inválido. - Exemplo, `number("3.4")` retorna `3.4`. ### `duration()` `duration(value: string): duration` - Analisa uma string como uma duração. Consulte a [[Sintaxe de Bases#Aritmética de datas|secção de aritmética de datas]] para o formato da string `value`. - As durações não precisam de ser explicitamente analisadas ao realizar aritmética de datas (por exemplo, `now() + '1d'`), mas precisam ao realizar aritmética sobre durações (por exemplo, `now() + (duration('1d') * 2)`). - Ao realizar aritmética de durações com escalares, a duração deve estar à esquerda. Por exemplo `duration('5h') * 2`, em vez de `2 * duration('5h')`. ### `today()` `today(): date` - `today()` retorna um objeto de data que representa a data atual. A parte da hora é definida como zero. ### `random()` `random(): number` - `random()` retorna um número aleatório entre 0 e 1. - A geração do número é atualizada sempre que uma vista é carregada. Navegar entre vistas altera o número aleatório. ## Qualquer Funções que pode utilizar com qualquer valor. Isto inclui strings (p. ex. `"hello"`), números (p. ex. `42`), listas (p. ex. `[1,2,3]`), objetos e mais. ### `isTruthy()` `any.isTruthy(): boolean` - Retorna o valor convertido para booleano. - Exemplo: `1.isTruthy()` retorna `true`. ### `isType()` `any.isType(type: string): boolean` - Retorna verdadeiro se o valor for do tipo fornecido. - Exemplo: `"example".isType("string")` e `true.isType("boolean")` ambos retornam verdadeiro. ### `toString()` `any.toString(): string` - Retorna a representação em string de qualquer valor. - Exemplo: `123.toString()` retorna `"123"`. ## Data Funções que pode utilizar com uma data e hora, como `date("2025-05-27")`. Comparações de datas podem ser feitas utilizando [[Sintaxe de Bases#Aritmética de datas|aritmética de datas]]. ### Campos Os seguintes campos estão disponíveis para datas: | Campo | Tipo | Descrição | | ------------------ | -------- | ----------------------------- | | `date.year` | `number` | O ano da data | | `date.month` | `number` | O mês da data (1–12) | | `date.day` | `number` | O dia do mês | | `date.hour` | `number` | A hora (0–23) | | `date.minute` | `number` | O minuto (0–59) | | `date.second` | `number` | O segundo (0–59) | | `date.millisecond` | `number` | O milissegundo (0–999) | ### `date()` `date.date(): date` - Retorna um objeto de data com a hora removida. - Exemplo: `now().date().format("YYYY-MM-DD HH:mm:ss")` retorna uma string como "2025-12-31 00:00:00" ### `format()` `date.format(format: string): string` - `format` é a string de formatação (p. ex., `"YYYY-MM-DD"`). - Retorna a data formatada conforme especificado por uma string de formato Moment.js. - Exemplo: `date.format("YYYY-MM-DD")` retorna `"2025-05-27"`. ### `time()` `date.time(): string` - Retorna a hora. - Exemplo: `now().time()` retorna uma string como "23:59:59" ### `relative()` `date.relative(): string` - Retorna uma comparação legível da data com a data/hora atual. - Exemplo: `file.mtime.relative()` retorna um valor como `3 days ago`. ### `isEmpty()` `date.isEmpty(): boolean` - Retorna falso. ## String Funções que pode utilizar com uma sequência de caracteres, como `"hello"`. ### Campos | Campo | Tipo | Descrição | | --------------- | -------- | -------------------------------------- | | `string.length` | `number` | O número de caracteres na string | ### `contains()` `string.contains(value: string): boolean` - `value` é a substring a pesquisar. - Retorna verdadeiro se a string contiver `value`. - Exemplo: `"hello".contains("ell")` retorna `true`. ### `containsAll()` `string.containsAll(...values: string): boolean` - `values` são uma ou mais substrings a pesquisar. - Retorna verdadeiro se a string contiver todos os `values`. - Exemplo: `"hello".containsAll("h", "e")` retorna `true`. ### `containsAny()` `string.containsAny(...values: string): boolean` - `values` são uma ou mais substrings a pesquisar. - Retorna verdadeiro se a string contiver pelo menos um dos `values`. - Exemplo: `"hello".containsAny("x", "y", "e")` retorna `true`. ### `endsWith()` `string.endsWith(query: string): boolean` - `query` é a string a verificar no final. - Retorna verdadeiro se esta string terminar com `query`. - Exemplo: `"hello".endsWith("lo")` retorna `true`. ### `isEmpty()` `string.isEmpty(): boolean` - Retorna verdadeiro se a string não tiver caracteres, ou não estiver presente. - Exemplo: `"Hello world".isEmpty()` retorna `false`. - Exemplo: `"".isEmpty()` retorna `true`. ### `lower()` `string.lower(): string` - Retorna a string convertida para minúsculas. ### `replace()` `string.replace(pattern: string | Regexp, replacement: string): string` - `pattern` é o valor a pesquisar na string alvo. - `replacement` é o valor para substituir os padrões encontrados. - Se `pattern` for uma string, todas as ocorrências do padrão serão substituídas. - Se `pattern` for uma Regexp, a flag `g` determina se apenas a primeira ou todas as ocorrências são substituídas. - Exemplo: `""a:b:c:d".replace(/:/, "-")` retorna `"a-b,c,d"`, enquanto `"a:b:c:d".replace(/:/g, "-")` retorna `"a-b-c-d"`. ### `repeat()` `string.repeat(count: number): string` - `count` é o número de vezes a repetir a string. - Exemplo: `"123".repeat(2)` retorna `"123123"` ### `reverse()` `string.reverse(): string` - Inverte a string. - Exemplo: `"hello".reverse()` retorna `"olleh"`. ### `slice()` `string.slice(start: number, end?: number): string` - `start` é o índice inicial inclusivo. - `end` é o índice final exclusivo opcional. - Retorna uma substring de `start` (inclusivo) até `end` (exclusivo). - Exemplo: `"hello".slice(1, 4)` retorna `"ell"`. - Se `end` for omitido, extrai até ao final da string. ### `split()` `string.split(separator: string | Regexp, n?: number): list` - `separator` é o delimitador para dividir a string. - `n` é um número opcional. Se fornecido, o resultado terá os primeiros `n` elementos. - Retorna uma lista de substrings. - Exemplo: `"a,b,c,d".split(",", 3)` ou `"a,b,c,d".split(/,/, 3)` retorna `["a", "b", "c"]`. ### `startsWith()` `string.startsWith(query: string): boolean` - `query` é a string a verificar no início. - Retorna verdadeiro se esta string começar com `query`. - Exemplo: `"hello".startsWith("he")` retorna `true`. ### `title()` `string.title(): string` - Converte a string para capitalização de título (primeira letra de cada palavra em maiúscula). - Exemplo: `"hello world".title()` retorna `"Hello World"`. ### `trim()` `string.trim(): string` - Remove espaços em branco de ambas as extremidades da string. - Exemplo: `" hi ".trim()` retorna `"hi"`. ## Número Funções que pode utilizar com valores numéricos como `42`, `3.14`. ### `abs()` `number.abs(): number` - Retorna o valor absoluto do número. - Exemplo: `(-5).abs()` retorna `5`. ### `ceil()` `number.ceil(): number` - Arredonda o número para cima para o inteiro mais próximo. - Exemplo: `(2.1).ceil()` retorna `3`. ### `floor()` `number.floor(): number` - Arredonda o número para baixo para o inteiro mais próximo. - Exemplo: `(2.9).floor()` retorna `2`. ### `isEmpty()` `number.isEmpty(): boolean` - Retorna verdadeiro se o número não estiver presente. - Exemplo: `5.isEmpty()` retorna `false`. ### `round()` `number.round(digits: number): number` - Arredonda o número para o inteiro mais próximo. - Opcionalmente, forneça um parâmetro `digits` para arredondar para esse número de casas decimais. - Exemplo: `(2.5).round()` retorna `3`, e `(2.3333).round(2)` retorna `2.33`. ### `toFixed()` `number.toFixed(precision: number): string` - `precision` é o número de casas decimais. - Retorna uma string com o número em notação de ponto fixo. - Exemplo: `(3.14159).toFixed(2)` retorna `"3.14"`. ## Lista Funções que pode utilizar com uma lista ordenada de elementos, como `[1, 2, 3]`. ### Campos | Campo | Tipo | Descrição | | ------------- | -------- | ------------------------------------- | | `list.length` | `number` | O número de elementos na lista | ### `contains()` `list.contains(value: any): boolean` - `value` é o elemento a pesquisar. - Retorna verdadeiro se a lista contiver `value`. - Exemplo: `[1,2,3].contains(2)` retorna `true`. ### `containsAll()` `list.containsAll(...values: any): boolean` - `values` são um ou mais elementos a pesquisar. - Retorna verdadeiro se a lista contiver todos os `values`. - Exemplo: `[1,2,3].containsAll(2,3)` retorna `true`. ### `containsAny()` `list.containsAny(...values: any): boolean` - `values` são um ou mais elementos a pesquisar. - Retorna verdadeiro se a lista contiver pelo menos um dos `values`. - Exemplo: `[1,2,3].containsAny(3,4)` retorna `true`. ### `filter()` `list.filter(value: Boolean): list` - Filtra os elementos desta lista chamando uma função de filtro, que utiliza as variáveis `index` e `value`, e retorna um valor booleano para indicar se o elemento deve ser mantido. - `value` é o valor de um item na lista. - `index` é o índice do valor atual. - Exemplo: `[1,2,3,4].filter(value > 2)` retorna `[3,4]`. ### `flat()` `list.flat(): list` - Aplaina listas aninhadas numa única lista. - Exemplo: `[1,[2,3]].flat()` retorna `[1,2,3]`. ### `isEmpty()` `list.isEmpty(): boolean` - Retorna verdadeiro se a lista não tiver elementos. - Exemplo: `[1,2,3].isEmpty()` retorna `false`. ### `join()` `list.join(separator: string): string` - `separator` é a string a inserir entre os elementos. - Junta todos os elementos da lista numa única string. - Exemplo: `[1,2,3].join(",")` retorna `"1,2,3"`. ### `map()` `list.map(value: Any): list` - Transforma cada elemento desta lista chamando uma função de conversão, que utiliza as variáveis `index` e `value`, e retorna o novo valor a ser colocado na lista. - `value` é o valor de um item na lista. - `index` é o índice do valor atual. - Exemplo: `[1,2,3,4].map(value + 1)` retorna `[2,3,4,5]`. ### `reduce()` `list.reduce(expression: Any, acc: Any): Any` - Reduz os elementos desta lista num único valor executando uma expressão para cada elemento. A expressão pode utilizar as variáveis `index`, `value` e `acc` (o acumulador), e deve retornar o próximo valor do acumulador. - `expression` é avaliada para cada elemento da lista. - `value` é o valor do item atual na lista. - `index` é o índice do item atual. - `acc` é o valor acumulado até ao momento. - Exemplo (soma): `[1,2,3].reduce(acc + value, 0)` retorna `6`. - Exemplo (máximo): `values.filter(value.isType("number")).reduce(if(acc == null || value > acc, value, acc), null)` retorna o maior número, ou `null` se não houver nenhum. ### `reverse()` `list.reverse(): list` - Inverte a lista no local. - Exemplo: `[1,2,3].reverse()` retorna `[3,2,1]`. ### `slice()` `list.slice(start: number, end?: number): list` - `start` é o índice inicial inclusivo. - `end` é o índice final exclusivo opcional. - Retorna uma cópia superficial de uma porção da lista de `start` (inclusivo) até `end` (exclusivo). - Exemplo: `[1,2,3,4].slice(1,3)` retorna `[2,3]`. - Se `end` for omitido, extrai até ao final da lista. ### `sort()` `list.sort(): list` - Ordena os elementos da lista do menor para o maior. - Exemplo: `[3, 1, 2].sort()` retorna `[1, 2, 3]`. - Exemplo: `["c", "a", "b"].sort()` retorna `["a", "b", "c"]`. ### `unique()` `list.unique(): list` - Remove elementos duplicados. - Exemplo: `[1,2,2,3].unique()` retorna `[1,2,3]`. ## Ligação Funções que pode utilizar numa ligação. As ligações podem ser criadas a partir de um ficheiro (`file.asLink()`) ou de um caminho (`link("path")`). ### `asFile()` `link.asFile(): file` - Retorna um objeto de ficheiro se a ligação referir um ficheiro local válido. - Exemplo: `link("[[filename]]").asFile()` ### `linksTo()` `link.linksTo(file): boolean` - Retorna se o ficheiro representado pela `link` tem uma ligação para `file`. ## Ficheiro Funções que pode utilizar com ficheiros no cofre. ### Campos Os seguintes campos estão disponíveis para ficheiros: | Campo | Tipo | Descrição | | ----------------- | -------- | ---------------------------------------------------------- | | `file.name` | `string` | O nome deste ficheiro. | | `file.basename` | `string` | O nome deste ficheiro sem a extensão. | | `file.path` | `string` | O caminho completo para este ficheiro, relativo à raiz do cofre. | | `file.folder` | `string` | O caminho completo para a pasta principal. | | `file.ext` | `string` | A extensão deste ficheiro. | | `file.size` | `number` | O tamanho deste ficheiro, em bytes. | | `file.properties` | `object` | As propriedades da nota para este ficheiro. | | `file.tags` | `list` | As etiquetas deste ficheiro. Inclui etiquetas inline. | | `file.links` | `list` | As ligações internas dentro deste ficheiro. | | `file.ctime` | `date` | Marca temporal de quando este ficheiro foi criado. | | `file.mtime` | `date` | Marca temporal de quando este ficheiro foi modificado pela última vez. | ### `asLink()` `file.asLink(display?: string): Link` - `display` texto de apresentação opcional para a ligação. - Retorna um objeto Link que é renderizado como uma ligação funcional. - Exemplo: `file.asLink()` ### `hasLink()` `file.hasLink(otherFile: file | string): boolean` - `otherFile` é outro objeto de ficheiro ou caminho em string a verificar. - Retorna verdadeiro se `file` tiver uma ligação para `otherFile`. - Exemplo: `file.hasLink(otherFile)` retorna `true` se existir uma ligação de `file` para `otherFile`. ### `hasProperty()` `file.hasProperty(name: string): boolean` - Retorna verdadeiro se a nota tiver a propriedade de ficheiro indicada. ### `hasTag()` `file.hasTag(...values: string): boolean` - `values` são um ou mais nomes de etiquetas. - Retorna verdadeiro se o ficheiro tiver qualquer uma das etiquetas em `values`. - Exemplo: `file.hasTag("tag1", "tag2")` retorna `true` se o ficheiro tiver a etiqueta `#tag1` ou `#tag2`. Também inclui quaisquer [[Etiquetas#Etiquetas aninhadas|etiquetas aninhadas]], como `#tag1/a` ou `#tag2/b`. ### `inFolder()` `file.inFolder(folder: string): boolean` - `folder` é o nome da pasta a verificar. - Retorna verdadeiro se o ficheiro estiver na pasta especificada ou numa das suas subpastas. - Exemplo: `file.inFolder("notes")` retorna `true`. ## Objeto Funções que pode utilizar com uma coleção de pares chave-valor, como `{"a": 1, "b": 2}`. ### `isEmpty()` `object.isEmpty(): boolean` - Retorna verdadeiro se o objeto não tiver propriedades próprias. - Exemplo: `{}.isEmpty()` retorna `true`. ### `keys()` `object.keys(): list` - Retorna uma lista contendo as chaves do objeto. ### `values()` `object.values(): list` - Retorna uma lista contendo os valores do objeto. ## Expressão regular Funções que pode utilizar com um padrão de expressão regular. Exemplo: `/abc/`. ### `matches()` `regexp.matches(value: string): boolean` - `value` é a string a testar. - Retorna verdadeiro se a expressão regular corresponder a `value`. - Exemplo: `/abc/.matches("abcde")` retorna `true`.