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ápisVýznamPoznámka
\"dvojité uvozovky
\'apostrof (jednoduché uvozovky)V aktuální verzi funguje chybně (vrací dvojité uvozovky).
\nznak konce řádku
\ttabulátor
\rznak carriage return
\\znak "\"
\{znak "{"
\}znak "}"
{{znak "{"
}}znak "}"
\ následované jakýmkoli znakem kromě výše uvedenýchznak "\" a následující znakJe možné použít jen v řetězci uvozeném dvojitými uvozovkami.
\unnnnznak 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.

Příklad: Pevná mezera v řetězci
Vstup
{"s\u00a0námi"}
Výstup
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.

Příklad: Vnořené výrazy v literálu řetězce
Vstup
{"řetězec: {"abc"}, číslo: {12345}, null: {null}, konec"}
Výstup
ř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á.

Příklad: Formátované datum v literálu řetězce
Vstup
{"dnes je: {format(asDate(), "d. M.")}"}
Výstup
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

Defaultní výpis řetězce zahrnuje nahrazení znaků '<', '>', '&', '"' po řadě referencemi k entitám ve tvaru "&lt;", "&gt;", "&amp;", '&quot;'. Je to předpokládaný režim výpisu všech řetězců do HTML.

Příklad: Defaultní režim vypsání řetězce
Vstup
{"Podmínka: x < y"}
Výstup
Podmínka: x &lt; y

Výpis bez modifikací: raw

Pomocí bezhodnotového parametru raw se potlačí nahrazení znaků '<', '>', '&', '"' referencemi k entitám.

Příklad: Vypsání řetězce "tak, jak je"
Vstup
{'<?xml version="1.0" ?>' raw}
Výstup
<?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.

Příklad: Výpis do WML
Vstup
{"$ 1 < $ 10" wml}
Výstup
$$ 1 &lt; $$ 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.

Příklad: Výpis textu s ASCII formátováním
Šablona
{"a < b\nc < d\n\ne < f" pre}
Výstup
<p>a &lt; b<br />
c &lt; d</p>
<p>e &lt; 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).

Příklad: Hodnota proměnné v javascriptu
Vstup
<script type="text/javascript">
var x = <? "\u000a\u0009" jstr ?>;
var y = '<? "\u000a\u0009" jstrx ?>';
</script>
Výstup
<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.
Příklad: Adresa v proměnné v javascriptu
Vstup
<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

Příklad: Test řetězce, prázdného řetězce, srovnání s jinými typy
Vstup
Ř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}
Výstup
Řetězec:         true
Prázdný řetězec: false
Mezera:          true
Řetězec "0":     true
Číslo 0:         false
Seznam [""]:     true
Pro vložení příspěvku do diskuse se přihlašte.