Warning: file_put_contents(): Only 0 of 10 bytes written, possibly out of free disk space in /var/web/h/heller.christian/htdocs/www.plomlompom.de/PlomWiki/plomwiki.php on line 287
PlomWikiImport
PlomWiki: Zur Start-Seite Suche Letzte Änderungen (Feed) Letzte Kommentare (Feed)
Impressum Datenschutz-Erklärung

PlomWikiImport

Ansicht Bearbeiten Anzeige-Titel setzen Versions-Geschichte Seiten-Passwort setzen AutoLink-Anzeige ein-/ausschalten

Arbeit an einem Skript zum Import PmWiki -> PlomWiki.

#!/bin/bash 
 
rm -rf pages/ 
mkdir pages 
mkdir pages/diffs 
 
group='Mind' 
 
filenames=`ls | grep $group'.[A-Za-z0-9-]\+$' | sed 's/'$group'.\([A-Za-z0-9-]\+\)$/\1/g'` 
for title in $filenames 
do 
  filename=$group.$title 
  echo 'Working on: '$filename 
  cat $filename \ 
  | grep '^text=' \ 
  | sed 's/^text=//' \ 
  | sed 's/%0a/\n/g' \ 
  > pages/$title; 
  truncate --size=-1 pages/$title 
 
  cat $filename | awk ' 
  BEGIN { RS = "\nhost";   FS = "\n" } 
 
  { A[0] = $2; A[1] = $3; A[2] = $4; A[3] = $5; A[4] = $6; A[5] = $7; A[6] = $8; 
    A[7] = $9; A[8] = $10; A[9] = $11; A[10] = $12; A[11] = $13; A[12] = $14; 
    author = csum = diff = "!" 
 
    for (var in A) 
    { if ( match(A[var], /^author/) ) 
      { author = A[var] 
        sub(/^author:[0-9]+=/, "", author) } 
      if ( match(A[var], /^csum/) ) 
      { csum = A[var] 
        sub(/^csum:[0-9]+=/, "", csum) } 
      if ( match(A[var], /^diff/) ) 
      { diff = A[var] 
        match(diff, /^diff:[0-9]+:/) 
        time = substr(diff, 6, RLENGTH - 6) 
        sub(/^diff:[0-9]+:[0-9]+:(minor)?=/, "!diff", diff) } } 
 
    if ( diff != "!" ) 
    { print "!!" 
      print time 
      print author 
      print csum 
      print diff 
      print "%%" } } 
  ' \ 
  | sed 's/^!diff/%0a/g' \ 
  | sed 's/%0a\([0-9,]\+\)\([acd]\)\([0-9,]\+\)/\n\3\2\1\n/g' \ 
  | sed 's/^\([0-9,]\+\)a\([0-9,]\+\)$/\1d\2/g' \ 
  | sed 's/^\([0-9,]\+\)d\([0-9,]\+\)$/\1a\2/g' \ 
  | sed 's/\([^\n]\+\)%0a---\([^\n]\+\)/\2\n\1/g' \ 
  | sed 's/%0a> /%0a</g' \ 
  | sed 's/%0a%3c /%0a>/g' \ 
  | sed 's/^%0a//g' \ 
  | sed 's/%0a$//g' \ 
  | sed 's/%0a\\ No newline at end of file//g' \ 
  | sed 's/%0a>/\n>/g' \ 
  | sed 's/%0a</\n</g' \ 
  | grep -v '^$' \ 
  | sed 's/^!$//' > temp 
 
  x=`cat temp | grep '^!!$' | wc -l` 
  cat temp | awk -v x=$x ' 
  { if ( match($0, "^!!$" ) ) 
    { i++ 
      print x - i } 
    else 
      print }' \ 
  >> pages/diffs/$title; 
  rm temp 
 
done 

Das Ergebnis ist nicht perfekt und bedarf einiger Nachkorrekturen, vor allem in den Diffs. Zu dem Zweck habe ich mir eine Diff-Probleme-Diagnostik-und-Reparatur-Suite gebastelt fürs PlomWiki: https://github.com/plomlompom/PlomWiki/blob/master/plugins/DiffRepair.php

Kommentare

Keine Kommentare zu dieser Seite.

Schreibe deinen eigenen Kommentar

Kommentar-Schreiben derzeit nicht möglich: Kein Captcha gesetzt.

PlomWiki-Engine lizensiert unter der AGPLv3. Quellcode verfügbar auf GitHub.