projects
/
geekigeeki.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e7014a2
)
Add support for including wiki pages inline through {{...}}
author
Bernie Innocenti
<bernie@codewiz.org>
Wed, 8 Apr 2009 22:56:25 +0000
(
00:56
+0200)
committer
Bernie Innocenti
<bernie@codewiz.org>
Wed, 8 Apr 2009 22:56:25 +0000
(
00:56
+0200)
geekigeeki.py
patch
|
blob
|
history
diff --git
a/geekigeeki.py
b/geekigeeki.py
index 4fb96cb8daff079dc820e7a9f7daf75f5bad8a7e..5bae68b43b78e972a0b1e987ee29a214130df87a 100755
(executable)
--- a/
geekigeeki.py
+++ b/
geekigeeki.py
@@
-33,7
+33,8
@@
file_re = re.compile(r"^\b([A-Za-z0-9_\-][A-Za-z0-9_\.\-/]*)\b$")
img_re = re.compile(r"^.*\.(png|gif|jpg|jpeg|bmp|ico|ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
video_re = re.compile(r"^.*\.(ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
url_re = re.compile(r"^[a-z]{3,8}://[^\s'\"]+\S$")
img_re = re.compile(r"^.*\.(png|gif|jpg|jpeg|bmp|ico|ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
video_re = re.compile(r"^.*\.(ogm|ogg|mkv|mpg|mpeg|mp4|avi|asf|flv|wmv|qt)$", re.IGNORECASE)
url_re = re.compile(r"^[a-z]{3,8}://[^\s'\"]+\S$")
-link_re = re.compile("(?:\[\[|{{)([^\s\|]+)(?:\s*\|\s*([^\]]+)|)(?:\]\]|}})")
+link_re = re.compile(r"(?:\[\[|{{)([^\s\|]+)(?:\s*\|\s*([^\]]+)|)(?:\]\]|}})")
+ext_re = re.compile(r"\.([^\./]+)$")
title_done = False
title_done = False
@@
-208,10
+209,16
@@
def link_tag(params, text=None, link_class=None, privileged=False):
def link_inline(name, descr=None, args=''):
if not descr: descr = name
def link_inline(name, descr=None, args=''):
if not descr: descr = name
+ url = relative_url(name)
if video_re.match(name):
if video_re.match(name):
- return '<video src="%s">Your browser does not support the HTML5 video tag</video>' % name
+ return '<video src="%s">Your browser does not support the HTML5 video tag</video>' % url
+ elif img_re.match(name):
+ return '<a href="%s"><img border="0" src="%s" alt="%s" /></a>' % (url, url + args, descr)
+ elif file_re.match(name) and not ext_re.search(name): # FIXME: this guesses a wiki page
+ return Page(name).send_naked()
else:
else:
- return '<a href="%s"><img border="0" src="%s" alt="%s" /></a>' % (name, name + args, descr)
+ return '<iframe width="100%%" scrolling="auto" frameborder="0" src="%s"><a href="%s">%s</a></iframe>' \
+ % (url, url, name)
# Search ---------------------------------------------------
# Search ---------------------------------------------------
@@
-387,9
+394,7
@@
class WikiFormatter:
return link_tag(m.group(1), m.group(2))
def _inl_repl(self, word):
return link_tag(m.group(1), m.group(2))
def _inl_repl(self, word):
- m = link_re.match(word)
- name = relative_url(m.group(1))
- descr = m.group(2)
+ (name, descr) = link_re.match(word).groups()
if descr:
argv = descr.split('|')
if descr:
argv = descr.split('|')
@@
-606,12
+611,14
@@
class Page:
return False
raise err
return False
raise err
- def get_raw_body(self):
+ def get_raw_body(self
, default=None
):
try:
return open(self._filename(), 'rb').read()
except IOError, err:
if err.errno == errno.ENOENT:
try:
return open(self._filename(), 'rb').read()
except IOError, err:
if err.errno == errno.ENOENT:
- return '' # just doesn't exist, use default
+ if default is None:
+ default = '//[[?edit=%s|Describe %s]]//' % (self.page_name, self.page_name)
+ return default
if err.errno == errno.EISDIR:
return self.format_dir()
raise err
if err.errno == errno.EISDIR:
return self.format_dir()
raise err
@@
-719,7
+726,8
@@
class Page:
print '<div class="editor"><form name="editform" method="post" enctype="multipart/form-data" action="%s">' % relative_url(self.page_name)
print '<input type="hidden" name="edit" value="%s">' % (self.page_name)
print '<input type="input" id="editor" name="changelog" value="Edit page %s" accesskey="c" /><br />' % (self.page_name)
print '<div class="editor"><form name="editform" method="post" enctype="multipart/form-data" action="%s">' % relative_url(self.page_name)
print '<input type="hidden" name="edit" value="%s">' % (self.page_name)
print '<input type="input" id="editor" name="changelog" value="Edit page %s" accesskey="c" /><br />' % (self.page_name)
- print '<textarea wrap="off" spellcheck="true" id="editor" name="savetext" rows="17" cols="100" accesskey="e">%s</textarea>' % cgi.escape(preview or self.get_raw_body())
+ print '<textarea wrap="off" spellcheck="true" id="editor" name="savetext" rows="17" cols="100" accesskey="e">%s</textarea>' \
+ % cgi.escape(preview or self.get_raw_body(default=''))
print '<label for="file" accesskey="u">Or Upload a file:</label> <input type="file" name="file" value="%s" />' % filename
print """
<br />
print '<label for="file" accesskey="u">Or Upload a file:</label> <input type="file" name="file" value="%s" />' % filename
print """
<br />