Markdown
shell
pukiwiki
Crowi

PukiWiki の文書を Markdown に変換するワンライナー(一部 crowi-plus 仕様)

More than 1 year has passed since last update.


概要


  • WESEEK, Inc. で、PukiWiki Plus! から crowi-plus に移行する際に使ったワンライナー


    • みんなでせこせこ「3pages/day」とかのノルマを設けて1週間ほどかけて移行



  • Pukiwiki 記法の文書を Markdown に変換する

  • Sonots' PukiWiki Plugin の lsx の記法(#lsx)は crowi-plugin-lsx の記法に置換


コード

PukiWiki の文書は予め pukiwiki.txt として保存

cat pukiwiki.txt | sed -e 's/ \[#[0-9a-z]\+\]$//g' -e 's/^\*\*\*/###/g' -e 's/^\*\*/##/g' -e 's/^\*/#/g' -e 's/^---/        -/g' -e 's/^--/    -/g' -e 's/^\(\s*\)-\([^ ]\)/\1- \2/g' -e 's/&br;/<br>/g' -e 's/^#pre{*/```/g' -e 's/^}}*/```/g' -e 's/%%/~~/g' -e "s/^\#lsx/`echo -ne '\u0024'`lsx()/g" | less


コード詳細


  • 末尾のハッシュを削る


    • -e 's/ \[#[0-9a-z]\+\]$//g'



  • 見出しを # に変更


    • -e 's/^\*\*\*/###/g' -e 's/^\*\*/##/g' -e 's/^\*/#/g'



  • リストの --/---\t\t-/\t- に変換する


    • -e 's/^---/ -/g' -e 's/^--/ -/g'




  • -の後が空白じゃない場合はスペースを一つ入れる


    • -e 's/^\(\s*\)-\([^ ]\)/\1- \2/g'




  • &br;<br> へ変換する


    • -e 's/&br;/<br>/g'




  • #pre{{` に変換する



    • -e 's/^#pre{*/`/g'




  • }}` に変換する



    • -e 's/^}}*/`/g'

    • - #pre{{ の閉じタグ以外(#table_edit2など)でも使われているが、とりあえず一律変換



  • 打ち消し線 は、%%~~ に変換する


    • -e 's/%%/~~/g'




  • #lsx$lsx() に変換する


    • -e "s/^\#lsx/`echo -ne '\u0024'`lsx()/g"




Lisence


  • Public Domain

  • 編集リクエスト歓迎