diff --git a/kap-modelova-implementace.tex b/kap-modelova-implementace.tex index 9cd2f0d..a750e3e 100644 --- a/kap-modelova-implementace.tex +++ b/kap-modelova-implementace.tex @@ -74,18 +74,17 @@ V rámci vybraného generátoru není nutné specifikovat atributy na jeden řá \end{lstlisting} -Součástí požadavků pro modelový web jsou i citace přiložených souborů a videí. Existující filtr je tedy třeba rozšířit o možnost přiložení různých metadat. Tato metadata ovšem nejsou pro vložení videa povinná. Ve specifikaci vlastních filtrů lze využívat všechny operátory, které generátor nabízí. Nejlepším přístupem k tomuto problému je tedy využití jednoduchých podmínek, které kontrolují, zda je každá z hodnot zadána jako parametr a v případě že ano, vepíše se do obsahu. Atributy ošetřené podmínkami tedy nejsou povinné, zatímco nevyplněný atribut \texttt{src} by při generování vyvolal chybu. V následujícím příkladu jsou přidány tři podmínky pro kontrolu a případné vložení, jimiž jsou název videa (\texttt{title}), jméno autora (\texttt{author}) a datum vytvoření (\texttt{date}). +Součástí požadavků pro modelový web jsou i citace přiložených souborů a videí. Existující filtr je tedy třeba rozšířit o možnost přiložení různých metadat. Tato metadata ovšem nejsou pro vložení videa povinná. Ve specifikaci vlastních filtrů lze využívat všechny operátory, které generátor nabízí. Nejlepším přístupem k tomuto problému je tedy využití jednoduchých podmínek, které kontrolují, zda je každá z hodnot zadána jako parametr a v případě že ano, vepíše se do obsahu. Atributy ošetřené podmínkami tedy nejsou povinné, zatímco nevyplněný atribut \texttt{src} by při generování vyvolal chybu. V následujícím příkladu jsou přidány podmínky pro kontrolu a případné vložení, jimiž jsou název videa (\texttt{title}), jméno autora (\texttt{author}) a rok vytvoření (\texttt{year}). \begin{lstlisting}[label=lst:filtr-s-podminkami,caption=Filtr pro vkládání videa s využitím podmínek] -{% if title %} -
{{ title }}
-{% endif %} - -{% if author %} -
{{ author }}
-{% endif %} -{% if date %} -
{{ date }}
+ +{% if title or year and author %} +
+ {% if title %}{{ title }}{% endif %} + {% if author and year %} + ({{ year }}, {{ author }}) + {% endif %} +
{% endif %} \end{lstlisting} @@ -96,17 +95,17 @@ Filtr je možné opět vyvolat pomocí stejné direktivy kdekoliv v obsahu, ovš src="video.webm", title="Název videa", author="Jméno autora", - date="2020-03-22" + year="2020" ) }} \end{lstlisting} Protože byly zadány všechny povinné i nepovinné atributy, výtupem toho filtru budou i části kódu s metadaty. \begin{lstlisting}[caption=Výstup direktivy z příkladu \ref{lst:formatovani-atributu}] -
Název videa
- -
Jméno autora
-
2020-03-22
+ +
+ Název videa (2020, Jméno autora) +
\end{lstlisting} Pro modelový web byla zvážena možnost vypisování obsahu automaticky, tedy že program zkontroluje složku s obsahem a pokud narazí na soubor se specifikovanou koncovkou, vypíše jej do obsahu podle daných pravidel. Generátor Zola umožňuje prohledávání složek a práci se soubory, v rámci Zoly takzvanými \uv{assety}. Tuto funkcionalitu lze tedy implementovat jednoduchým cyklem a filtem, které zpracují všechny případné soubory ve složce dané stránky. Zoubory lze filtrovat mnoha způsoby, z nichž je nejuniverzálnější funkce \texttt{matching()}, která dovoluje filtrovat vstup regulárními výrazy dle implementace regex v jazyce Rust\footnote{\url{https://docs.rs/regex/1.3.6/regex/}}. V následujícím příkladu je pro ilustraci této funkcionality implementován program vypisující obrázky s předem definovanými koncovkami. diff --git a/prace.pdf b/prace.pdf index bc4f094..a299333 100644 Binary files a/prace.pdf and b/prace.pdf differ