Anpassungen für neue Moin Version

This commit is contained in:
Lukas P 2016-01-05 17:13:48 +01:00
parent 8117b6a1e2
commit eb469fe356
10 changed files with 617 additions and 345 deletions

View file

@ -13,7 +13,7 @@
if ('cli' != php_sapi_name()) die();
define('DOKU_INC', '/usr/share/dokuwiki/');
define('DOKU_INC', '/home/caddy/wikifarm/dokuwiki/dokuwiki/');
require_once DOKU_INC.'inc/init.php';
require_once DOKU_INC.'inc/common.php';
require_once DOKU_INC.'inc/cliopts.php';

BIN
doku.pyc Normal file

Binary file not shown.

View file

@ -9,9 +9,10 @@
# Version: 1.0
import sys, os, os.path, re, codecs
sys.path.insert(1,'/home/caddy/.conda/envs/moinmoin/lib/python2.7/site-packages/MoinMoin/support')
import getopt
from MoinMoin import user, wikiutil
from MoinMoin.request import RequestCLI
from MoinMoin.web.contexts import ScriptContext as RequestCLI
from MoinMoin.logfile import editlog
from MoinMoin.Page import Page
from shutil import copyfile, copystat
@ -40,8 +41,8 @@ def init_dirs(output_dir):
mkdir(metadir)
def readfile(filename):
with open(filename, 'r') as f:
text = f.read()
f = open(filename, 'r')
text = f.read()
return unicode(text.decode('utf-8'))
def writefile(filename, content, overwrite=False):
@ -50,7 +51,7 @@ def writefile(filename, content, overwrite=False):
os.makedirs(dir);
if os.path.exists(filename) and overwrite == False:
raise OSError, 'File already exists: %s' % filename
raise (OSError, 'File already exists: %s' % filename)
# ensure it's a list
if not isinstance(content, (list, tuple)):
@ -294,6 +295,7 @@ else:
# get list of all pages in wiki
# hide underlay dir temporarily
underlay_dir = request.rootpage.cfg.data_underlay_dir
print(underlay_dir)
request.rootpage.cfg.data_underlay_dir = None
pages = request.rootpage.getPageList(user = '', exists = not convert_attic, filter = filter)
pages = dict(zip(pages, pages))

View file

@ -7,13 +7,13 @@
#
# Author: Elan Ruusamäe <glen@pld-linux.org>
# Version: 1.0
from MoinMoin import wikimacro, wikiutil
#from MoinMoin.web.request import Request as RequestCLI
from MoinMoin.web.contexts import ScriptContext
from MoinMoin import wikiutil
from MoinMoin.Page import Page
from MoinMoin.parser.wiki import Parser
from MoinMoin.parser.text_moin_wiki import Parser
from text_dokuwiki import Formatter
from MoinMoin.request import RequestCLI
import sys
import StringIO
@ -37,7 +37,7 @@ def moin2doku(pagename, text):
return unicode(output.getvalue().decode('utf-8'))
request = RequestCLI()
request = ScriptContext()
formatter = Formatter(request)
if __name__ == "__main__":
@ -47,6 +47,6 @@ if __name__ == "__main__":
else:
inputfile = 'syntaxreference.txt'
with open(inputfile, 'r') as f:
text = f.read()
f = open(inputfile, 'r')
text = f.read()
print moin2doku('test', text)

BIN
moinformat.pyc Normal file

Binary file not shown.

238
output.txt Normal file
View file

@ -0,0 +1,238 @@
<file>#pragma section-numbers off
#acl All:admin,read,write,delete,revert
#language en</file>
This page tries to use each supported markup element at least once.
<file>'''Index'''
[[TableOfContents(2)]]</file>
**Index**
[[:TableOfContents(2)|TableOfContents(2)]]
====== Headers ======
===== Header 2 =====
==== Header 3 ====
=== Header 4 ===
== Header 5 ==
====== Font styles ======
<file>Normal text, ''emphasized'', '''strong''', __underline__, ,,subscript,,, ^superscript^, `typewriter` and {{{typewriter</file>
.}}}
Normal text, //emphasized//, **strong**, __underline__, <sub>subscript</sub>, <sup>superscript</sup>, ''typewriter'' and ''typewriter''.
===== Syntax Highlighting =====
* <code >
# python code
print code.colorize("abc", 1 + 1)</code>
====== Hyperlinks ======
===== Internal =====
<file> * MoinMoin
* MoinMoin/TextFormatting
* MoinMoin/InstallDocs
* ../InstallDocs
* /SubPage
* Self:InterWiki</file>
* [[:MoinMoin|MoinMoin]]
* [[:MoinMoin:TextFormatting|MoinMoin/TextFormatting]]
* [[:MoinMoin:InstallDocs|MoinMoin/InstallDocs]]
* [[:InstallDocs|../InstallDocs]]
* [[:test:SubPage|/SubPage]]
* [[:InterWiki|InterWiki]]
<file>[#anchorname Anchor Link]</file>
[#anchorname Anchor Link]
===== External =====
<file> * http://moinmoin.wikiwikiweb.de/
* [http://moinmoin.wikiwikiweb.de/]
* [http://moinmoin.wikiwikiweb.de/ MoinMoin Wiki]
* [http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png]
* http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png
* [http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png moinmoin.png]
* MeatBall:InterWiki
* wiki:MeatBall/InterWiki
* [wiki:MeatBall/InterWiki]
* [wiki:MeatBall/InterWiki InterWiki page on MeatBall]
* [file://servername/full/path/to/file/filename%20with%20spaces.txt Click here to read filename with spaces.txt]
* me@privacy.net</file>
* [[http://moinmoin.wikiwikiweb.de/|http://moinmoin.wikiwikiweb.de/]]
* [[[http://moinmoin.wikiwikiweb.de/|http://moinmoin.wikiwikiweb.de/]]]
* [[[http://moinmoin.wikiwikiweb.de/|http://moinmoin.wikiwikiweb.de/]] [[:MoinMoin|MoinMoin]] Wiki]
* [[[http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png|http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png]]]
* [[http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png|http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png]]
* [[[http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png|http://moinmoin.wikiwikiweb.de/wiki/classic/img/moinmoin.png]] moinmoin.png]
* [[MeatBall>InterWiki|InterWiki]]
* wiki:[[:MeatBall:InterWiki|MeatBall/InterWiki]]
* [wiki:[[:MeatBall:InterWiki|MeatBall/InterWiki]]]
* [wiki:[[:MeatBall:InterWiki|MeatBall/InterWiki]] [[:InterWiki|InterWiki]] page on [[:MeatBall|MeatBall]]]
* [[[file://servername/full/path/to/file/filename%20with%20spaces.txt|file://servername/full/path/to/file/filename%20with%20spaces.txt]] Click here to read filename with spaces.txt]
* [[mailto:me@privacy.net|me@privacy.net]]
===== Escaping WikiNames =====
<file>Wiki''''''Name
Wiki``Name</file>
Wiki****Name Wiki''''Name
====== Blockquote ======
<file> This is indented
Even more</file>
* This is indented
* Even more
====== Bullet list ======
<file> * item 1
* item 2, with gap
* item 3
* item 3.1</file>
* item 1
* item 2, with gap
* item 3
* item 3.1
====== Numbered list ======
<file> 1. item 1
i. item 1
i. item 2</file>
- item 1
- item 1
- item 2
<file> 1. item 2
a. item 1
a. item 2</file>
- item 2
- item 1
- item 2
====== Descriptions + Definitions ======
<file> Term:: Description
Label:: Definition</file>
<gloss><label>Term</label><item>Description </item><label>Label</label><item>Definition </item></gloss>
====== Code display ======
* <file>line 1
indented 4 characters</file>
====== Tables ======
===== General table layout and HTML like options =====
<file> ||cell 1||cell2||cell 3||</file>
*
|cell 1|cell2|cell 3|
====== Rules ======
<file>--- (not a rule)
----
-----
------
-------
--------
---------
----------
-------------------------------------------- (not thicker than 10)</file>
--- (not a rule)
-
--
---
----
----
----
----
(not thicker than 10)
====== Macros ======
<file>[[Anchor(anchorname)]]
'''[[PageCount]]''' pages</file>
[[:Anchor(anchorname)|Anchor(anchorname)]] **[[:PageCount|PageCount]]** pages

22
standalone.py Normal file
View file

@ -0,0 +1,22 @@
from MoinMoin.server.standalone import StandaloneConfig, run
import sys
# Path of the directory where wikiconfig.py is located.
# YOU NEED TO CHANGE THIS TO MATCH YOUR SETUP.
sys.path.insert(0, 'home/caddy/wikifarm/var/wikifarm/config')
# Path to MoinMoin package, needed if you installed with --prefix=PREFIX
# or if you did not use setup.py.
sys.path.insert(0, '/usr/local/lib/python2.4/site-packages')
# Path of the directory where farmconfig.py is located (if different).
sys.path.insert(0, '/home/caddy/wikifarm/var/wikifarm/config')
class Config(StandaloneConfig):
docs = '/home/caddy/wikifarm/var/wikifarm'
user = 'http'
group = 'http'
port = 80
run(Config)

View file

@ -182,4 +182,4 @@ line 1
'''[[PageCount]]''' pages
}}}
[[Anchor(anchorname)]]
'''[[PageCount]]''' pages
'''[[PageCount]]''' pages

View file

@ -1,15 +1,15 @@
# -*- coding: utf-8 -*-
# Setup VIM: ex: noet ts=2 sw=2 :
"""
MoinMoin - Dokuwiki Formatter
MoinMoin - Dokuwiki Formatter
@copyright: 2000, 2001, 2002 by Jürgen Hermann <jh@web.de>
@copyright: 2011-2012 Elan Ruusamäe <glen@delfi.ee>
@license: GNU GPL, see COPYING for details.
@copyright: 2000, 2001, 2002 by Jürgen Hermann <jh@web.de>
@copyright: 2011-2012 Elan Ruusamäe <glen@delfi.ee>
@license: GNU GPL, see COPYING for details.
"""
from xml.sax import saxutils
from MoinMoin.formatter.base import FormatterBase
from MoinMoin.formatter import FormatterBase
from MoinMoin import config
from MoinMoin.Page import Page
from types import *
@ -17,330 +17,340 @@ from types import *
# TODO: let base class MoinMoin/formatter/base.py handle not implemented methods
class Formatter(FormatterBase):
"""
Send Dokuwiki formatted data.
"""
hardspace = '&nbsp;'
# hardspace = ' '
def __init__(self, request, **kw):
apply(FormatterBase.__init__, (self, request), kw)
self._current_depth = 1
self._base_depth = 0
self.in_pre = 0
self.in_table = 0
self._text = None # XXX does not work with links in headings!!!!!
self.list_depth = 0
self.list_type = ' '
def _escape(self, text, extra_mapping={"'": "&apos;", '"': "&quot;"}):
return saxutils.escape(text, extra_mapping)
def startDocument(self, pagename):
encoding = config.charset
return '<?xml version="1.0" encoding="%s"?>\n<s1 title="%s">' % (
encoding, self._escape(pagename))
def endDocument(self):
result = ""
while self._current_depth > 1:
result += "</s%d>" % self._current_depth
self._current_depth -= 1
return result + '</s1>'
def lang(self, on, lang_name):
return ('<div lang="">' % lang_name, '</div>')[not on]
def sysmsg(self, on, **kw):
return ('<sysmsg>', '</sysmsg>')[not on]
def rawHTML(self, markup):
return '<html>' + markup + '</html>'
def pagelink(self, on, pagename='', page=None, **kw):
if on:
return '[[:' + ":".join(pagename.split("/")) + "|"
else:
return ']]'
def interwikilink(self, on, interwiki='', pagename='', **kw):
if on:
if interwiki == 'Self':
return self.pagelink(on, pagename, **kw)
return '[[%s>%s|' % (interwiki, pagename)
else:
return ']]'
def url(self, on, url='', css=None, **kw):
return ('[[%s|' % (self._escape(url)), ']]')[not on]
def attachment_link(self, url, text, **kw):
return '{{%s|%s}}' % (url, text)
def attachment_image(self, url, **kw):
return '{{%s|}}' % (url,)
def attachment_drawing(self, url, text, **kw):
return '{{%s|%s}}' % (url, text)
def text(self, text, **kw):
self._did_para = 0
if self._text is not None:
self._text.append(text)
return text
def rule(self, size=0, **kw):
# size not supported
if size >= 4:
return '----\n'
else:
return '-' * size + '\n'
def icon(self, type):
return '<icon type="%s" />' % type
def strong(self, on, **kw):
return ['**', '**'][not on]
def emphasis(self, on, **kw):
return ['//', '//'][not on]
def highlight(self, on, **kw):
return ['**', '**'][not on]
def number_list(self, on, type=None, start=None, **kw):
# list type not supported
if on:
self.list_depth += 1
self.list_type = '-'
else:
self.list_depth -= 1
self.list_type = ' '
return ['', '\n'][on]
def bullet_list(self, on, **kw):
if on:
self.list_depth += 1
self.list_type = '*'
else:
self.list_depth -= 1
self.list_type = ' '
return ['', '\n'][on]
def listitem(self, on, **kw):
# somewhy blockquote uses "listitem" call
return [(' ' * self.list_depth * 2) + self.list_type + ' ', '\n'][not on]
def code(self, on, **kw):
""" `typewriter` or {{{typerwriter}}, for code blocks i hope codeblock works """
return ["''", "''"][not on]
def sup(self, on, **kw):
return ['<sup>', '</sup>'][not on]
def sub(self, on, **kw):
return ['<sub>', '</sub>'][not on]
def strike(self, on, **kw):
return ['<del>', '</del>'][not on]
def preformatted(self, on, **kw):
FormatterBase.preformatted(self, on)
result = ''
if self.in_p:
result = self.paragraph(0)
return result + ['<file>', '</file>\n'][not on]
def paragraph(self, on, **kw):
FormatterBase.paragraph(self, on)
if self.in_table or self.list_depth:
return ''
return ['', '\n\n'][not on]
def linebreak(self, preformatted=1):
return ['\n', '\\\n'][not preformatted]
def heading(self, on, depth, **kw):
# heading depth reversed in dokuwiki
heading_depth = 7 - depth
if on:
return u'%s ' % (u'=' * heading_depth)
else:
return u' %s\n' % (u'=' * heading_depth)
def table(self, on, attrs={}, **kw):
if on:
self.in_table = 1
else:
self.in_table = 0
return ''
def table_row(self, on, attrs={}, **kw):
return ['\n', '|'][not on]
def table_cell(self, on, attrs={}, **kw):
return ['|', ''][not on]
def anchordef(self, id):
# not supported
return ''
def anchorlink(self, on, name='', **kw):
# kw.id not supported, we hope the anchor matches existing heading on page
return ('[[#', ']]') [not on]
def underline(self, on, **kw):
return ['__', '__'][not on]
def definition_list(self, on, **kw):
result = ''
if self.in_p:
result = self.paragraph(0)
return result + ['<gloss>', '</gloss>'][not on]
def definition_term(self, on, compact=0, **kw):
return ['<label>', '</label>'][not on]
def definition_desc(self, on, **kw):
return ['<item>', '</item>'][not on]
def image(self, src=None, **kw):
valid_attrs = ['src', 'width', 'height', 'alt', 'title']
url = src
if '?' in url:
url += '&'
else:
url += '?'
attrs = {}
for key, value in kw.items():
if key in valid_attrs:
attrs[key] = value
# TODO: finish this
if attrs.has_key('width'):
url += attrs['width']
return '{{' + url + '}}'
def code_area(self, on, code_id, code_type='code', show=0, start=-1, step=-1):
syntax = ''
# switch for Python: http://simonwillison.net/2004/may/7/switch/
try:
syntax = {
'ColorizedPython': 'python',
'ColorizedPascal': 'pascal',
'ColorizedJava': 'java',
'ColorizedCPlusPlus': 'cpp',
}[code_type]
except KeyError:
pass
return ('<code %s>' % syntax , '</code>')[not on]
def code_line(self, on):
return ('', '\n')[on]
def code_token(self, on, tok_type):
# not supported
return ''
def comment(self, text):
# real comments (lines with two hash marks)
if text[0:2] == '##':
return "/* %s */\n" % text[2:].strip()
# Some kind of Processing Instruction
# http://moinmo.in/HelpOnProcessingInstructions
tokens = text.lstrip('#').split(None, 1)
if tokens[0] in ('language', 'format', 'refresh'):
return ''
if tokens[0] == 'acl':
# TODO: fill acl.auth.php
return ''
if tokens[0] == 'deprecated':
return '<note warning>This page is deprecated</note>\n'
if tokens[0] == 'redirect':
return text + "\n"
if tokens[0] == 'pragma':
# TODO: can do 'description' via 'meta' dokuwiki plugin
return "/* pragma: %s */\n" % " ".join(tokens[1:])
return "/* %s */\n" % text.lstrip('#')
def macro(self, macro_obj, name, args):
def email(args):
mail = args.replace(' AT ', '@')
mail = mail.replace(' DOT ', '.')
return '[[%s|%s]]' % (mail, args)
# function which will just do what parent class would
def inherit(args):
return apply(FormatterBase.macro, (self, macro_obj, name, args))
try:
lookup = {
'BR' : '\\\\',
'MailTo' : email,
'GetText' : args,
'ShowSmileys' : inherit,
}[name]
except KeyError:
lookup = '/* UndefinedMacro: %s(%s) */' % (name, args)
if type(lookup) == FunctionType:
text = lookup(args)
else:
text = lookup
return text
def smiley(self, text):
try:
# https://www.dokuwiki.org/devel:smileys.conf
return {
# note: reverse sorted so that longer smileys get matched first
'X-(' : ':-X',
'{X}' : ':!:',
'{*}' : '<ubu>',
'(./)' : u'',
':))' : ':-P',
':-))' : ':-P',
':-?' : ':-P',
':o' : ':-o',
'{OK}' : ':!:',
'{o}' : '<circ>',
'{i}' : ':!:',
':D' : ':-D',
'B)' : '8-)',
'B-)' : '8-)',
'{3}' : '<3>',
'{2}' : '<2>',
'{1}' : '<1>',
'(!)' : ':!:',
'/!\\' : ':!:',
':\\' : ':-\\',
':))' : ':-)',
':)' : ':-)',
':(' : ':-(',
':-))' : ':-)',
':-)' : ':-)',
':-(' : ':-(',
';)' : ';-)',
'|)' : ':-|',
'|-)' : ':-|',
'>:>' : '^_^',
'<!>' : ':!:',
'<:(' : ':-?',
}[text]
except KeyError:
return text
"""
Send Dokuwiki formatted data.
"""
hardspace = '&nbsp;'
# hardspace = ' '
def __init__(self, request, **kw):
apply(FormatterBase.__init__, (self, request), kw)
self._current_depth = 1
self._base_depth = 0
self.in_pre = 0
self.in_table = 0
self._text = None # XXX does not work with links in headings!!!!!
self.list_depth = 0
self.list_type = ' '
def _escape(self, text, extra_mapping={"'": "&apos;", '"': "&quot;"}):
return saxutils.escape(text, extra_mapping)
def startDocument(self, pagename):
encoding = config.charset
return '<?xml version="1.0" encoding="%s"?>\n<s1 title="%s">' % (
encoding, self._escape(pagename))
def endDocument(self):
result = ""
while self._current_depth > 1:
result += "</s%d>" % self._current_depth
self._current_depth -= 1
return result + '</s1>'
def lang(self, on, lang_name):
return ('<div lang="">' % lang_name, '</div>')[not on]
def sysmsg(self, on, **kw):
return ('<sysmsg>', '</sysmsg>')[not on]
def rawHTML(self, markup):
#return '<html>' + markup + '</html>'
return ''
def pagelink(self, on, pagename='', page=None, **kw):
if on:
return '[[:' + ":".join(pagename.split("/")) + "|"
else:
return ']]'
def interwikilink(self, on, interwiki='', pagename='', **kw):
if on:
if interwiki == 'Self':
return self.pagelink(on, pagename, **kw)
return '[[%s>%s|' % (interwiki, pagename)
else:
return ']]'
def url(self, on, url='', css=None, **kw):
return ('[[%s|' % (self._escape(url)), ']]')[not on]
def attachment_link(self, on, url=None, querystr=None, **kw):
return '{{ %s | %s }}' % (url, querystr)
def attachment_image(self, url, **kw):
return '{{%s|}}' % (url,)
def attachment_drawing(self, url, text, **kw):
return '{{%s|%s}}' % (url, text)
def text(self, text, **kw):
self._did_para = 0
if self._text is not None:
self._text.append(text)
return text
def rule(self, size=0, **kw):
# size not supported
if size >= 4:
return '----\n'
else:
return '-' * size + '\n'
def icon(self, type):
return '<icon type="%s" />' % type
def strong(self, on, **kw):
return ['**', '**'][not on]
def emphasis(self, on, **kw):
return ['//', '//'][not on]
def highlight(self, on, **kw):
return ['**', '**'][not on]
def number_list(self, on, type=None, start=None, **kw):
# list type not supported
if on:
self.list_depth += 1
self.list_type = '-'
else:
self.list_depth -= 1
self.list_type = ' '
return ['', '\n'][on]
def bullet_list(self, on, **kw):
if on:
self.list_depth += 1
self.list_type = '*'
else:
self.list_depth -= 1
self.list_type = ' '
return ['', '\n'][on]
def listitem(self, on, **kw):
# somewhy blockquote uses "listitem" call
return [(' ' * self.list_depth * 2) + self.list_type + ' ', '\n'][not on]
def code(self, on, **kw):
""" `typewriter` or {{{typerwriter}}, for code blocks i hope codeblock works """
return ["''", "''"][not on]
def sup(self, on, **kw):
return ['<sup>', '</sup>'][not on]
def sub(self, on, **kw):
return ['<sub>', '</sub>'][not on]
def strike(self, on, **kw):
return ['<del>', '</del>'][not on]
def preformatted(self, on, **kw):
FormatterBase.preformatted(self, on)
result = ''
if self.in_p:
result = self.paragraph(0)
return result + ['<file>', '</file>\n'][not on]
def paragraph(self, on, **kw):
FormatterBase.paragraph(self, on)
if self.in_table or self.list_depth:
return ''
return ['', '\n\n'][not on]
def linebreak(self, preformatted=1):
return ['\n', '\\\n'][not preformatted]
def heading(self, on, depth, **kw):
# heading depth reversed in dokuwiki
heading_depth = 7 - depth
if on:
return u'%s ' % (u'=' * heading_depth)
else:
return u' %s\n' % (u'=' * heading_depth)
def table(self, on, attrs={}, **kw):
if on:
self.in_table = 1
else:
self.in_table = 0
return ''
def table_row(self, on, attrs={}, **kw):
return ['\n', '|'][not on]
def table_cell(self, on, attrs={}, **kw):
return ['|', ''][not on]
def anchordef(self, id):
# not supported
return ''
def anchorlink(self, on, name='', **kw):
# kw.id not supported, we hope the anchor matches existing heading on page
return ('[[#', ']]') [not on]
def underline(self, on, **kw):
return ['__', '__'][not on]
def definition_list(self, on, **kw):
result = ''
if self.in_p:
result = self.paragraph(0)
return result + ['<gloss>', '</gloss>'][not on]
def definition_term(self, on, compact=0, **kw):
return ['<label>', '</label>'][not on]
def definition_desc(self, on, **kw):
return ['<item>', '</item>'][not on]
def image(self, src=None, **kw):
valid_attrs = ['src', 'width', 'height', 'alt', 'title']
url = src
if '?' in url:
url += '&'
else:
url += '?'
attrs = {}
for key, value in kw.items():
if key in valid_attrs:
attrs[key] = value
# TODO: finish this
if attrs.has_key('width'):
url += attrs['width']
return '{{' + url + '}}'
def code_area(self, on, code_id, code_type='code', show=0, start=-1, step=-1,msg=None):
syntax = ''
# switch for Python: http://simonwillison.net/2004/may/7/switch/
try:
syntax = {
'ColorizedPython': 'python',
'ColorizedPascal': 'pascal',
'ColorizedJava': 'java',
'ColorizedCPlusPlus': 'cpp',
}[code_type]
except KeyError:
pass
return ('<code %s>' % syntax , '</code>')[not on]
def code_line(self, on):
return ('', '\n')[on]
def code_token(self, on, tok_type):
# not supported
return ''
def comment(self, text):
# real comments (lines with two hash marks)
if text[0:2] == '##':
#return "/* %s */\n" % text[2:].strip()
return ''
# Some kind of Processing Instruction
# http://moinmo.in/HelpOnProcessingInstructions
tokens = text.lstrip('#').split(None, 1)
if tokens[0] in ('language', 'format', 'refresh'):
return ''
if tokens[0] == 'acl':
# TODO: fill acl.auth.php
return ''
if tokens[0] == 'deprecated':
return '<note warning>This page is deprecated</note>\n'
if tokens[0] == 'redirect':
return text + "\n"
if tokens[0] == 'pragma':
# TODO: can do 'description' via 'meta' dokuwiki plugin
#return "/* pragma: %s */\n" % " ".join(tokens[1:])
return ''
#return "/* %s */\n" % text.lstrip('#')
return ''
def macro(self, macro_obj, name, args,markup):
def email(args):
mail = args.replace(' AT ', '@')
mail = mail.replace(' DOT ', '.')
return '[[%s|%s]]' % (mail, args)
def showAttachedFiles(args):
args = args.split(',')
return self.attachment_link(1,url=args[0].strip(),querystr=args[1].strip())
# function which will just do what parent class would
def inherit(args):
return apply(FormatterBase.macro, (self, macro_obj, name, args))
try:
lookup = {
'BR' : '\\\\',
'MailTo' : email,
'GetText' : args,
'ShowSmileys' : inherit,
'ShowAttachedFiles' : showAttachedFiles
}[name]
except KeyError:
lookup = '/* UndefinedMacro: %s(%s) */' % (name, args)
if type(lookup) == FunctionType:
text = lookup(args)
else:
text = lookup
return text
def smiley(self, text):
try:
# https://www.dokuwiki.org/devel:smileys.conf
return {
# note: reverse sorted so that longer smileys get matched first
'X-(' : ':-X',
'{X}' : ':!:',
'{*}' : '<ubu>',
'(./)' : u'',
':))' : ':-P',
':-))' : ':-P',
':-?' : ':-P',
':o' : ':-o',
'{OK}' : ':!:',
'{o}' : '<circ>',
'{i}' : ':!:',
':D' : ':-D',
'B)' : '8-)',
'B-)' : '8-)',
'{3}' : '<3>',
'{2}' : '<2>',
'{1}' : '<1>',
'(!)' : ':!:',
'/!\\' : ':!:',
':\\' : ':-\\',
':))' : ':-)',
':)' : ':-)',
':(' : ':-(',
':-))' : ':-)',
':-)' : ':-)',
':-(' : ':-(',
';)' : ';-)',
'|)' : ':-|',
'|-)' : ':-|',
'>:>' : '^_^',
'<!>' : ':!:',
'<:(' : ':-?',
}[text]
except KeyError:
return text

BIN
text_dokuwiki.pyc Normal file

Binary file not shown.