AweGen vorige pagina
Dit is de uitlegsite van AweGen.
Copyright H. Fluks
volgende pagina
AweGen
Input-files
Namen van velden
%-opdrachten
#-opdrachten
Expressies
Log-meldingen
Voorbeeld-input
Datamodel
slide10.jpg
Expressies

Op diverse plekken komt het begrip "expressie" terug. Een expressie is een bewering over records of velden. Een expressie is waar (true) of onwaar (false), en afhankelijk daarvan gaat AweGen bepaalde dingen wel of niet doen.

Expressies worden gebruikt in:

  • De selectie van items voor een sectie op een webpagina in de tree-file;
  • De #if(...) en #ifnot(...)-opdrachten

Een expressie begint altijd met een "(" en eindigt met een ")".

Mogelijke expressies

Mogelijke expressies zijn:

   (#X=Y)    veld #X is gelijk aan Y
   (#X!=Y)   veld #X is ongelijk aan Y
   (#X<Y)    veld #X is alfabetisch kleiner dan Y (bijvoorbeeld 10 < 5)
   (#X<=Y)   veld #X is alfabetisch kleiner dan of gelijk aan Y
   (#X>Y)    veld #X is alfabetisch groter dan Y
   (#X>=Y)   veld #X is alfabetisch groter dan of gelijk aan Y
   (#X.num<Y)   veld #X is numeriek kleiner dan Y (bijvoorbeeld 5.num < 10)
   (#X.num<=Y)  veld #X is numeriek kleiner dan of gelijk aan Y
   (#X.num>Y)   veld #X is numeriek groter dan Y
   (#X.num>=Y)  veld #X is numeriek groter dan of gelijk aan Y
   (#X~Y)    veld #X begint met Y
   (#X!~Y)   veld #X begint niet met Y
   (#X~~Y)   veld #X bevat Y
   (#X*Y)    er bestaat een veld waarvan de naam begint met X en de waarde met Y
   (#X!*Y)   er bestaat geen veld waarvan de naam begint met X en de waarde met Y

Als een veld niet bestaat, is dit hetzelfde als dat het veld leeg is. Dus bijvoorbeeld: de expressie (#X=) is waar als veld #X niet bestaat, terwijl de expressie (#X>) waar is als veld #X wel bestaat (want als het veld bestaat is het groter dan een lege string).

Met "kleiner" en "groter" bedoel ik zoals in een woordenboek: "aardvark" is kleiner dan "beer".

"#X" is de naam van een veld uit het huidige record, of een eigenschap van de huidige pagina (zoals page.#name, zie de pagina over namen van velden).

"Y" is een waarde. Of, als het begint met een # ("#naam"), de naam van een veld van het huidige record.

Voorbeelden

   (external.#storycode=W WDC 123-01)
   (external.#storycode~W WDC)
   (#componist=Boudewijn de Groot)
   (page.#level>=3)
   (item.#sequencenumber=1)
   (#repr*)
   (#tekst!=#componist)

De expressie (#X*Y) kun je bijvoorbeeld gebruiken als je velden met @s gebruikt. Als je bijvoorbeeld 2 velden "#appearing@" hebt, dan kun je met (#appearing*) testen of ze bestaan.
En dan betekent (#appearing*US) dat tenmiste een van de "#appearing@" velden een waarde heeft die begint met "US".

Let op: bij de expressies (#X*Y) en (#X!*Y) kun je geen externe velden gebruiken. Dus zoiets als (external.#storycode*) is niet mogelijk. Dit heeft ook niet veel zin, want externe velden hebben nooit een @ achter hun naam.

Combinaties van expressies
Een expressie kan een logische combinatie zijn van (sub-)expressie(s):

   (A)&(B)     A is waar én B is waar
   (A)|(B)     A is waar of B is waar, of allebei
   (!(A))      A is niet waar

(Er is geen symbool voor "A is waar of B is waar, maar niet allebei". Dit is wat je in normaal Nederlands meestal bedoelt met "of". Maar in AweGen kunnen we in dit geval best zonder normaal Nederlands...)

Voorbeelden:

   (#tekst=Lennaert Nijgh)&(#componist=Boudewijn de Groot)
   (#tekst!=Lennaert Nijgh)|(#componist!=Boudewijn de Groot)
   (#storycode!~W WDC)&(#storycode!~W US)&(#storycode!~W OS)

(Deze pagina is gegenereerd door AweGen 5.10 op 2018-01-02)