5000164 is here

ブログを WordPress 👉 Octopress 👉 Hugo と変えてきて記事の書式がバラバラだったのをある程度整えた時の作業ログ 🗒️

Published 2018.1.19 by 菅原 浩

古い記事のメンテとかはしていないんだけど、ブログのデザインを変えた時に見てみたら思ったよりも崩れていたのでまとめてある程度修正することにした。
まだ崩れてる記事とかもあるけど、ひとつひとつ見ていくのは大変なので正確さではなくざっくりなんとなくを目的として作業を行う。 💡

前提となる記事の状態

ブログの記事の書き方は以下の変遷を辿ってきた。

という状態で時期によって記事の書き方がごちゃごちゃ。 😩

見方

以下作業ログ

1
^(.*)$\n=+

👇

1
## $1\n

h1h2 にしてるのは見出しレベルの h2 だけ使うことにしたから。
h1 のままがいいなら # $1\n で置換すればいい。

1
^(.*)$\n--+

👇

1
## $1\n

---- を使ってたやつはリストの - があったので最低 2 個つながっていることをチェックしている。

1
^\* 

👇

1
- 

リストに使ってる *- に統一するため。
* だけだと記事で普通に使ってるからそこそこ多く引っかかる。
行頭チェックと * の後にスペースが入ってるかチェックすることで絞り込む。
それでもひっかかるものはあるのであとは手作業で直す。

1
"$\n^\++$

👇

1
"\n+++\n
1
(^$\n){2,}

👇

1
\n

Front Matter の後に 1 行空いてたり空いてなかったりしたのを統一するため。
最初は

1
^\++$\n^([^t^\n])

👇

1
+++\n\n$1

というやり方でやってたんだけど、これだとなぜか行末のスペースが消えてしまう。
ページ内で置換した場合は消えないのに、ディレクトリ指定で一気に置換すると消える。
困る。
なので、行末にスペースがある行に少しでも触れる正規表現だとだめなのでは?という仮説のもとにそこに触れないようにやってみたら消えずに済んだ。
なので一度全部のファイルに改行を入れてから 2 行以上の空行を 1 行にすることで対応した。
最初に " とか入れてるのは上の方の +++ に引っかからないようにするため。
+++ 内はすでに一度整備していて、最後に " が来ることがわかってるからこの条件でいけた。
すぐできるだろうしついでにあそこも直すかーという気持ちで始めたのにここだけ時間かかって疲れた。
しかもそれでも結局なぜか行末のスペースが消えてるところもあったので見直して手で直した。
あと 2 行以上の空行を削除でやるとコードの中の改行が消えてだめだとわかった。
そこも手で直した。

1
 

👇

1
 
1
^ +$

👇

1
 
1
(^$\n){2,}

👇

1
\n

  を消したり空白だけの行を消したりして空行を 1 行にした。

1
<a.*href="(.*?)".*>(.*?)<.*$

👇

1
[$2]($1)
1
<pre.*?>

👇

1
    ```
1
</pre.*?>

👇

1
    ```
1
<blockquote.*?>

👇

1
>>>
1
<br.*?>

👇

1
  \n
1
<.*?>

👇

1
 

残しておきたいタグを Markdown に有効なものに置換してから全 HTML タグを削除。
でもこれはコードの中のものや必要なリンクを消すってわかってるのでちゃんと見返す必要がある。

1
^ +([^ ]+)$

👇

1
$1

文字の前にある空白を削除。

1
^ +$

👇

1
 

空白だけの行の内容を削除。

1
find . -name "*.md" -type f -print0 | xargs -0 gsed -i -e '$ a korehakesutext'
1
korehakesutext

👇

1
 

全てのファイルの最後に空行を追加しようと思ったら正規表現でファイルの最後、というのが取れなかったので sed で追加することにした。
Mac の sed は POSIX sed で使いづらいらしく、 brew install gnu-sed で GNU sed を入れて使った。
空行の追加方法がわからなかったのでダミーの文字列を入れてからダミーの文字を消すことにした。
追加した後にまた 2 行以上の空行を消そう、と思ったらファイルの最後の空行 2 行になってるのは正規表現では検出できないっぽかったので、全てのファイルには追加しないで、日付が古くてファイルの最後に改行が入ってなさそうなものだけに絞って改行を追加した。
結局バラバラなままだしこれはやらなくてもよかった。

まとめ

一括で変換かけたけど見直したらうまくいってないところが思ったよりも多くて、けっこう手で直したので疲れた。 😓
記事のソースとなるデータはできるだけ構造化してある状態で保存しておきたいと思った。

おまけ

WebStorm の Markdown の設定で行末のスペースを削除する設定になっていたので不要な変更点が出たりした。
Hugo は Markdown に厳密で行末にスペース 2 つないと改行しないのでこの設定は切っておくといい。
あと、最近絵文字いいなという気分が高まってきたのでブログに絵文字を使ってみた。 ✨