GroovyでMarkdownパーサーを作ろう #2「HTML出力部分の作成」
Groovy! (挨拶)
どうも、ふも(@fumokmm)です。
はじめに
さて、それでは早速コードを書いて行きたいと思います。といってもまだ、Markdownの変換ロジックには入りません。
今回は設定ファイルを読み込んで、その内容をプレーンなHTMLにそのまま埋め込んで出力させるというところまで作って行きたいと思います。
作成するスクリプト
スクリプト名は前回決めた通り、fumomarkdowng
にしようと思うので、
fumomarkdowng.groovy
になります。
そして、マークダウン形式で内容が書かれたファイルは、
hoge.md
にしてみましょう。
外部ファイルの内容読み込み
何はともあれ、hoge.md
の内容をまず読み取るところから。
Groovyでは、外部ファイルの読み込みはFile#text
*1を利用して行えます。
new File('path to file').text
コマンドライン引数はargs
という暗黙変数にString[]型
として格納されます。第一引数の文字列の取得は
args[0]
のようにします。ということで、外部ファイルの内容を文字列で取得し、contents
という名前の変数に格納しておくことにします。
// 第一引数の内容を読み込む def contents = new File(args[0]).text
HTMLを出力
で、次はHTMLの出力部分。ひとまず標準出力への出力でいいかな、ファイルへ出力する場合はリダイレクトすればいいし。
Groovyでは標準出力への出力はprint
やprintln
やprintf
を使います。
複数行の文字列は ''' か """ で囲みます*2*3。今回は変数展開を使いたいので、""" の方を使いましょう。
// 読み込んだ内容をHTMLのテンプレートに流し込む println """<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>fumomarkdowng</title> </head> <body> ${contents} </body> </html>"""
まぁ、こんな感じでしょうか。
タグの中身は${contents}
なので、ひとまず読み込んだファイルの中身をそのまま入れ込む感じです。
実行してみる
$ groovy fumomarkdowng.groovy hoge.md <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>fumomarkdowng</title> </head> <body> # level1 ## level2 ### level3 </body> </html> $
うまく行きました、予想通りです。
あ、ちなみに、hoge.md
の内容はお察しの通り
# level1 ## level2 ### level3
です。まだ本題であるMarkdownの変換処理を何も書いていないのでそのまま出力されているわけです。
おわりに
さて、次回からは変換ロジックを書いて行きたいと思います。まずは簡単な見出しあたりからかなぁ。ではまた!
今回使用したソースはこちら。
次の記事:GroovyでMarkdownパーサーを作ろう #3「Headers(見出し)の実装」 - No Programming, No Life
前の記事:GroovyでMarkdownパーサーを作ろう #1「名前決め」 - No Programming, No Life