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