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 noneReplace(self, value): return "" if value is None else value
[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