Skip to main content

Wolf DSL Functions Reference

Built-in functions for data transformation, manipulation, and business logic. Functions can be used in expressions within Value nodes, Mapping nodes, and conditional statements.

Function Categories

String Functions

Functions for text manipulation and string processing:

FunctionDescriptionExample
concat()Concatenate multiple stringsconcat("Hello", " ", "World")
join()Join array elements with delimiterjoin(names, ", ")
split()Split string by delimitersplit("a,b,c", ",")
contains()Check if string contains substringcontains(text, "search")
replace()Replace text in stringreplace(text, "old", "new")
upperCase()Convert to uppercaseupperCase("hello")
lowerCase()Convert to lowercaselowerCase("WORLD")
length()Get string/array lengthlength("hello")

Date Functions

Functions for date manipulation and formatting:

FunctionDescriptionExample
currentDate()Get current date/timecurrentDate("yyyy-MM-dd")
dateFormat()Format dates between formatsdateFormat("ms", "yyyy-MM-dd", timestamp)
addToDate()Add time to dateaddToDate(date, "yyyy-MM-dd", 30, "Days")
dayDifference()Calculate days between datesdayDifference(start, end, "yyyy-MM-dd")
dayOfWeek()Get day of weekdayOfWeek("2023-12-25", "yyyy-MM-dd")
monthName()Get month namemonthName("2023-12-25", "yyyy-MM-dd")

Collection Functions

Functions for array and list manipulation:

FunctionDescriptionExample
filter()Filter array by conditionfilter(items, item -> item.active == true)
map()Transform array elementsmap(items, item -> item.name)
sort()Sort array elementssort(items, item.priority)
dedup()Remove duplicate elementsdedup(items)
shuffle()Randomize array ordershuffle(items)
findFirst()Find first matching elementfindFirst(items, item -> item.id == "123")
last()Get last elementlast(items)
remove()Remove elements by conditionremove(items, item -> item.expired == true)

Utility Functions

General purpose utility functions:

FunctionDescriptionExample
uuid()Generate unique identifieruuid()
json()Convert to JSON stringjson(object)
pickFirst()Return first non-null valuepickFirst(val1, val2, "default")
extract()Extract substring by rangeextract(text, range)
currencyFormat()Format currency valuescurrencyFormat(123.45, "DECIMAL")
translateUnicode()Convert Unicode characterstranslateUnicode(text)

Math Functions

Mathematical operations and calculations:

FunctionDescriptionExample
sum()Sum array valuessum(numbers)
count()Count elementscount(items)

Custom Functions

User-defined function integration:

FunctionDescriptionExample
custom()Call custom functioncustom("myFunction", arg1, arg2)

Usage in Wolf DSL

Functions can be used in several contexts:

In Value Nodes

value dynamicData -> UserData {
id: ${uuid()}
name: ${upperCase("john doe")}
email: ${lowerCase("USER@EXAMPLE.COM")}
timestamp: ${currentDate("yyyy-MM-dd'T'HH:mm:ss'Z'")}
}

In Mapping Transformations

Mapping userTransform input RawUser output ProcessedUser {
ProcessedUser.fullName = concat(RawUser.firstName, " ", RawUser.lastName)
ProcessedUser.activeItems = filter(RawUser.items, item -> item.active == true)
ProcessedUser.itemCount = length(ProcessedUser.activeItems)
ProcessedUser.lastLoginFormatted = dateFormat("ms", "MMM dd, yyyy", RawUser.lastLogin)
}

In Flow Conditions

Flow dataProcessingFlow {
Start inputData {
transition {
length(inputData.items) > 0 ? processItems : handleEmptyData
}
}
processItems {}
handleEmptyData {}
}

In Service Configurations

Service apiService method POST as callAPI {
Path -> ${"/users/" + uuid()}
@Header RequestId -> ${uuid()}
@Header Timestamp -> ${currentDate("yyyy-MM-dd'T'HH:mm:ss'Z'")}
@Body -> ${json(requestData)}
}

Function Chaining

Functions can be chained together for complex transformations:

processedNames = map(
filter(users, user -> user.isActive == true),
user -> upperCase(concat(user.firstName, " ", user.lastName))
)

formattedDate = dateFormat(
"ms",
"MMM dd, yyyy",
currentDate("ms")
)

uniqueSortedTags = sort(
dedup(
map(products, product -> lowerCase(product.category))
),
tag
)

Error Handling

Functions handle errors gracefully:

  • Null Safety: Most functions handle null inputs gracefully
  • Type Validation: Functions validate input types at runtime
  • Fallback Values: Use pickFirst() for default values
safeValue = pickFirst(data.value, data.fallback, "default")
safeLength = length(data.items) || 0
safeDate = dateFormat("ms", "yyyy-MM-dd", timestamp) || "unknown"

Performance Considerations

  • Collection Functions: Operations like filter() and map() are optimized for large datasets
  • String Functions: Text operations are UTF-8 aware and performant
  • Date Functions: Date parsing and formatting is timezone-aware
  • Caching: Deterministic functions may be cached by the runtime

Next Steps

Explore detailed documentation for each function category:

Quick Reference

Data Validation:

isValid = length(name) > 0 && contains(email, "@")

Function Chaining:

activeUserNames = map(
filter(users, user -> user.status == "active"),
user -> user.name
)