diff --git a/VERSION b/VERSION index dfb0ed86..a4e13e5c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 1.99.7 (2012-04-05 20:28:05) dev +Version 1.99.7 (2012-04-05 21:44:41) dev diff --git a/gluon/contrib/markmin/markmin2html.py b/gluon/contrib/markmin/markmin2html.py index b6c44231..c6af04cf 100755 --- a/gluon/contrib/markmin/markmin2html.py +++ b/gluon/contrib/markmin/markmin2html.py @@ -290,7 +290,7 @@ regex_auto_video = re.compile('(?/=])(?P\w+://\S+\.(mp4|mpeg|mov)(\?\ regex_auto_audio = re.compile('(?/=])(?P\w+://\S+\.(mp3|wav)(\?\S+)?)',re.M) regex_auto = re.compile('(?/=])(?P\w+://\S+)',re.M) -def render(text,extra={},allowed={},sep='p'): +def render(text,extra={},allowed={},sep='p',URL=None,environment=None): """ Arguments: - text is the text to be processed @@ -356,6 +356,22 @@ def render(text,extra={},allowed={},sep='p'): """ text = str(text or '') + if environment: + def u2(match,environment=environment): + a = match.group('a') + return str(environment[a]) + text = re.compile('@\{(?P\w+?)\}').sub(u2,text) + if not URL is None: + # this is experimental @{controller/index/args} + # turns into a digitally signed URL + def u1(match,URL=URL): + a,b,c = match.group('a'), match.group('b'), match.group('c') + return URL(a,b,args=c.split('/'), + scheme=True,host=True,user_signature=True) + text = re.compile( + '@\{(?P\w+)/(?P\w+)/(?P.+?)\}' + ).sub(u1,text) + ############################################################# # replace all blocks marked with ``...``:class with META # store them into segments they will be treated as code diff --git a/gluon/html.py b/gluon/html.py index b9a469a2..73710f73 100644 --- a/gluon/html.py +++ b/gluon/html.py @@ -2322,18 +2322,23 @@ class MARKMIN(XmlComponent): """ For documentation: http://web2py.com/examples/static/markmin.html """ - def __init__(self, text, extra=None, allowed=None, sep='p'): + def __init__(self, text, extra=None, allowed=None, sep='p', + url=None, environment=None): self.text = text self.extra = extra or {} self.allowed = allowed or {} self.sep = sep + self.url = URL if url==True else url + self.environment = environment def xml(self): """ calls the gluon.contrib.markmin render function to convert the wiki syntax """ from contrib.markmin.markmin2html import render - return render(self.text,extra=self.extra,allowed=self.allowed,sep=self.sep) + return render(self.text,extra=self.extra, + allowed=self.allowed,sep=self.sep, + URL=self.url, environment=self.environment) def __str__(self): return self.xml()