Referencia de Funciones CEL
Referencia completa de todas las funciones integradas disponibles en las expresiones CEL de AutoTalk. Las funciones estan organizadas por categoria.
Core
get(obj, path, default?)
Accede de forma segura a una propiedad anidada a traves de una ruta con puntos.
get(client, "address.city") // "São Paulo"
get(client, "address.zip", "00000-000") // retorna el predeterminado si falta
get(null, "name") // null
get(step(0), "data.results.0.title") // ruta profunda con indice de array
| Param | Tipo | Descripcion |
|---|---|---|
obj | any | Objeto a acceder (seguro para null) |
path | string | Ruta con puntos (ej: "a.b.c") |
default | any | Valor retornado si la ruta no existe (predeterminado: null) |
has(obj, path?)
Verifica si un valor o ruta anidada existe y no es null/undefined.
has(client, "email") // true si client.email esta definido
has(myVar) // true si myVar no es null/undefined
has(obj, "a.b.c") // true si la ruta completa resuelve a no-null
coalesce(...vals)
Retorna el primer valor no-null y no-undefined. Variadica (acepta 2+ argumentos).
coalesce(client.nickname, client.name, "Guest") // el primer no-null gana
coalesce(0, 42) // 0 (no es null!)
coalesce(false, true) // false (no es null!)
coalesce("", "fallback") // "" (no es null!)
coalesce() solo omite null y undefined. Valores como 0, false y "" son validos y se retornan.
now()
Retorna la fecha/hora actual.
now() // fecha/hora actual
format_datetime(now(), "YYYY-MM-DD") // "2024-01-15"
present(val)
Verifica si un valor esta significativamente presente. Retorna false para null, undefined, strings vacias/solo espacios y arrays vacios. Numeros y booleanos siempre se consideran presentes.
present(client.email) // true si es string no vacia
present("") // false
present(" ") // false (solo espacios)
present(0) // true
present([]) // false
present([1, 2]) // true
present(x) reemplaza el patron comun size(trim(coalesce(x, ""))) > 0.
blank(val)
Inverso de present(). Retorna true para null, undefined, strings vacias/solo espacios y arrays vacios.
blank(client.email) // true si es null o vacio
blank("hello") // false
blank(0) // false
Utilidades
pluck(arr, path)
Extrae una propiedad de cada objeto en un array.
pluck(clients, "name") // ["Alice", "Bob", "Carol"]
pluck(tools, "tool.function.name") // ruta profunda soportada
slice(arr, start, end?)
Corta un array de forma segura. Retorna [] para entradas que no son arrays. Soporta indices negativos.
slice(results, 0, 5) // primeros 5 elementos
slice(results, -3) // ultimos 3 elementos
slice(results, 1, -1) // todos excepto el primero y el ultimo
slice(null, 0, 2) // [] (seguro para no-arrays)
defaults(obj, fallbacks)
Fusiona valores de respaldo en un objeto para claves que son null/undefined. Fusion superficial.
defaults(response, {"status": "unknown", "retryable": false})
// Completa status y retryable solo si son null/undefined en response
Como coalesce(), solo los valores null/undefined son reemplazados. 0, false y "" se mantienen.
url_params(base, params)
Construye una URL con parametros de query. Omite valores null y vacios. Codifica automaticamente.
url_params("https://api.example.com/search", {"q": query, "page": 1, "lang": null})
// "https://api.example.com/search?q=hello&page=1" (lang omitido)
truncate(str, maxLen, suffix?)
Trunca una string a una longitud maxima con un sufijo opcional.
truncate("Hello World", 5) // "Hello"
truncate("Hello World", 8, "...") // "Hello..."
truncate(null, 10) // "" (seguro para null)
truncate("Hi", 100) // "Hi" (sin necesidad de truncar)
| Param | Tipo | Descripcion |
|---|---|---|
str | any | Valor a truncar (convertido a string, null retorna "") |
maxLen | number | Longitud maxima del resultado (incluyendo el sufijo) |
suffix | string | Se agrega al truncar (predeterminado: "") |
El sufijo se incluye dentro de maxLen: truncate("Hello World", 8, "...") retorna "Hello..." (8 caracteres).
tpl(template, vars)
Interpolacion simple de string. Reemplaza marcadores {key} con valores de un objeto.
tpl("Hello {name}!", {"name": "Alice"}) // "Hello Alice!"
tpl("*{title}*\n{domain}\n{url}", article) // texto formateado del articulo
tpl("{address.city}, {address.country}", client) // soporte de ruta con puntos
tpl("Hi {name}", {"name": null}) // "Hi " (null → vacio)
| Param | Tipo | Descripcion |
|---|---|---|
template | string | String de plantilla con marcadores {key} |
vars | object | Objeto con valores para interpolar |
join_present(separator, ...values)
Une valores con un separador, omitiendo valores en blanco. Usa las mismas reglas que present(): null, strings vacias/solo espacios y arrays vacios se omiten. 0 y false se mantienen.
join_present(", ", "Alice", "Bob", "Carol") // "Alice, Bob, Carol"
join_present(" - ", title, null, author) // "Title - Author" (null omitido)
join_present(" ", "Hello", "", "World") // "Hello World" (vacio omitido)
join_present(" | ", 0, false, "text") // "0 | false | text" (0/false mantenidos)
join_present(" - ", prefix, text) reemplaza el patron (present(prefix) ? prefix + " - " : "") + text.