概要
rdiscount という Markdown プロセッサを使います
Sinatra に sinatra-rdiscount というエクステンションがあるのでこれを使います
環境
- macOS 10.15.6
- Ruby 2.7.1p83
- sinatra 2.0.7
準備
bundle init
vim Gemfile
gem "sinatra"
gem "sinatra-rdiscount"
bundle install
サンプルアプリ
テンプレートを表示するのに markdown
という命令を使います
views/index.md
はあとで紹介します
vim app.rb
require 'sinatra/base'
require 'sinatra/rdiscount'
class MyApp < Sinatra::Base
get '/test' do
markdown :index
end
end
vim config.ru
require './app'
run MyApp
Markdown ファイル
普通の Markdown ファイルです
テーブルも使えました
基本的には discount が対応しているフォーマットは使えるので詳しくは discount のドキュメント を御覧ください
vim views/index.md
# Markdown Tests
## List
* Name
* Hawksnowlog
* Age
* 10
## Link
[blog](https://hawksnowlog.blogspot.com/)
## Table
| A | B |
|---|---|
| C | D |
## Horizen
Top
***
Bottom
あとは起動して確認すれば OK です
bundle exec rackup config.ru
スタイルを当てるには
layout_engine
を指定します
vim app.rb
require 'sinatra/base'
require 'sinatra/rdiscount'
class MyApp < Sinatra::Base
get '/test' do
markdown :index, :layout_engine => :erb
end
end
今回はレイアウトに erb を使ってコンテンツの本体は Markdown を想定しています
コンテンツ本体を呼び出す場合には yield
をコールします
view views/layout.erb
<html>
<head>
<title>test</title>
</head>
<body>
<%= yield %>
</body>
</html>
あとはここで CSS や JS などの読み込みをすれば OK です
最後に
Sinatra で Markdown テンプレートを使って Markdown に記載された情報を HTML で返却する方法を紹介しました
Jekyll のような感じのことができるようになると思います
変換部分の本体は rdiscount -> discount というネイティブエクステンションを使っているので一応念頭に入れておきましょう
0 件のコメント:
コメントを投稿