0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Markdown のコードブロックを動的に読み込ませる

Last updated at Posted at 2021-09-11

概要

次の処理をするスクリプトである.

下左図のように "Markdown もどき" を書いておき、本スクリプトを適用すると
下右図のように a.rb の内容が展開される、というものである.

動的にマークダウンを更新したいときに役立つのかも知れない.1

変換前 変換後
image.png image.png

コード

update_mdpre.sh

#!/bin/bash

ERROR=

test -z "$1" && {
  echo '$1 が指定されていません'
  exit 2
}

# 「^(cat ファイル)$」というパターンに一致したらファイルの存在有無をチェックする
for f in `sed -r -n -e 's%^\(cat (.*)\)$%\1%p' $1`
do
    test ! -f $f && {
        echo "ERROR: 存在しません => <$f>"
        # 見つからないファイルがあったのでエラーフラグを立てておく
        ERROR=1
    }
done

test ! -z "$ERROR" && {
    echo "見つからないファイルがあったため中断します"
    exit 2
}

# 改行区切りで読み出す
IFS=$'\n'

# for line in `cat $1`; do 〜 done だと空行が読み込まれなかったので
# while read line; do〜done を使った
while read line; do
    # 「^(cat ファイル)$」で定義された「ファイル」のパスを得る
    F=`echo $line | sed -n -r 's/^\(cat (.*)\)$/\1/p'`
    if [ ! -z "$F" ]; then
        # ファイルが指定されていたので、cat で表示させる
        cat $F
    else
        # 加工せずに、一行をそのまま表示する
        echo $line
    fi
done < $1

使い方

$ update_mdpre.sh <Markdownファイル> > 出力ファイル

 

以上

  1. もしかしたらすでに動的にファイルを読み込む機能を持つ Markdown エディタが存在しているのかも知れない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?