String
Nejběžnější typ hodnoty: posloupnost znaků, případně prázdná.
Získání řetězce
- Řetězec lze zapsat jako literál.
- Na řetězec se vyhodnotí velká část hodnot atributů assetů.
- Řetězce vrací řada funkcí.
- Explicitní převod na řetězec umožňuje funkce asString.
Pozor: Funkce, které generují odkazy, většinou nevracejí řetězec, ale objekt speciálního typu: identifikátor stránky. Tento objekt je nutné konvertovat na řetězec obsahující URL pomocí funkce asString, aby se s ním dalo pracovat tak, jak je dále popsáno. Tato konverze je ale dostupná až od verze 3.3.19.
Literál
Řetězcový literál se zapisuje způsobem obvyklým v jiných jazycích, tedy ohraničený buď jednoduchými, nebo dvojitými uvozovkami (znak '
, resp. "
). Typ počátečních a koncových uvozovek musí být shodný.
V řetězci uvozeném jednoduchými uvozovkami je možné používat dvojité uvozovky a naopak.
V řetězci je možné používat escape sekvence; mírně odlišná pravidla se vztahují na řetězec uvozený dvojitými uvozovkami.
Zápis | Význam | Poznámka |
---|---|---|
\" | dvojité uvozovky | |
\' | apostrof (jednoduché uvozovky) | V aktuální verzi funguje chybně (vrací dvojité uvozovky). |
\n | znak konce řádku | |
\t | tabulátor | |
\r | znak carriage return | |
\\ | znak "\" | |
\{ | znak "{" | |
\} | znak "}" | |
{{ | znak "{" | |
}} | znak "}" | |
\ následované jakýmkoli znakem kromě výše uvedených | znak "\" a následující znak | Je možné použít jen v řetězci uvozeném dvojitými uvozovkami. |
\unnnn | znak s kódem nnnn (zapsáno hexadecimálně) | Je možné použít jen v řetězci uvozeném dvojitými uvozovkami. Dostupné jen v novějších verzích TFS. |
{"s\u00a0námi"}
s námi
Vnořený TFS výraz
Literál může obsahovat vnořený TFS výraz mezi (neescapovanými) znaky {
a }
. Výsledný řetězec na daném místě bude obsahovat řetězcovou reprezentaci výsledku vyhodnocení vnořeného výrazu.
{"řetězec: {"abc"}, číslo: {12345}, null: {null}, konec"}
řetězec: abc, číslo: 12345, null: , konec
Vnořený výraz by se měl vyhodnocovat na řetězec, číslo nebo null, jinak interpretace takového literálu není definovaná.
{"dnes je: {format(asDate(), "d. M.")}"}
dnes je: 18. 6.
Funkce format vrací řetězec; proto lze její výstup použít v literálu.
Výpis řetězce
Řetězec se vypisuje na výstup. Přitom může docházet k některým modifikacím, nahrazení speciálních znaků apod.
- Defaultní výpis
- Výpis bez modifikací:
raw
- Nahrazení odkazů v řetězci:
jnprefs
- Výpis do WML:
wml
- Odstranění HTML značek:
stripTags
aspaceTags
- Převod ASCII formátování na HTML značky:
pre
- Výpis řetězců do javascriptu:
jstr
ajstrx
- Parametrizace SQL dotazů:
SQL
Defaultní výpis
Defaultní výpis řetězce zahrnuje nahrazení znaků '<', '>', '&', '"' po řadě referencemi k entitám ve tvaru "<", ">", "&", '"'. Je to předpokládaný režim výpisu všech řetězců do HTML.
{"Podmínka: x < y"}
Podmínka: x < y
Výpis bez modifikací: raw
Pomocí bezhodnotového parametru raw
se potlačí nahrazení znaků '<', '>', '&', '"' referencemi k entitám.
{'<?xml version="1.0" ?>' raw}
<?xml version="1.0" ?>
Tento modifikátor je použitelný jen pro řetězce. Má verzi link:raw
pro identifikátor stránky.
Nahrazení odkazů v řetězci: jnprefs
Řetězce, které obsahují HTML značky, mohou v hodnotách některých atributů obsahovat interní odkazy. Při výpisu takových řetězců je obyčejně potřeba převést symbolické reprezentace takových odkazů. K tomu slouží hodnotový parametr výpisu jnprefs
.
Od verze 3.6.12 existuje také TFS funkce jnprefs, která provádí stejnou operaci.
K motivaci a k tomu, jak probíhá samotné nahrazení, existuje samostatná dokumentace.
Výpis do WML: wml
Pro výstup do WML lze použít bezhodnotový parametr wml
. Nahrazení znaků '<', '>', '&', '"' se provede stejně jako v defaultním režimu. Kromě toho se znak "$" (který jinak ve WML uvozuje jméno proměnné) zdvojuje.
{"$ 1 < $ 10" wml}
$$ 1 < $$ 10
Tento modifikátor je použitelný jen pro řetězce. Má verzi link:wml
pro identifikátor stránky.
Odstranění HTML značek: stripTags
a spaceTags
Eliminovat HTML značky z řetězce před vypsáním je možné pomocí bezhodnotových parametrů stripTags
a spaceTags
. První odstraní značky bez náhrady, druhý je nahradí mezerou.
Od verze 3.6.12 existují také TFS funkce stripTags a spaceTags, které provádějí stejné operace.
Parametr spaceTags
je vhodné použít pro přípravu textu k indexování fulltextem.
Převod ASCII formátování na HTML značky: pre
Parametr pre
lze použít k vložení textu formátovaného pomocí znaku konce řádku do HTML. Provádí se nahrazení speciálních znaků entitami jako v defaultním režimu. Kromě toho se jeden znak konce řádku nahradí řetězcem "<br />" (ve starších verzích systému jNetPublish "<br>") a úseky řetězce oddělené dvěma znaky konce řádku po sobě se obalí řetězci "<p>" na začátku a "</p>" na konci.
{"a < b\nc < d\n\ne < f" pre}
<p>a < b<br />
c < d</p>
<p>e < f</p>
Použití tohoto parametru je užitečné pro vypisování obsahu generovaného uživatelem: příspěvků v diskusi apod.
Pozor: fungování je ve starších verzích systému jNetPublish nastaveno pro HTML 4.01, není vhodné pro XHTML.
Výpis řetězců do javascriptu: jstr
a jstrx
Modifikátory jstr
a jstrx
upravují při výpisu řetězec tak, aby se dal použít jako literál v javascriptu.
Zatímco jstr
přidává i uvozovky, jstrx
vypíše pouze vnitřní část řetězce.
Dostupné pouze ve verzi systému jNetPublish od 3.3.8 (jstr
) a 3.3.12 (jstrx
).
<script type="text/javascript">
var x = <? "\u000a\u0009" jstr ?>;
var y = '<? "\u000a\u0009" jstrx ?>';
</script>
<script type="text/javascript">
var x = "\n\t";
var y = '\n\t';
</script>
Pozor: Tyto parametry lze použít pouze při výpisu řetězců, na výpis hodnot ostatních typů nemají vliv. Typické problémy tedy představuje null a identifikátor stránky.
- Pokud vypisujeme výraz, jehož hodnotou může být
null
, je třeba provést odpovídající test, případně výpis upravit. Například při použití funkce asString před výpisem se případnýnull
převede na prázdný řetězec, což mnohdy stačí. - Identifikátor stránky je třeba vždy nejprve převést na řetězec pomocí funkce asString. Tato možnost je ale dostupná až od jNetPublish 3.3.19.
<script type="text/javascript">
var url = <? asString(link(_primary)) jstr ?>;
</script>
Selekce podhodnoty
Chová se jako prázdná struktura.
Mapování
Chová se jako prázdná mapa.
Sekvenční zpracování
Chová se jako prázdná sekvence.
Převod na logickou hodnotu
Prázdný řetězec se vyhodnotí jako false
, všechny ostatní hodnoty tohoto typu jako true
Řetězec: {if "a"}true{else}false{/if}
Prázdný řetězec: {if ""}true{else}false{/if}
Mezera: {if " "}true{else}false{/if}
Řetězec "0": {if "0"}true{else}false{/if}
Číslo 0: {if 0}true{else}false{/if}
Seznam [""]: {if asList("")}true{else}false{/if}
Řetězec: true
Prázdný řetězec: false
Mezera: true
Řetězec "0": true
Číslo 0: false
Seznam [""]: true