Durchsuchbare Dokumentation aufrufen | ZurĂŒck zur DokumentationsĂŒbersicht
Navigation: Dokumentationen agorum core > agorum core fĂŒr Entwickler > agorum core JavaScript-API
Diese Bibliothek bietet Funktionen, um Platzhalter in einen String mit Objekt-Metadaten oder Variablen zu fĂŒllen. Im Fall von Zahlen und Datumswerten legen Sie die Formatierung fest.
let templates = require('common/templates');
templates.fill(template, variables, object, clearEmpty)
| Parameter | Beschreibung | Pflichtfeld |
|---|---|---|
| template | Erwartet einen String, der die zu fĂŒllenden Platzhalter enthĂ€lt. | ja |
| variables | Definiert explizit belegte Variablen. Aufbau { <variable>: <Variablenwert>} |
nein |
| object | Definiert ein Objekt, dessen Metadaten verwendet werden sollen. | nein |
| clearEmpty | Definiert, ob Platzhalter, deren Werte nicht definiert sind, entfernt werden. Der Standard ist false (Platzhalter werden nicht entfernt). |
nein |
Beispiel 1
let objects = require('common/objects');
let user = objects.find('user:roi');
templates.fill('${num:de|0} ${name} ${name:1,2} (${owner.fullName})', { num: 12345678.9 }, user);
Das Ergebnis dieses Aufrufs könnte folgendermaĂen aussehen:
12345678 Testobject Te (Max Mustermann)
Beispiel 2
Bei Variablen muss immer folgendes Format angegeben werden:
{<variable>: <variablenwert>}
let vorname = 'Marta'
let nachname = 'MĂŒller'
let username = templates.fill('${vorname}.${nachname}',{vorname: vorname, nachname: nachname});
let usermail = templates.fill('${vorname}.${nachname}@agorumcore.com', {vorname: vorname, nachname: nachname});
Handelt es sich bei dem Attribut um eine Zeichenkette, können auch nur Teile davon verwendet werden.
Durch die Verwendung der Syntax ${<Attribut>:x,y} wird der Teil vom x-ten bis zum y-ten Zeichen ausgeschnitten, etwa extrahiert ${<Attribut>:2,5} die Zeichen 2 bis 5 (jeweils einschlieĂlich).
Dieses kann in einer JavaScript-Konsole mit folgendem Skript getestet werden:
/* global Packages, sc */
let templates = require('common/templates');
// Ausgabe ohne Tausendertrennung, Dezimaltrennung in Deutsch
// Formatierung Belegen des Strings, der formatiert ausgegeben wird
templates.fill('${str:2}', { str: 'Hier steht ein Text' });
// Ergebnis: Hi
Ausgabe der ersten beiden Zeichen
templates.fill('${str:2}', { str: 'Hier steht ein Text' });
Ergebnis
'Hi'
Ausgabe von Zeichen 2 bis Zeichen 4 jeweils einschlieĂlich (gezĂ€hlt wird ab 1)
// 1234567890123456789
templates.fill('${str:2,4}', { str: 'Hier steht ein Text' });
Ergebnis
'ier'
Ausgabe von Zeichen 2 bis Zeichen -2 (also von hinten gezĂ€hlt) jeweils einschlieĂlich (gezĂ€hlt wird ab 1)
// von hinten gezÀhlt: 9876543210987654321
// 1234567890123456789
templates.fill('${str:2,-2}', { str: 'Hier steht ein Text' });
Ergebnis
'ier steht ein Tex'
Ausgabe von Zeichen -6 (also von hinten gezÀhlt) (gezÀhlt wird ab 1)
// von hinten gezÀhlt: 9876543210987654321
templates.fill('${str:-6}', { str: 'Hier steht ein Text' });
Ergebnis
'n Text'
Sie können folgende Modifikatoren fĂŒr die Template-Formatierung verwenden:
f (Filesystem-Safe): Ersetzt alle fĂŒr Windows-Dateisysteme ungĂŒltigen Sonderzeichen durch _ (Unterstrich). Dies betrifft etwa < > : " | ? * / und weitere Windows-inkompatible Zeichen.l (Lower-Case): Konvertiert alle Zeichen in Kleinbuchstaben.Wenn ein String formatiert wird, der als Name eines Objekts gesetzt wird, können Sie mit der Formatierung :f dafĂŒr sorgen, dass alle Sonderzeichen, die im Windows-Filesystem nicht erlaubt sind, als _ im String ersetzt werden.
Das f muss immer nach dem Doppelpunkt (:) stehen und vor der Zahl.
Beispiel
/* global Packages, sc */
let templates = require('common/templates');
templates.fill('${name:f2}', { name: 'a/' });
// Ergebnis: a_
templates.fill('${name:f}', { name: 'a/b/c' });
// Ergebnis: a_b_c
Der Lower-Case-Modifikator 'l' (kleines L) wird in Template-Platzhaltern verwendet, um Text in Kleinbuchstaben zu konvertieren. Er kann allein oder in Kombination mit anderen Formatierungsoptionen eingesetzt werden.
Syntax-Varianten
${variable:l} // Nur Lower-Case
${variable:f} // Filesystem-Safe (Windows-kompatible Zeichen)
${variable:lf} // Lower-Case + Filesystem-Safe
${variable:fl} // Filesystem-Safe + Lower-Case
${variable:lf1,2} // Lower-Case + Filesystem-Safe mit Substring-Parametern
${variable:fl1,2} // Filesystem-Safe + Lower-Case mit Substring-Parametern
Beispiel-Ausgaben
Gegeben ist der Eingabewert: test: 'TestTest Test*'
| Template-Syntax | Erwartete Ausgabe | Beschreibung |
|---|---|---|
| ${test:l} | testtest test* | Kompletter String in Kleinbuchstaben |
| ${test:lf} | testtest test_ | Kompletter String in Kleinbuchstaben und Sonderzeichen durch Unterstrich ersetzt, jeweils in der angegebenen Reihenfolge |
${test:lf} |
||
| $(test:l2,4) | est | Kompletter String in Kleinbuchstaben und 4 Zeichen ab Position 2 extrahiert |
| $(test:l-5) | test_ | Kompletter String in Kleinbuchstaben, Sonderzeichen durch Unterstrich ersetzt und die letzten 5 Zeichen extrahiert |
${<Name Metadatum>[:Locale[|Formatangabe]]}
| Schreibweise | Beschreibung |
|---|---|
| ${ | Beginn eines Metadatums |
| ${js | Beginn eines einzeiligen JavaScripts |
| ${{js | Beginn eines mehrzeiligen JavaScripts |
| : | Nach dem Doppelpunkt können Sie ein Format angeben. |
| Locale | (optional) Definiert eine Locale. Die Locale besteht aus dem Sprachcode und dem LĂ€ndercode (etwa de-DE fĂŒr deutsch und Deutschland), siehe UnterstĂŒtze Sprachcodes und LĂ€ndercodes. |
| | | Optional, wenn eine Locale und eine Formatangabe angegeben wird. |
| Formatangabe | Optional sind folgende Formatangaben möglich. Wenn Sie die Formatangabe angeben, mĂŒssen Sie zwingend auch die Locale angeben. 0 Number Represent digit # Number Digit, zero shows as absent . Number Decimal separator or monetary decimal separator (Nachkommastellen) - Number Minus sign , Number Grouping separator (Tausendertrennung) E Number Separates mantissa and exponent in scientific notation. ; Subpattern boundary Separates positive and negative subpatterns % Prefix or suffix Multiply by 100 and show as percentage } Ende der Metadatum-Beschreibung oder eines einzeiligen JavaScriptes }} Ende eines mehrzeiligen JavaScriptes |
Sie können die Schreibweise in einer JavaScript-Konsole mit folgendem Beispiel testen:
/* global Packages, sc */
let templates = require('common/templates');
// Ausgabe ohne Tausendertrennung, Dezimaltrennung in Deutsch
// Test fĂŒr die Formatierung einer Zahl
// Metadatum ausgeben Zahl definieren fĂŒr die Testausgabe
templates.fill('${num:de|####.##}', { num: 12345678.987654 });
// Ergebnis: 12345678.99
Ausgabe
Deutsche Nachkommatrennung, ohne Tausendertrennung, 2 Nachkommastellen:
templates.fill('${num:de|####.##}', { num: 12345678.987654 });
Ergebnis
12345678.99
Ausgabe mit Tausendertrennung, Dezimaltrennung in Deutsch
templates.fill('${num:de|#,###.##}', { num: 12345678.987654 });
Ergebnis
12.345.678,99
Beispiel in der fill-Methode mit LĂ€ndercode (Deutsch) und locale (Schweiz)
templates.fill('${num:de-CH|#,###.##}', { num: 12345678.987654 });
Ergebnis
12'345'678.99
Beispiel Ausgabe in % (Zahl wird mit 100 multipliziert)
templates.fill('${num:de|#%}', { num: 0.11 });
Ergebnis
11%
Beispiel mit 2 Formatangaben, einmal fĂŒr positive Zahl, und fĂŒr negative Zahl (num ist negativ)
templates.fill('${num:de|#,###.##;#,###.##-}', { num: -12345678.987654 });
Ergebnis
12.345.678,99-
Beispiel mit 2 Formatangaben, einmal fĂŒr positive Zahl, und fĂŒr negative Zahl (num ist positiv)
templates.fill('${num:de|#,###.##;#,###.##-}', { num: 12345678.987654 });
Ergebnis
12.345.678,99
Beispiel Ausgabe als Ganzzahl (Nachkomma wird gerundet)
templates.fill('${num:de|####}', { num: 12345678.987654 });
Ergebnis
12345679
Beispiel Ausgabe als Ganzzahl mit fĂŒhrenden Nullen
templates.fill('${z:de|000}', {z:3});
Ergebnis
003
Um ein Metadatum mit dem Datentyp Datum zu formatieren, wird folgender Syntax aufgerufen:
${Rechnungsdatum:[LÀnderkennung|]formatstring[|GeschÀftsjahr]}
Hinweis: [LÀnderkennung|] und [|GeschÀftsjahr] sind optional. Wenn GeschÀftsjahr, dann auch LÀnderkennung.
FĂŒr den Formatstring können Sie Folgendes verwenden:
| Symbol | Bedeutung | PrÀsentation |
|---|---|---|
| G |
Ăra |
Text Beispiel: AD |
| yy |
Jahr zweistellig |
Nummer Beispiel: 07 |
| yyyy |
Jahr vierstellig |
Nummer Beispiel: 2007 |
| M |
Monat im Jahr |
Nummer Beispiel: 7 |
| MM |
Monat im Jahr mit 0 |
Nummer Beispiel: 07 |
| MMM |
Monat im Jahr kurz |
Text Beispiel: Sep |
| MMMM |
Monat im Jahr lang |
Text Beispiel: September |
| d |
Tag im Monat |
Nummer Beispiel: 26 |
| h |
Stunde (1â12) |
Nummer Beispiel: 9 |
| H |
Stunde am Tag (0â23) |
Nummer Beispiel: 0 |
| m |
Minute der Stunde |
Nummer Beispiel: 13 |
| s |
Sekunde der Minute |
Nummer Beispiel: 22 |
| S |
Millisekunde |
Nummer Beispiel: 257 |
| E |
Tag der Woche kurz |
Text Beispiel: Mi |
| EEEE |
Tag der Woche lang |
Text Beispiel: Mittwoch |
| D |
Tag im Jahr |
Nummer Beispiel: 304 |
| F |
Tag der Woche im Monat |
Nummer Beispiel: 3 |
| w |
Woche im Jahr |
Nummer Beispiel: 12 |
| W |
Woche im Monat |
Nummer Beispiel: 3 |
| a |
am- und pm-Text |
Text Beispiel: AM |
| k |
Stunde am Tag (1â24) |
Nummer Beispiel: 24 |
| K |
Stunde (0â11) |
Nummer Beispiel: 0 |
| z |
Allgemeine Zeitzone |
Text Beispiel: GMT+02:00 |
| Z |
Zeitzone nach RFC 822 |
Text Beispiel: +0200 |
| ' |
Zeichen fĂŒr unbehandelten Text |
Trennzeichen Beispiel: templates.fill('${date:yyyy\'/\'MM\'/\'dd}'); Ergebnis (wenn heute der 18.02.2021 ist): 2021/02/18 |
| '' |
Einzelnes Hochkomma |
Literal (muss im String als \'\' angegeben werden) Beispiel:' |
| <leer> | VollstÀndiger Zeitstempel nach ISO-8601 in der UTC-Zeitzone | Text Beispiel: 2016-11-27T16:54:36.164Z |
FĂŒr das GeschĂ€ftsjahr können Sie Folgendes verwenden:
| Zeitraum | Nachlaufendes GeschÀftsjahr | Vorauseilendes GeschÀftsjahr |
|---|---|---|
| Januar bis Dezember | M-0 | M+0 |
| Februar bis Januar | M-1 | M+11 |
| MĂ€rz bis Februar | M-2 | M+10 |
| April bis MĂ€rz | M-3 | M+9 |
| Mai bis April | M-4 | M+8 |
| Juni bis Mai | M-5 | M+7 |
| Juli -bis Juni | M-6 | M+6 |
| August bis Juli | M-7 | M+5 |
| September bis August | M-8 | M+4 |
| Oktober bis September | M-9 | M+3 |
| November bis Oktober | M-10 | M+2 |
| Dezember bis November | M-11 | M+1 |
Testen können Sie dies in der JavaScript-Konsole mit folgendem Skript:
/* global Packages, sc */
let templates = require('common/templates');
// Formatierung des Datums: Datum fĂŒr den Test belegen
templates.fill('${datum:yyyy-MM-dd HH:mm:ss}', { datum: new Date(2017, 1, 28, 12, 14, 39) });
// Ergebnis: 2017-02-28 12:14:39
âââââ
Hinweise:
Der Platzhalter date ist reserviert und kann nicht als Wert ĂŒbergeben werden.
date entspricht immer dem aktuellen Datum.
Die folgende Formatierung des Datums ist nicht funktionsfÀhig:
templates.fill('${date:yyyy-MM-dd HH:mm:ss}', { date: new Date(2017, 1, 28, 12, 14, 39) });
Geben Sie dem Platzhalter einen anderen Namen.
new Date() hat folgenden Aufbau:
new Date(year, monthIndex [, day [, hour [, minutes [, seconds [, milliseconds]]]]]);
Als monthIndex geben Sie einen Wert zwischen 0 und 11 an, wobei 0 = Januar und 11 = Dezember ist.
Folgendes Beispiel verdeutlicht die Funktionsweise:
/* global sc */
let templates = require('common/templates');
let datum = new Date(2021, 1, 1);
//Ausgabe: 2021-01-31T23:00:00.000Z
// Formatierung des Datums: Datum fĂŒr den Test belegen
templates.fill('${datum:EEEE}', { datum: datum });
Möchten Sie die aktuelle Kalenderwoche ausgeben, arbeiten Sie mit local-Angaben:
/* global Packages, sc */
let templates = require('common/templates');
// Formatierung des Datums: Datum fĂŒr den Test belegen
templates.fill('${datum:de|w}', { datum: new Date(2021, 1, 1) });
Als Ausgabe wird die Kalenderwoche 5 zurĂŒckgegeben.
Hinweis: Die local-Angaben benötigen Sie bei folgenden Datumswerten:
âą w
âą W
âą EEEE
Beispiel fĂŒr das Datumsformat nach ISO-8601, etwa fĂŒr die Verwendung als Ăbergabeparameter im FileWorkflow oder in Suchanfragen:
let templates = require('common/templates');
let d = new Date('2016-11-27T16:54:36.164Z');
// Formatierung des Datums
let ds = templates.fill('${datum}', {
datum: d
});
d + ' - ' + ds;
Ergebnis (Beispiel Zeitzone Deutschland Winterzeit)
Sun Nov 27 2016 17:54:36 GMT+0100 (CET) - 2016-11-27T16:54:36.164Z
templates.fill('${datum:de|yyyy|M+11}', { datum: new Date(2017, 1, 28, 12, 14, 39) });
Gleiches funktioniert auch, wenn Sie statt M (fĂŒr month) ein H (fĂŒr hour) verwenden:
templates.fill('${datum:de|yyyy|H+11}', { datum: new Date(2017, 1, 28, 12, 14, 39) });
In diesem Fall werden 11 Stunden zum Datum hinzugezÀhlt.
Ergebnis
2018
Hinweis: Die LĂ€nderkennung wird hier fĂŒr die Landesschreibweise des Monats und des Tages verwendet.
templates.fill('${datum:de|EEEE dd MMMM yyyy}', { datum: new Date(2017, 1, 28, 12, 14, 39) });
Ergebnis
Dienstag 28 Februar 2017
Möchten Sie lediglich die Sekunden eines Zeitstempels verwenden, mĂŒssen Sie zwingend zusĂ€tzlich eine LĂ€nderkennung angeben, etwa:
${datum:de|ss}
Der Grund hierfĂŒr ist, dass ss selbst eine LĂ€nderkennung ist und als solche interpretiert wird, wenn sie allein steht.
Wenn Sie eine Ordnerstruktur nach einem Datum anlegen wollen, kombinieren Sie die Funktion createPath(..) mit templates.fill.
Beispiel mit dem aktuellen Datum
..
.
// Sie benötigen einen Ordner, an den sie die neue Struktur anlegen wollen
let folder = objects.find('FolderID');
// Unter diesen Ordner wollen Sie jetzt eine Struktur anlegen im Format yyyy/MM/dd
// Wenn heute der 23.08.2021 ist, dann sieht die Struktur wie folgt aus:
// <Folder>/2021/08/23
let dd = folder.createPath(templates.fill('${myDate:yyyy}/${myDate:MM}/${myDate:dd}', {myDate: new Date()});
// als RĂŒckgabewert wird der letzte Ordner der neu angelegten Struktur zurĂŒck gegeben in diesem falle der Ordner mit dem Namen "23"
..
.
In der fill-Methode können Sie auch ein JavaScript ausfĂŒhren lassen. Mit dem JavaScript fĂŒhren Sie Berechnungen aus und das Ergebnis kann zurĂŒckgegeben werden.
Berechnet wird von links nach rechts. Dies bedeutet, eine JS-Variable aus einem JS-Skript kann in einem nÀchsten JS-Skript, das rechts davon steht, weiter verwendet werden.
Testen kann man dieses mit folgendem Skript in der JavaScript-Konsole:
/* global Packages, sc */
let templates = require('common/templates');
// num formatiert ausgeben num im JS verwenden ab hier die Metadaten fĂŒr den Test definieren
templates.fill('${num:de|000000.0000} - ${js: i = global.num + 123.88;i;}', { num: 234.998 });
// Ergebnis: '000234,9980 - 358.878'
Der Unterschied zwischen ${js:.. und ${{js:.. ist folgender:
Verwenden Sie bei kleinen ProgrammstĂŒcken, die nur einzeilig sind, Folgendes:
${js: ... }
Bei gröĂeren ProgrammstĂŒcken, die ĂŒber mehrere Zeilen besser lesbar sind:
${{js:....}}
Tipp: Verwenden Sie einen JavaScript-Editor fĂŒr das Erstellen des JavaScripts, das zwischen ${{js: ... und .... }} steht. Damit lassen sich Fehler vermeiden, da diese in dem Editor sofort angezeigt werden.
Berechnet wird von links nach rechts. Dies bedeutet, eine JS-Variable aus einem JS-Skript kann in einem nÀchsten JS-Skript, das rechts davon steht, weiter verwendet werden.
templates.fill('${num:de|000000.0000} - ${{js: i = global.num + 123.88; i;}} - ${js: i - 10;}',
{ num: 234.998 });
Ergebnis
'000234,9980 - 358.878 - 348.878'
Im Standard werden die Skripte unter /agorum/roi/Scripting/Libraries/default automatisch geladen. Darin sind die beiden DocForm-Scripte transform und validate enthalten. Aus historischen GrĂŒnden ist auch noch das Skript AC enthalten, um die AbwĂ€rtskompatibilitĂ€t zu erhalten. FĂŒr diese Skripte muss kein require durchgefĂŒhrt werden.
Achtung: Verlangsamung des Prozesses durch weitere Skripte. Legen Sie keine weiteren Skripte in den oben aufgefĂŒhrten Ordner, da diese immer gezogen werden und den Prozess dadurch verlangsamen. Ăberlegen Sie, ob ein solches Skript nicht innerhalb der fill-Methode aufgerufen wird, sondern einen Schritt zuvor.
Beispiel
templates.fill('${js: transform(test).remove(/[^0-9]+/g).value() }', {
test: 'XY-00-12345'
});
Ergebnis
'0012345'
In der fill-Funktion kann auch ein find ausgefĂŒhrt. Mit dem find und einer ID/UUID kann ein Objekt in agorum core gesucht werden, das als Grundlage zur Ersetzung der Variablen dient.
Minimales Beispiel
templates.fill('${find(uuid).~metadatum}', {
uuid: '1234-1234-1234-1234' //Ersetzen Sie die UUID mit der UUID eines realen Objekts Ihrer agorum core-Installation
});
Erweitertes Beispiel 1: Neuen Dateinamen durch gesetztes Metadatum erzeugen
Das folgende Beispiel lĂ€dt die Metadaten eines gewĂŒnschten Dokuments und verwendet anschlieĂend ein gesetztes Metadatum, um einen neuen Dateinamen zu erzeugen. Zum Erzeugen des neuen Namen wird die oben beschriebene fill-Funktion (templates.fill) verwendet:
/* global sc, data */
let objects = require('common/objects');
let metadata = require('common/metadata');
let templates = require('common/templates');
let file = objects.find('/agorum/roi/customers/TestDaten/test.pdf');
// lade die Metadaten des Objektes die mit dem (custom) PrÀfix acmf_ beginnen
let md = metadata().load(file, /^acmf_/).data();
// wenn es ein Metadatum acmf_displayName gibt, dann benenne die Datei um, hierzu wird templates.fill() genutzt
if (md.acmf_displayName) {
let newname = templates.fill('${acmf_displayName:f}', md) + '.' + file.nameExtension;
file.name = newname;
}
Erweitertes Beispiel 2: Umwandeln von Metadaten ĂŒber common/beans (veraltete Funktion)
Das folgende Beispiel liest von einem Objekt Metadaten, wandelt diese in Strings um und schreibt diese wieder zurĂŒck. Die Wandlung ist so aufgebaut, dass beim ZurĂŒckschreiben wieder der richtige Datentyp erstellt wird:
let objects = require('common/objects');
let beans = require('common/beans');
let templates = require('common/templates');
let test = objects.find('1307827');
let data = beans.get(test, '~');
let ret = [];
ret.push( templates.fill('acmf_testLong : ${acmf_testLong}', {} , test));
ret.push( templates.fill('acmf_testDouble : ${acmf_testDouble:en|########.##########}', {} , test));
ret.push( templates.fill('acmf_testZeichenkette: ${acmf_testZeichenkette}', {} , test));
ret.push( templates.fill('acmf_testInteger : ${acmf_testInteger}', {} , test));
ret.push( templates.fill('acmf_testDate : ${acmf_testDate:yyyy-MM-dd\'T\'HH:mm:ss.SSSXXX}', {} , test));
ret.push( templates.fill('acmf_testFloat : ${acmf_testFloat:en|########.############}', {} , test));
ret.push( templates.fill('acmf_testBoolean : ${acmf_testBoolean:}', {} , test));
ret.push(new Date(templates.fill('${acmf_testDate:yyyy-MM-dd\'T\'HH:mm:ss.SSSXXX}', {} , test)));
beans.set(test, {
'~acmf_testLong:long' : templates.fill('${acmf_testLong}', {} , test),
'~acmf_testDouble:double' : templates.fill('${acmf_testDouble:en|########.##########}', {} , test),
'~acmf_testZeichenkette:string': templates.fill('${acmf_testZeichenkette}', {} , test),
'~acmf_testInteger:long' : templates.fill('${acmf_testInteger}', {} , test),
'~acmf_testDate:date' : templates.fill('${acmf_testDate:yyyy-MM-dd\'T\'HH:mm:ss.SSSXXX}', {} , test),
'~acmf_testFloat:double' : templates.fill('${acmf_testFloat:en|########.############}', {} , test),
'~acmf_testBoolean:boolean' : templates.fill('${acmf_testBoolean:}', {} , test)
});
JSON.stringify(data, null, 4) + '\n' + ret.join('\n');
Im Standardfall liefert templates.fill() einen String als Ergebnis zurĂŒck, selbst wenn in einem Platzhalter ein Skript aufgerufen wird, das einen anderen Datentyp zurĂŒckliefert. Manchmal kann es nĂŒtzlich sein, beliebige Datentypen als Ergebnis zuzulassen, etwa wenn komplexere Werte wie Arrays oder Objekte entstehen sollen.
Um diese Funktion zu verwenden, muss der template-String ein bestimmtes Format aufweisen:
let result = templates.fill('#{<code>}', ...);
RĂŒckgabe eines Arrays von agorum-Objekten:
let objects = require('common/objects');
let templates = require('common/templates');
let items = templates.fill('#{folder.items()}', {
folder: objects.find('/')
});
items.map(item => item.name);
/*
[
"Home",
"Administration",
"agorum"
]
*/