Omezení akvizice na vlastnosti

Předpokládejme, že návrh prezentace, ze které je uvedený fragment šablony, počítá s možností, že některým sekcím je možné nastavit vlastnost s názvem colors, jejíž hodnotou bude název třídy, která je v CSS použitá pro definici barevného schématu. Chceme, aby se nastavení hodnoty dědilo, a aby ho bylo možné libovolně předefinovat.

V šabloně obsahující počáteční tag HTML elementu body je potřeba získat aktuální hodnotu colors.

Obojí zápis bude většinou fungovat požadovaným způsobem. Rozdíly jsou ale významné:

  • Explicitní uvedení vlastnosti vede k tomu, že se v každém kroku hledání ve stromu sekcí eliminuje dotaz na dětské assety s názvem colors a colors_cz.
  • Zápis s vykřičníkem může někdy skutečně najít asset s názvem colors, což pravděpodobně úplně rozbije výpis.

(Pro jednoduchost předpokládáme, že typ assetu _primary nedefinuje atribut colors.)

Fragmenty kódu

Zápis s vykřičníkem
<body class="{_primary!colors}">
  ...
</body>
Zápis s explicitním omezením na vlastnosti
<body class="{acquire(_primary, "colors", "p")}">
  ...
</body>