Source code for lodstorage.mwTable
"""
Created on 2020-08-21
@author: wf
"""
# redudant copy
# original is at
# https://github.com/WolfgangFahl/py-3rdparty-mediawiki/blob/master/wikibot/mwTable.py
[docs]
class MediaWikiTable(object):
"""
helper for https://www.mediawiki.org/wiki/Help:Tables
"""
def __init__(
self, wikiTable=True, colFormats=None, sortable=True, withNewLines=False
):
"""
Constructor
"""
self.colFormats = colFormats
cssDelim = ""
if wikiTable:
cWikiTable = "wikitable"
cssDelim = " "
else:
cWikiTable = ""
if sortable:
cSortable = "sortable"
else:
cSortable = ""
self.start = '{|class="%s%s%s"\n' % (cWikiTable, cssDelim, cSortable)
self.header = None
self.content = ""
self.end = "\n|}\n"
self.withNewLines = withNewLines
pass
[docs]
def addHeader(self, record):
"""
add the given record as a "sample" header
"""
if self.withNewLines:
headerStart = "|+"
firstColDelim = "\n!"
colDelim = firstColDelim
else:
headerStart = "|+\n"
firstColDelim = "!"
colDelim = "!!"
self.header = headerStart
first = True
for key in record.keys():
if first:
delim = firstColDelim
first = False
else:
delim = colDelim
self.header += "%s%s" % (delim, key)
[docs]
def addRow4Dict(self, record):
if self.header is None:
self.addHeader(record)
if self.withNewLines:
rowStart = "\n|-"
colDelim = "\n|"
else:
rowStart = "\n|-\n"
colDelim = "||"
self.content += rowStart
for key in record.keys():
value = record[key]
if self.colFormats is not None and key in self.colFormats:
colFormat = self.colFormats[key]
else:
colFormat = "%s"
self.content += ("%s" + colFormat) % (colDelim, value)
[docs]
def fromListOfDicts(self, listOfDicts):
for record in listOfDicts:
self.addRow4Dict(record)
pass
[docs]
def asWikiMarkup(self):
"""
convert me to MediaWiki markup
Returns:
string: the MediWiki Markup for this table
"""
markup = (
self.noneReplace(self.start)
+ self.noneReplace(self.header)
+ self.noneReplace(self.content)
+ self.noneReplace(self.end)
)
return markup