mirror of
https://github.com/ae-utbm/sith.git
synced 2024-12-28 02:31:26 +00:00
58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
import re
|
|
from mistune import Renderer, InlineGrammar, InlineLexer, Markdown
|
|
from django.core.urlresolvers import reverse_lazy, reverse
|
|
|
|
|
|
class SithRenderer(Renderer):
|
|
def file_link(self, id, suffix):
|
|
return reverse('core:file_detail', kwargs={'file_id': id}) + suffix
|
|
|
|
class SithInlineLexer(InlineLexer):
|
|
def _process_link(self, m, link, title=None):
|
|
try:
|
|
page = re.compile(
|
|
r'^page://(\S*)' # page://nom_de_ma_page
|
|
)
|
|
match = page.search(link)
|
|
page = match.group(1) or ""
|
|
link = reverse('core:page', kwargs={'page_name': page})
|
|
except: pass
|
|
try:
|
|
file_link = re.compile(
|
|
r'^file://(\d*)/?(\S*)?' # file://4000/download
|
|
)
|
|
match = file_link.search(link)
|
|
id = match.group(1)
|
|
suffix = match.group(2) or ""
|
|
link = reverse('core:file_detail', kwargs={'file_id': id}) + suffix
|
|
except: pass
|
|
return super(SithInlineLexer, self)._process_link(m, link, title)
|
|
|
|
# def enable_file_link(self):
|
|
# # add file_link rules
|
|
# self.rules.file_link = re.compile(
|
|
# r'dfile://(\d*)/?(\S*)?' # dfile://4000/download
|
|
# )
|
|
# # Add file_link parser to default rules
|
|
# # you can insert it some place you like
|
|
# # but place matters, maybe 2 is not good
|
|
# self.default_rules.insert(0, 'file_link')
|
|
|
|
# def output_file_link(self, m):
|
|
# id = m.group(1)
|
|
# suffix = m.group(2) or ""
|
|
# # you can create an custom render
|
|
# # you can also return the html if you like
|
|
# # return directly html like this:
|
|
# # return reverse('core:file_detail', kwargs={'file_id': id}) + suffix
|
|
# return self.renderer.file_link(id, suffix)
|
|
|
|
renderer = SithRenderer()
|
|
inline = SithInlineLexer(renderer)
|
|
|
|
# enable the features
|
|
# inline.enable_file_link()
|
|
markdown = Markdown(renderer, inline=inline)
|
|
|
|
|