Methodes
Methodes zijn functies die je aanroept op een waarde met de punt-notatie: waarde.methode().
Array methodes
Methodes voor het werken met lijsten van waarden.
Telling en controle
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
count() | Aantal elementen | [1,2,3].count() | 3 |
is_empty() | Is de array leeg? | [].is_empty() | true |
@actions.count() // Aantal acties
@actions[status == "done"].count() // Aantal voltooide acties
@results.is_empty() // Zijn er resultaten?
Elementen selecteren
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
first() | Eerste element | [1,2,3].first() | 1 |
last() | Laatste element | [1,2,3].last() | 3 |
nth(n) | Element op positie n | [1,2,3].nth(1) | 2 |
take(n) | Eerste n elementen | [1,2,3,4].take(2) | [1,2] |
skip(n) | Sla eerste n over | [1,2,3,4].skip(2) | [3,4] |
@actions.first() // Eerste actie
@actions.last() // Laatste actie
@actions.take(5) // Eerste 5 acties
@actions.skip(10).take(10) // Acties 11-20
Null bij lege arrays
first(), last() en nth(n) retourneren null als de array leeg is of de index niet bestaat.
Aggregatie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
sum() | Som van getallen | [1,2,3].sum() | 6 |
avg() | Gemiddelde | [1,2,3].avg() | 2 |
min() | Minimum | [3,1,2].min() | 1 |
max() | Maximum | [3,1,2].max() | 3 |
median() | Mediaan | [1,2,3,4,5].median() | 3 |
@actions.budget.sum() // Totaal budget
@actions.budget.avg() // Gemiddeld budget
@actions.due_date.min() // Vroegste deadline
@actions.due_date.max() // Laatste deadline
@results.score.median() // Mediaan score
Null-waarden
Aggregatiemethodes negeren null-waarden in de berekening.
Transformatie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
sort() | Sorteer oplopend | [3,1,2].sort() | [1,2,3] |
reverse() | Draai volgorde om | [1,2,3].reverse() | [3,2,1] |
unique() | Verwijder duplicaten | [1,1,2,2].unique() | [1,2] |
flat() | Maak geneste arrays plat | [[1,2],[3]].flat() | [1,2,3] |
@actions.budget.sort() // Budgets gesorteerd
@actions.reverse() // Acties in omgekeerde volgorde
@actions.status.unique() // Unieke statussen
@results.actions.flat() // Alle acties van alle resultaten
Tekst samenvoegen
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
join(sep) | Voeg samen met scheidingsteken | ["a","b","c"].join(", ") | "a, b, c" |
@actions.name.join(", ") // "Actie 1, Actie 2, Actie 3"
@results.status.unique().join(" / ") // "done / todo / inprogress"
Datum bereik
| Methode | Beschrijving |
|---|---|
span() | Aantal dagen tussen min en max datum |
@actions.due_date.span() // Projectduur in dagen
Number methodes
Methodes voor het werken met getallen.
Afronding
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
abs() | Absolute waarde | (-5).abs() | 5 |
round() | Afronden | 3.7.round() | 4 |
round(n) | Afronden op n decimalen | 3.14159.round(2) | 3.14 |
floor() | Naar beneden afronden | 3.9.floor() | 3 |
ceil() | Naar boven afronden | 3.1.ceil() | 4 |
(budget / 1000).round() // Afronden op duizenden
(percentage * 100).round(1) // Percentage met 1 decimaal
(-diff).abs() // Altijd positief
Begrenzing
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
clamp(min, max) | Beperk tot bereik | 15.clamp(0, 10) | 10 |
score.clamp(0, 100) // Score tussen 0 en 100
progress.clamp(0, 1) // Voortgang tussen 0 en 1
Conversie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
to_text() | Naar tekst | 42.to_text() | "42" |
format(pattern) | Formatteren | 3.14.format("0.00") | "3.14" |
budget.to_text() // "5000"
(progress * 100).format("0.0") + "%" // "75.5%"
Text methodes
Methodes voor het werken met tekst.
Informatie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
len() | Lengte in tekens | "hello".len() | 5 |
Transformatie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
upper() | Naar hoofdletters | "hello".upper() | "HELLO" |
lower() | Naar kleine letters | "HELLO".lower() | "hello" |
trim() | Verwijder witruimte | " hi ".trim() | "hi" |
status.upper() // "DONE"
name.trim() // Verwijder spaties
Zoeken
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
contains(s) | Bevat substring? | "hello".contains("ell") | true |
starts_with(s) | Begint met? | "hello".starts_with("he") | true |
ends_with(s) | Eindigt met? | "hello".ends_with("lo") | true |
name.contains("urgent") // Bevat "urgent"?
code.starts_with("PRJ-") // Is een project?
file.ends_with(".pdf") // Is een PDF?
Bewerking
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
replace(old, new) | Vervang tekst | "hello".replace("l", "x") | "hexxo" |
substr(start) | Substring vanaf | "hello".substr(2) | "llo" |
substr(start, len) | Substring met lengte | "hello".substr(1, 3) | "ell" |
split(delim) | Splits naar array | "a,b,c".split(",") | ["a","b","c"] |
name.replace("_", " ") // Underscores naar spaties
code.substr(0, 4) // Eerste 4 tekens
tags.split(",") // Comma-separated naar array
Conversie
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
to_number() | Naar getal | "42".to_number() | 42 |
to_date() | Naar datum | "2024-06-15".to_date() | 2024-06-15 |
input.to_number() ?? 0 // Parse getal, 0 als fallback
date_string.to_date() // Parse datum
Conversie kan falen
to_number() en to_date() retourneren null als de conversie niet lukt.
Date methodes
Methodes voor het werken met datums.
Datumverschil
| Methode | Beschrijving |
|---|---|
days_until() | Dagen tot deze datum (vanaf today) |
days_until(d) | Dagen van deze datum tot d |
days_since() | Dagen sinds deze datum (vanaf today) |
days_since(d) | Dagen van d tot deze datum |
days_to(d) | Dagen tot datum d |
due_date.days_until() // Dagen tot deadline
start_date.days_since() // Dagen sinds start
end_date.days_since(start_date) // Projectduur
Positief vs negatief
days_until()is positief voor datums in de toekomstdays_since()is positief voor datums in het verleden
Datumrekenen
| Methode | Beschrijving | Voorbeeld |
|---|---|---|
add_days(n) | Tel n dagen op | today.add_days(7) |
add_weeks(n) | Tel n weken op | today.add_weeks(2) |
add_months(n) | Tel n maanden op | today.add_months(1) |
today.add_days(14) // Over 2 weken
due_date.add_weeks(-1) // Week voor deadline
start_date.add_months(3) // Kwartaal later
Datumonderdelen
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
year() | Jaartal | 2024-06-15.year() | 2024 |
month() | Maand (1-12) | 2024-06-15.month() | 6 |
day() | Dag (1-31) | 2024-06-15.day() | 15 |
weekday() | Weekdag (1=ma, 7=zo) | 2024-06-15.weekday() | 6 |
due_date.year() // Jaar van deadline
due_date.month() // Maand van deadline
due_date.weekday() // Dag van de week (1-7)
Periode-grenzen
| Methode | Beschrijving |
|---|---|
start_of_week() | Maandag van de week |
start_of_month() | Eerste dag van de maand |
end_of_month() | Laatste dag van de maand |
today.start_of_week() // Maandag deze week
today.start_of_month() // Begin van de maand
today.end_of_month() // Einde van de maand
Formatteren
| Methode | Beschrijving |
|---|---|
format(pattern) | Formatteer met strftime patroon |
due_date.format("%d-%m-%Y") // "15-06-2024"
due_date.format("%B %Y") // "June 2024"
due_date.format("%A") // "Saturday"
Veelgebruikte format patronen:
| Patroon | Betekenis | Voorbeeld |
|---|---|---|
%Y | Jaar (4 cijfers) | 2024 |
%y | Jaar (2 cijfers) | 24 |
%m | Maand (01-12) | 06 |
%d | Dag (01-31) | 15 |
%H | Uur (00-23) | 14 |
%M | Minuut (00-59) | 30 |
%B | Maandnaam (volledig) | June |
%b | Maandnaam (kort) | Jun |
%A | Dagnaam (volledig) | Saturday |
%a | Dagnaam (kort) | Sat |
Boolean methodes
| Methode | Beschrijving | Voorbeeld | Resultaat |
|---|---|---|---|
to_text() | Naar tekst | true.to_text() | "true" |
Auto-mapping over arrays
Scalar methodes (methodes die werken op enkele waarden) worden automatisch gemapt over arrays:
// Zonder auto-mapping zou je dit moeten doen:
// (niet mogelijk in DXL)
// Met auto-mapping:
@actions.budget.round() // Array van afgeronde budgets
@actions.name.upper() // Array van namen in hoofdletters
@actions.due_date.days_until() // Array van dagen tot deadlines
Scalar methodes die auto-mappen:
- Date:
days_until,days_since,days_to,add_days,add_weeks,add_months,year,month,day,weekday,start_of_week,start_of_month,end_of_month,format - Number:
abs,round,floor,ceil,clamp - Text:
len,upper,lower,trim,contains,starts_with,ends_with,replace,substr,split,to_number,to_text,to_date
Null propagatie
Scalar methodes op null retourneren null in plaats van een fout:
null.upper() // null
null.days_until() // null
null.round() // null
Dit maakt het makkelijk om met optionele velden te werken:
optional_date?.days_until() ?? 0 // 0 als datum niet ingevuld