Commit 0ac1dc02 authored by Denis Salem's avatar Denis Salem
Browse files

WIP: strip spaces in pattern escaping, documentation

parent fc570f40
authors: 'Denis Salem'
categories: ''
tags: ''
chapter: 5
title: Pattern Processor
---VENC-BEGIN-PREVIEW---
---VENC-END-PREVIEW---
VenC utilise un moteur de reconnaissance de motif permettant une mise en
page facilitée et automatisée. Ce système devrait permettre dans de
futures versions d'utiliser des modules externes. La création et l'ajout
de greffons sera détaillé dans une autre partie.
Les motifs pouvant être reconnus dépendent du contexte dans lequel ils
sont trouvés.
Les motifs sont définis de la façon suivante dans VenC
- Chaque motifs commence par .:Escape::'.:'::EndEscape:.
- Chaque motifs se termine par .:Escape::':.'::EndEscape:.
- Le ou les séparateurs à l'intérieur d'un motif sont représentés par .:Escape::'::'::EndEscape:.
Un motif est une fonction pouvant prendre des paramètres. L'objectif est
de remplacer un motif par une chaine de caractères formatée. Typiquement,
les motifs permettent d'accéder aux données du blog ou de faire de la mise
en page spécifique pour faire, par exemple, un menu déroulant, ou une
barre de navigation.
authors: 'Denis Salem'
categories: ''
tags: ''
chapter: 5.1
title: Motifs de Templates
---VENC-BEGIN-PREVIEW---
---VENC-END-PREVIEW---
Pour en savoir plus sur les templates, rendez vous [ici](.:GetRelativeOrigin:.Les-templates) Un template peut
contenir un certains nombre de motifs que VenC peut interpréter.
- __.:Escape:: .:GetEntryID:. ::EndEscape:.__ : Retourne l'identifiant unique de la publication.
- __.:Escape:: .:GetEntryTitle:. ::EndEscape:.__ : Retourne le nom de la publication.
- __.:Escape:: .:GetEntryMonth:. ::EndEscape:.__ : Retourne le mois de création de la publication.
- __.:Escape:: .:GetEntryYear:. ::EndEscape:.__ : Retourne l'année de création de la publication.
- __.:Escape:: .:GetEntryDay:. ::EndEscape:.__ : Retourne le jour de création de la publication.
- __.:Escape:: .:GetEntryHour:. ::EndEscape:.__ : Retourne l'heure de création de la publication.
- __.:Escape:: .:GetEntryMinute:. ::EndEscape:.__ : Retourne la minute de création de la publication.
À ces motifs s'ajoutent les super globaux généralement disponibles quelque soit le contexte.
authors: 'Denis Salem'
categories: ''
tags: ''
chapter: 5.2
title: Motifs super globaux
---VENC-BEGIN-PREVIEW---
---VENC-END-PREVIEW---
Ces motifs sont généralement disponibles quelque soit le contexte et
sont définis dans blog_configuration.yaml.
- .:Escape:: .:GetAuthorName:. ::EndEscape:. : Retourne le nom de l'auteur du blog.
- .:Escape:: .:GetBlogName:. ::EndEscape:.: Retourne le titre du blog.
- .:Escape:: .:GetBlogDescription:. ::EndEscape:. : Retourne la description du blog.
- .:Escape:: .:GetBlogKeywords:. ::EndEscape:. : Retourne les mots clefs décrivant le blog.
- .:Escape:: .:GetAuthorDescription:. ::EndEscape:. : Retourne la description de l'auteur du blog.
- .:Escape:: .:GetBlogLicense:. ::EndEscape:. : Retourne la licence appliquée au contenu du blog.
- .:Escape:: .:GetBlogURL:. ::EndEscape:. : Retourne l'URL du blog.
- .:Escape:: .:GetBlogLanguage:. ::EndEscape:. : Retourne le language du blog.
- .:Escape:: .:GetAuthorEmail:. ::EndEscape:. : Retourne l'adresse email de l'auteur du blog.
- .:Escape:: blablabla.:GetRelativeOrigin:. ::EndEscape:. : Retourne le chemin relatif de la racine du blog.
- .:Escape:: .:GetRelativeLocation:. ::EndEscape:. : Retourne le répertoire courant relativement à la racine du blog.
Vous pouvez également définir vos propres variables en rajoutant des
champs au fichier de configuration blog_configuration.yaml. Par exemple
en rajoutant la ligne
> Banner: 'maBanniere.jpg'
dans le fichier de configuration, vous pourrez récupérer la valeurs de Banner avec
> .:Escape:: .:Get::Banner:. ::EndEscape:.
......@@ -47,27 +47,46 @@ def cgi_escape(string):
)
def get_markers_indexes(string, begin=".:", end=":."):
op = []
cp = []
op, cp = [], []
op_append, cp_append = op.append, cp.append
string_find = string.find
strip_begin, strip_end = [], []
strip_begin_append, strip_end_append = strip_begin.append, strip_end.append
i = 0
l = len(string)
offset=0
while i < l:
i = string.find(begin, i)
i = string_find(begin, i)
if i == -1:
i=0
break
op.append(i)
if begin == ".:Escape::":
j = 0
while string[i+10+j] == ' ':
j+=1
strip_begin_append(i+j)
op_append(i)
i+=2
while i < l:
i = string.find(end, i)
i = string_find(end, i)
if i == -1:
i=0
break
cp.append(i)
if begin == ".:EndEscape::" and False:
j = -1
while string[i+j] == ' ':
j-=1
strip_end_append(i+j)
cp_append(i)
i+=2
if begin == ".:Escape::":
return (op, cp, strip_begin, strip_end)
return (op, cp)
def handle_markup_language_error(message, line=None, string=None):
......@@ -107,7 +126,7 @@ class ProcessedString():
self.open_pattern_pos, self.close_pattern_pos = get_markers_indexes(string)
#Process escape
self.escapes_o, self.escapes_c = get_markers_indexes(string, begin=".:Escape::", end="::EndEscape:.")
self.escapes_o, self.escapes_c, self.strip_begin, self.strip_end = get_markers_indexes(string, begin=".:Escape::", end="::EndEscape:.")
leo, lec = len(self.escapes_o), len(self.escapes_c)
if leo != lec:
raise MalformedPatterns(leo > lec, True, ressource)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment