Een van de krachtigste functies van DocuGenerate is de optie voor uitgebreide syntax. Deze functie breidt de standaardfunctionaliteit uit, wat zorgt voor een rijkere, veelzijdigere ervaring bij het maken van uw sjablonen.
Standaard is de optie voor uitgebreide syntax uitgeschakeld bij het aanmaken van een nieuw sjabloon. Om deze in te schakelen, navigeert u naar het Settings-paneel van het sjabloon en vinkt u het selectievakje met het label Enable enhanced syntax aan.
Eenmaal ingeschakeld, biedt de uitgebreide syntax verschillende geavanceerde functionaliteiten.
Met de uitgebreide syntax krijgt u rechtstreeks in het sjabloon toegang tot geneste objecteigenschappen.
For example, if you have this data:
[{
"item": {
"name": "Car"
}
}]
U krijgt toegang tot de eigenschap name met deze syntax:
[item.name]
Zonder de uitgebreide syntax zou de datastructuur er zo uit moeten zien:
[{
"item.name": "Car"
}]
Met de uitgebreide syntax ingeschakeld, kunt u logische en wiskundige expressies rechtstreeks in uw sjabloon gebruiken, zoals +, -, *, /, >, <, ==, !=, <=, >=.
U kunt complexe voorwaardelijke instructies maken met de uitgebreide syntax:
[#items.length > 1]
There are multiple items.
[/]
De uitgebreide syntax ondersteunt ook de volgende operatoren:
a ? b : ca == 1, a != 1a > 1, a < 1, a >= 1, a <= 1a && ba || ba + ba - ba * ba % ba / ba = 1(a && b) || cMet de uitgebreide syntax ingeschakeld, moet u zich bewust zijn van hoe witruimte wordt geïnterpreteerd in uw JSON-data.
In JSON-data zou een eigenschap met witruimte, zoals "First Name": "John", normaal gesproken overeenkomen met de merge-tag [First Name]. Met uitgebreide syntax ingeschakeld, herkent DocuGenerate echter geen witruimte binnen merge-tags. Daarom moeten eigenschappen met witruimte in uw JSON-data worden geschreven met een andere notatie.
In plaats van bijvoorbeeld:
[{
"First Name": "John"
}]
Gebruikt u:
[{
"First_Name": "John"
}]
Vervolgens kunt u in uw sjabloon de merge-tag [First_Name] gebruiken om naar deze data te verwijzen. Als de eigenschap genest is binnen een ander object, heeft u er toegang toe zoals hier: [User.First_Name].
Deze beperking geldt alleen wanneer de uitgebreide syntax ingeschakeld is. Als deze uitgeschakeld is, wordt witruimte binnen merge-tags zoals verwacht herkend. Dit geeft u de flexibiliteit om de beste aanpak te kiezen voor uw data en uw sjablonen.
Voorbeeld 1: Content weergeven op basis van een booleaanse waarde
Sjabloon:
[#client.has_discount]
You have a discount of [client.discount] on your next purchase.
[/]
JSON-data:
[{
"client": {
"has_discount": true,
"discount": "15%"
}
}]
Resultaat:
You have a discount of 15% on your next purchase.
Voorbeeld 2: Verschillende content weergeven op basis van een waardevergelijking
Sjabloon:
[#age >= 18]
You are eligible to vote.
[/]
[#age < 18]
You are not eligible to vote.
[/]
JSON-data:
[{
"age": 2
}]
Resultaat:
You are not eligible to vote.
Voorbeeld 3: Content weergeven op basis van een logische expressie
Sjabloon:
[#client.is_vip && client.purchase_amount > 500]
As a VIP member who spent $[client.purchase_amount], you are entitled to a gift!
[/]
JSON-data:
[{
"client": {
"is_vip": true,
"purchase_amount": 1000
}
}]
Resultaat:
As a VIP member who spent $1000, you are entitled to a gift!