Durchsuchbare Dokumentation aufrufen | ZurĂŒck zur DokumentationsĂŒbersicht

Navigation: Dokumentationen agorum core > agorum core fĂŒr Entwickler > agorum core JavaScript-API


JavaScript-Bibliothek common/templates

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.

Verwendung

let templates = require('common/templates');

Funktionen

fill

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});

Strings formatieren

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

Beispiele


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'

Modifikatoren verwenden

Sie können folgende Modifikatoren fĂŒr die Template-Formatierung verwenden:

Strings mit :f formatieren

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

Strings mit :l (lower-case) formatieren

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

 

Zahlen formatieren

Allgemeine Schreibweise

${<Name Metadatum>[:Locale[|Formatangabe]]}

Schreibweisen

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

Beispiel

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

Beispiel in der fill-Methode


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

Datumswerte formatieren

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.

Aufbau von new Date()

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 });

Die aktuelle Kalenderwoche ausgeben

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

Das Datumsformat nach ISO-8601 angeben

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

Beispiel einer Formatierung fĂŒr ein GeschĂ€ftsjahr

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

Beispiel fĂŒr die LĂ€nderkennung „de“ und ausgeschriebenem Monat und Tag

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

Besonderheit bei Sekunden

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.

Beispiel templates.fill mit createPath zum Erstellen einer Ordnerstruktur nach einem Datum

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"
..
.

Inline-JavaScript


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'

Besonderheiten des JavaScripts

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.

Beispiel

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'

Aufruf von extern definierten JavaScript-Skripten

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'

Find

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');

JavaScript-AusdrĂŒcke


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>}', ...);

Beispiel

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"
]
*/