Skip to main content

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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijving
span()Aantal dagen tussen min en max datum
@actions.due_date.span()                   // Projectduur in dagen

Number methodes

Methodes voor het werken met getallen.

Afronding

MethodeBeschrijvingVoorbeeldResultaat
abs()Absolute waarde(-5).abs()5
round()Afronden3.7.round()4
round(n)Afronden op n decimalen3.14159.round(2)3.14
floor()Naar beneden afronden3.9.floor()3
ceil()Naar boven afronden3.1.ceil()4
(budget / 1000).round()                    // Afronden op duizenden
(percentage * 100).round(1) // Percentage met 1 decimaal
(-diff).abs() // Altijd positief

Begrenzing

MethodeBeschrijvingVoorbeeldResultaat
clamp(min, max)Beperk tot bereik15.clamp(0, 10)10
score.clamp(0, 100)                        // Score tussen 0 en 100
progress.clamp(0, 1) // Voortgang tussen 0 en 1

Conversie

MethodeBeschrijvingVoorbeeldResultaat
to_text()Naar tekst42.to_text()"42"
format(pattern)Formatteren3.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

MethodeBeschrijvingVoorbeeldResultaat
len()Lengte in tekens"hello".len()5

Transformatie

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijvingVoorbeeldResultaat
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

MethodeBeschrijving
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 toekomst
  • days_since() is positief voor datums in het verleden

Datumrekenen

MethodeBeschrijvingVoorbeeld
add_days(n)Tel n dagen optoday.add_days(7)
add_weeks(n)Tel n weken optoday.add_weeks(2)
add_months(n)Tel n maanden optoday.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

MethodeBeschrijvingVoorbeeldResultaat
year()Jaartal2024-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

MethodeBeschrijving
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

MethodeBeschrijving
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:

PatroonBetekenisVoorbeeld
%YJaar (4 cijfers)2024
%yJaar (2 cijfers)24
%mMaand (01-12)06
%dDag (01-31)15
%HUur (00-23)14
%MMinuut (00-59)30
%BMaandnaam (volledig)June
%bMaandnaam (kort)Jun
%ADagnaam (volledig)Saturday
%aDagnaam (kort)Sat

Boolean methodes

MethodeBeschrijvingVoorbeeldResultaat
to_text()Naar teksttrue.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