@@ -69,7 +69,8 @@ func main() {
6969 //wikiPagePrinter := NewWikiPagePrinter()
7070 //pipeRunner.AddProcess(wikiPagePrinter)
7171
72- xmlCreator := NewMWXMLCreator ()
72+ useTemplates := true
73+ xmlCreator := NewMWXMLCreator (useTemplates )
7374 pipeRunner .AddProcess (xmlCreator )
7475
7576 printer := NewStringPrinter ()
@@ -475,14 +476,16 @@ func (p *TripleAggregateToWikiPageConverter) convertUriToWikiTitle(uri string, u
475476// --------------------------------------------------------------------------------
476477
477478type MWXMLCreator struct {
478- InWikiPage chan * WikiPage
479- Out chan string
479+ InWikiPage chan * WikiPage
480+ Out chan string
481+ UseTemplates bool
480482}
481483
482- func NewMWXMLCreator () * MWXMLCreator {
484+ func NewMWXMLCreator (useTemplates bool ) * MWXMLCreator {
483485 return & MWXMLCreator {
484- InWikiPage : make (chan * WikiPage , BUFSIZE ),
485- Out : make (chan string , BUFSIZE ),
486+ InWikiPage : make (chan * WikiPage , BUFSIZE ),
487+ Out : make (chan string , BUFSIZE ),
488+ UseTemplates : useTemplates ,
486489 }
487490}
488491
@@ -519,12 +522,35 @@ func (p *MWXMLCreator) Run() {
519522
520523 wikiText := ""
521524
522- for _ , fact := range page .Facts {
523- wikiText += fmtFact (fact .Property , fact .Value )
524- }
525+ if p .UseTemplates && len (page .Categories ) > 0 { // We need at least one category, as to name the (to-be) template
526+ wikiText += "{{" + page .Categories [0 ] + "\n " // TODO: What to do when we have multipel categories?
525527
526- for _ , cat := range page .Categories {
527- wikiText += fmtCategory (cat )
528+ // Add facts as parameters to the template
529+ for _ , fact := range page .Facts {
530+ wikiText += "|" + fact .Property + "=" + fact .Value + "\n "
531+ }
532+
533+ // Add categories as multi-valued call to the "categories" value of the template
534+ wikiText += "|categories="
535+ for i , cat := range page .Categories {
536+ if i == 0 {
537+ wikiText += cat
538+ } else {
539+ wikiText += "," + cat
540+ }
541+ }
542+
543+ wikiText += "\n }}"
544+ } else {
545+ // Add fact statements
546+ for _ , fact := range page .Facts {
547+ wikiText += fmtFact (fact .Property , fact .Value )
548+ }
549+
550+ // Add category statements
551+ for _ , cat := range page .Categories {
552+ wikiText += fmtCategory (cat )
553+ }
528554 }
529555
530556 xmlData := fmt .Sprintf (wikiXmlTpl , page .Title , pageTypeToMWNamespace [page .Type ], time .Now ().Format ("2006-01-02T15:04:05Z" ), wikiText )
0 commit comments