Upload
masashi-umezawa
View
593
Download
0
Embed Size (px)
Citation preview
Pillarとは??● 文書生成ツール
○ https://github.com/pillar-markup
○ SphinxやRe:VIEWのSmalltalk版
● Wikiに似た記法のテキストから各種文書を生成できる
○ HTML
○ LaTeX
○ Markdown
○ Pillar
○ text
○ Beamer
○ deck.js
● Smalltalkがわかれば拡張も容易
Pillarの利用例
● PillarHub
○ http://pillarhub.pharocloud.com
■ Pillerで書かれた文書の置き場
○ オンラインエディタでプレビューしながら文書の作成が可能
● Book
○ Book Skeleton
■ https://github.com/pillar-markup/book-skeleton
○ 改訂版Pharo by ExampleやEnterprise Pharo などがPillarで書かれている
● Ecstatic
○ 静的サイトジェネレータ
■ https://github.com/guillep/ecstatic
入手の仕方
● SmalltalkHubからロード○ Pillar.imageとして保存
Gofer new smalltalkhubUser: 'Pier' project: 'Pillar'; configuration; load.(Smalltalk at: #ConfigurationOfPillar) load
● またはインストール済みイメージをCIサーバから○ https://ci.inria.fr/pharo-
contribution/job/Pillar/PHARO=40,VERSION=stable,VM=vm/lastSuccessfulBuild/artifact/Pillar.zip
● Pharo VMは別途取得
$ curl get.pharo.org/vm40 | bash
チュートリアル
● Enterprise PharoのPillarの章
○ HTML版○ Pillar版
■ Pillarフォーマットの網羅的な例にもなっているのでオススメ
● Pillar Cheet Sheet○ http://www.cheatography.
com/benjaminvanryseghem/cheat-sheets/pillar/
○ Tableの箇所が一部間違っているので注意すること
Hello, world
● Pillarを実行
○ output.htmlが生成される
!Hello, world!!こんにちは世界
$ ./pharo Pillar.image pillar export --to=html first.pillar
● first.pillar というファイルを作成
メタ情報の記述
● 文章の先頭にJSON(STON)形式で記述
{ "title": "こんにちはPillar", "author": "ume"}!Hello, world!!こんにちは世界
● 共通の設定はpillar.confに記述
{ "level1": {"numbering": true, "size": 1, "renderAs": "number"}}
テーブル
● 先頭|で指定
○ !が続くとヘッダ
○ { or } or !が続くと位置の指定 (右寄せ、左寄せ、中央寄せ)
{ "title": "こんにちはPillar"}!Hello, world!!こんにちは世界
|!ヘッダ1 |!ヘッダ2 |!ヘッダ3|{セル1 |}セル2 ||セル2
リンク
● *label>url* で通常リンク
● +caption>url+ で画像リンク
● @ でアンカー
{ "title": "こんにちはPillar"}@top!Hello, world!!こんにちは世界
*Pharo>http://pharo.org*+Pharo image>http://pharo.org/web/files/pharo.png+*top>@top*
コードブロック
● [[[と]]]で囲む
● language=xxx で言語を指定
● eval=true で実行結果を表示可能 (但しSmalltalkに限る)
{ "title": "こんにちはPillar"}[[[language=smalltalk|lineNumber=true| sum |sum := (1 to: 100) sum.]]]
[[[eval=truestream << ('sum = ', (1 to: 100) sum asString).]]]
RAWブロック
● {{{と}}}で囲む
● 出力言語をそのまま埋め込むことができる
{ "title": "こんにちはPillar"}
__以下HTML__
{{{<hr><div>HTML文書そのまま</div>}}}
その他、強調など
● "" (ダブルクォート2つ)で囲むとボールド
● '' (シングルクォート2つ)で囲むとイタリック
● __ で囲むとアンダーライン
● -- で囲むと打ち消し線
{ "title": "こんにちはPillar"}
- ""ボールド""- ''イタリック''- __アンダーライン__- --打ち消し--
エディタ用プラグイン
● Pillarのシンタックスハイライトなどをしてくれる
○ Emacs○ Vim○ TextMate○ Atom
複数ファイルの扱い
● pillar.confに以下を指定
○ inputFileNames○ outputDirectory○ separateOutputFiles
{ "level1":
{"numbering": true, "size": 0, "renderAs": "number"}, "outputDirectory" : "result", "inputFiles" : ["first.pillar","second.pillar"], "separateOutputFiles" : true}
$ ./pharo Pillar.image pillar export --to=html
テンプレートの使用
● pillar.confで出力フォーマットに応じたテンプレートを指定できる
● テンプレートはMustache形式
{ "level1": {"numbering": true, "size": 0, "renderAs": "number"}, "configurations" : { "html": { "outputType" : #html, "template" : "pillar-template.html" } }}
HTMLテンプレート例
● Safariでも文字化けしないようにcharsetを指定
● addressタグ部分に値が入るように設定
<!DOCTYPE html><html lang="ja"> <head> <meta charset="UTF-8"> <title>{{{title}}}</title> </head> <body> <div>{{{content}}}<div> <address>{{address}}</address> </body></html>
first.pillar では...
● メタ情報部分にaddressを入れておく
{ "title": "こんにちはPillar", "address": "[email protected]"}
!第1章!!これこれ
あれあれ
Pillar の拡張
● PRDocumentWriterを継承して各種のwriterが作られている
○ visitXXX: を実装していけば良い (XXX部分はPillarのパースされた要素)
○ PRTextWriterやPRMarkdownWriterを見るとなんとなくわかる
GitHub Flavored Markdownの拡張例
● PillarにPRGitHubMarkdownWriterがあるが...○ コードブロックのサポートが弱い
(``` が使えない)ので追加してみる
○ 参考: GitHub Flavored Markdown
PRGitHubMarkdownWriterにメソッド追加
● コードブロック用のvisitメソッドはvisitScript:なのでオーバーライド
○ 引数はPRScriptオブジェクト、languageなどの情報が取れる
○ canvasを使って書いていく
PRGitHubMarkdownWriter >> visitScript: aScript canvas newLine. canvas raw: '```'. aScript language isSpecified ifTrue:[canvas raw: aScript language class standardName]. canvas newLine. canvas raw: aScript text trimBoth. canvas newLine. canvas raw: '```'
markdown-test.pillar でテスト
● コードブロックのプロパティにlanguage=smalltalkを入れておく
[[[language=smalltalkTranscript cr; show: 'hi'.]]]
$ ./pharo Pillar.image pillar export --to=githubmarkdown markdown-test.pillar
$ ./pharo Pillar.image pillar export --to=markdown markdown-test.pillar
● markdownとgithubmarkdownで出力