wani 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +262 -0
- data/assets/bootstrap.rb +9 -0
- data/assets/build.json +6 -0
- data/assets/fonts/IBMPlexSansJP-Bold.woff2 +0 -0
- data/assets/fonts/IBMPlexSansJP-Regular.woff2 +0 -0
- data/assets/highlight.css +117 -0
- data/assets/index.html +39 -0
- data/assets/rabbit.svg +1 -0
- data/assets/rouge.LICENSE +187 -0
- data/assets/runtime.LICENSE +21 -0
- data/assets/runtime.NOTICE +1292 -0
- data/assets/runtime.pr672.js +3143 -0
- data/assets/shark.svg +1 -0
- data/assets/speaker.html +2 -0
- data/assets/style.css +103 -0
- data/assets/time-expired.png +0 -0
- data/assets/wani.wasm +4 -0
- data/exe/wani +3 -0
- data/lib/wani/browser/application.rb +189 -0
- data/lib/wani/browser/bridge_progress.rb +19 -0
- data/lib/wani/browser/fonts.rb +60 -0
- data/lib/wani/browser/layout.rb +107 -0
- data/lib/wani/browser/presentation_timer.rb +66 -0
- data/lib/wani/browser/renderer.rb +80 -0
- data/lib/wani/cli.rb +134 -0
- data/lib/wani/core/fonts.rb +49 -0
- data/lib/wani/core/parser.rb +127 -0
- data/lib/wani/core/presentation.rb +15 -0
- data/lib/wani/core/safe_html.rb +74 -0
- data/lib/wani/core/validator.rb +31 -0
- data/lib/wani/fonts/http.rb +45 -0
- data/lib/wani/fonts/manager.rb +190 -0
- data/lib/wani/server/application.rb +92 -0
- data/lib/wani/server/http_server.rb +34 -0
- data/lib/wani/version.rb +3 -0
- data/lib/wani.rb +4 -0
- data/templates/images/workflow.svg +36 -0
- data/templates/slides.md +182 -0
- data/third_party/gems/kramdown-LICENSE +30 -0
- data/third_party/gems/kramdown-parser-gfm-LICENSE +21 -0
- data/third_party/gems/rexml-LICENSE +22 -0
- data/third_party/ibm-plex-sans-jp/LICENSE.txt +93 -0
- data/third_party/ibm-plex-sans-jp/README.md +39 -0
- data/third_party/ibm-plex-sans-jp/provenance.json +20 -0
- data/third_party/ruby-wasm-loader/LICENSE +21 -0
- data/third_party/ruby-wasm-loader/NOTICE +1292 -0
- data/third_party/ruby-wasm-loader/README.md +35 -0
- data/third_party/ruby-wasm-loader/browser.script.iife.js +3143 -0
- data/third_party/ruby-wasm-loader/provenance.json +10 -0
- metadata +159 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: e9338fdd8ed02941cd6d07cc6476b48cc2654be6206c7cb2ff45cb19373ded1c
|
|
4
|
+
data.tar.gz: 2ad82dddc2290379193f50caa0c9fdcfc1ffe78318eae2cfe7bc60ab999967ee
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d92b2366d09835d908a122dbd85163548dbdcaafc0979eae8cd37e63763635faef4b3e4d93cd9c742d46a328217b259e547b54191fd2e843f8228a10161f4985
|
|
7
|
+
data.tar.gz: 112acd0ee5f293e4702abafc878dcdba4a4722508701260e5f9f92ea0ca276a7c9e872ef648a50271ed8cb372ae2dc0e3394002325fa76153347c37cc5f9b940
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 ledsun
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# WANI — Web Assembly Narrative Illustrator
|
|
2
|
+
|
|
3
|
+
Markdown からスライドを作り、ブラウザー内の Ruby でプレゼンテーションするツールです。
|
|
4
|
+
Rabbit へのオマージュとして、因幡の白兎に登場するワニ(鮫)にちなんだ名前です。
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
<img src="docs/images/wani-characters.png" alt="ノートパソコンを使う兎と、それを見守るワニ" width="640">
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<p align="center">
|
|
11
|
+
<img src="docs/images/rabbit.png" alt="ノートパソコンを持った兎" width="240">
|
|
12
|
+
<img src="docs/images/wani.png" alt="笑顔のワニ" width="240">
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
## インストールと開始
|
|
16
|
+
|
|
17
|
+
現在はソースから gem をビルドして利用します。RubyGems.org への公開は行っていません。
|
|
18
|
+
Ruby 3.2 以上が必要です。ソースのビルドには Node.js 22.13 以上、npm、Bundler が必要ですが、
|
|
19
|
+
ビルド済み gem の利用に Node.js は不要です。
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
bundle config set --local path vendor/bundle
|
|
23
|
+
bundle install
|
|
24
|
+
npm ci
|
|
25
|
+
bundle exec rake build:wasm
|
|
26
|
+
|
|
27
|
+
gem build wani.gemspec
|
|
28
|
+
gem install ./wani-0.1.8.gem
|
|
29
|
+
|
|
30
|
+
wani new my-talk
|
|
31
|
+
cd my-talk
|
|
32
|
+
wani check
|
|
33
|
+
wani serve
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
rbenv 環境でインストール後に `wani: command not found` となる場合は、
|
|
37
|
+
`rbenv rehash` を実行して実行ファイルの shim を更新してください。
|
|
38
|
+
|
|
39
|
+
表示された http://127.0.0.1:8000/ を Chrome または Edge で開きます。
|
|
40
|
+
`slides.md` を編集したらブラウザーを再読み込みしてください。
|
|
41
|
+
生成されるプロジェクトには、各種Markdown記法を紹介する10ページの `slides.md` と、`images/` 内のサンプルSVG画像が含まれます。
|
|
42
|
+
HTML / CSS / JS ランタイム / wasm は gem が保持し、各プロジェクトへコピーしません。
|
|
43
|
+
|
|
44
|
+
## コマンド
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
wani new DIRECTORY
|
|
48
|
+
wani check [FILE]
|
|
49
|
+
wani serve [FILE] --port 8000 --bind 127.0.0.1
|
|
50
|
+
wani --version
|
|
51
|
+
wani --help
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- `new`: サンプルを生成します。既存のディレクトリ、ファイル、シンボリックリンクは上書きしません。
|
|
55
|
+
- `check`: ファイル省略時は `slides.md`。Front Matter・区切り・タイトル・ノート・画像を検証します。
|
|
56
|
+
エラーは終了コード1、成功および警告のみの場合は0です。実際のはみ出しはブラウザーが検出します。
|
|
57
|
+
- `serve`: 指定ファイルを静的配信します。省略時は `slides.md`。
|
|
58
|
+
`--port` / `-p`、`--bind` / `-b` で変更でき、Ctrl+C で正常終了します。
|
|
59
|
+
初期バインド先は127.0.0.1、ポートは8000です。ポート0を指定すると利用可能なポートを選びます。
|
|
60
|
+
|
|
61
|
+
Markdown の画像は、そのファイルを基準に相対パスで記述します。
|
|
62
|
+
PNG / JPEG / WebP / SVG に対応します。HTTP(S)画像も表示できますが、`check` の存在確認はローカル画像だけです。
|
|
63
|
+
|
|
64
|
+
## Markdown
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
---
|
|
68
|
+
time_limit: 5
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
# Ruby on WebAssembly
|
|
72
|
+
|
|
73
|
+
**Ruby** がブラウザーでスライドを描画します。
|
|
74
|
+
|
|
75
|
+

|
|
76
|
+
|
|
77
|
+
<!--
|
|
78
|
+
notes:
|
|
79
|
+
ここで仕組みを説明します。
|
|
80
|
+
**ノートの Markdown** も使えます。
|
|
81
|
+
-->
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 次のスライド
|
|
86
|
+
|
|
87
|
+
見出しレベルが違っても、タイトルのデザインは同じです。
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
独立した `---` の行でスライドを分割し、各ページの最初の見出しをタイトルにします。
|
|
91
|
+
本文には段落、強調、リスト、引用、コード、リンク、画像、表を使えます。
|
|
92
|
+
コードフェンスに `ruby` や `js` などの言語名を付けると、スライド・ノート・PDFで構文ハイライトが適用されます。
|
|
93
|
+
`<!-- notes: ... -->` は発表者ノート、`<!-- page-footnote: ... -->` はページごとの脚注です。
|
|
94
|
+
|
|
95
|
+
設定、各記法の例、対応範囲と制約は [Markdown記法ガイド](docs/markdown.md) を参照してください。
|
|
96
|
+
|
|
97
|
+
## 発表と印刷
|
|
98
|
+
|
|
99
|
+
| キー | 操作 |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| → / Space / PageDown | 次のスライド |
|
|
102
|
+
| ← / PageUp | 前のスライド |
|
|
103
|
+
| Home / End | 最初 / 最後 |
|
|
104
|
+
| F | 全画面の切り替え |
|
|
105
|
+
| Esc | 全画面を解除 |
|
|
106
|
+
| N | 発表者ノートを別ウィンドウに開く |
|
|
107
|
+
|
|
108
|
+
`#slide=3` のような URL で特定のスライドを開けます。
|
|
109
|
+
ノート画面は本文・ノート・ページ番号をメインから一方向で同期します。
|
|
110
|
+
開けない場合はブラウザーのポップアップ設定を確認してください。
|
|
111
|
+
|
|
112
|
+
スライドは1920×1080、16:9、白背景です。タイトル・本文・脚注を分け、画面に合わせて全体を拡大縮小します。
|
|
113
|
+
画像とフォントを読み込み、幅と高さに合わせて文字サイズを自動調整します。
|
|
114
|
+
画像は比率を維持して縦に配置し、画像だけの場合は本文領域を広く使います。
|
|
115
|
+
収まらない内容は分割・スクロールせず、番号と内容を含む警告を表示します。
|
|
116
|
+
画像の読み込みを最大15秒待ち、失敗やタイムアウトを通知します。
|
|
117
|
+
|
|
118
|
+
ツールバーの「PDF」「ノート付き PDF」から印刷ダイアログを開き、PDFとして保存します。
|
|
119
|
+
Ctrl+P でも印刷できます。
|
|
120
|
+
用紙は320×180mmを指定し、ブラウザーのヘッダー・フッターはオフにしてください。
|
|
121
|
+
通常版は1スライド1ページ、ノート付きは各スライドの次に対応するノートを置きます。
|
|
122
|
+
画像・フォントの完了後に印刷し、ページごとの脚注とページ番号を出力します。兎と鰐の装飾は常に非表示です。
|
|
123
|
+
装飾はページの進捗に連動します。前半ではワニが右から左へ増えて橋を作り、後半では兎が左の島からサメの背中を通って右の島へ渡ります。
|
|
124
|
+
1ページ目は総ページ数によらず必ずワニ1匹から始め、前半の終わりに橋が20匹で完成するように増やします。
|
|
125
|
+
1ページだけの場合は1匹のまま、2ページの場合は2ページ目で橋を完成させます。
|
|
126
|
+
ページを戻すと位置と橋も戻り、最終ページで兎が右端に到着します。
|
|
127
|
+
画面では動きを減らす設定にも対応します。
|
|
128
|
+
|
|
129
|
+
## 発表タイマー
|
|
130
|
+
|
|
131
|
+
スライドの読み込み完了から計測し、既定では5分で時間切れ画面を表示します。
|
|
132
|
+
Front Matter の `time_limit` に分数を指定して変更できます(小数も可)。
|
|
133
|
+
`time_limit: 0` でタイマーを無効にします。
|
|
134
|
+
|
|
135
|
+
残り30秒になると、全画面表示中もカウントダウンを表示します。
|
|
136
|
+
残り5秒は中央に数字を表示し、画面の短辺に対して20%・40%・60%・80%・100%と強調サイズを増やします。
|
|
137
|
+
各数字は0.8秒で通常サイズに戻ります。動きを減らす設定では拡大アニメーションを省略します。
|
|
138
|
+
時間切れになると、兎柄フードをくわえたワニ(さめ)の画像を表示します。
|
|
139
|
+
左右キーまたは「スライドに戻る」ボタンで、時間切れ直前のスライドに戻れます。
|
|
140
|
+
戻った後は通常通りページを移動でき、時間切れ画面は再表示しません。
|
|
141
|
+
最終スライドの表示中はタイマーを一時停止し、カウントダウンも時間切れ画面も表示しません。
|
|
142
|
+
前のスライドに戻ると、停止前の残り時間から再開します。1ページだけの場合も停止します。
|
|
143
|
+
ページを再読み込みするとタイマーも最初から始まります。
|
|
144
|
+
タイマーと時間切れ画面はPDFには含めません。
|
|
145
|
+
|
|
146
|
+
## 同梱フォント
|
|
147
|
+
|
|
148
|
+
日本語・英数字の標準書体は **IBM Plex Sans JP** です。
|
|
149
|
+
通常と太字のフォントを gem に同梱します。
|
|
150
|
+
OS へのインストールや外部 CDN への接続は不要です。
|
|
151
|
+
|
|
152
|
+
本文・タイトル・発表者画面・PDF に同じ書体を使います。
|
|
153
|
+
コードは等幅フォントを優先し、日本語の代替候補に IBM Plex Sans JP を指定します。
|
|
154
|
+
読み込みに失敗した場合は警告し、代替書体で表示を続けます。
|
|
155
|
+
|
|
156
|
+
フォントは SIL Open Font License 1.1 です。原文のライセンス・著作権表示と配布元・チェックサムは
|
|
157
|
+
[third_party/ibm-plex-sans-jp](third_party/ibm-plex-sans-jp/README.md) に保持しています。
|
|
158
|
+
|
|
159
|
+
## フォントを変更する
|
|
160
|
+
|
|
161
|
+
タイトルと本文には、[Fontsource](https://fontsource.org/fonts)のフォントを追加して使えます。
|
|
162
|
+
フォントの追加時にはインターネット接続が必要です。追加後はオフラインで表示・PDF出力ができ、OSへのフォントのインストールやNode.js・npmは不要です。
|
|
163
|
+
|
|
164
|
+
### Fontsourceのフォントを使う
|
|
165
|
+
|
|
166
|
+
「Noto Sans JP」に変更する例です。
|
|
167
|
+
|
|
168
|
+
1. **フォントを選ぶ**
|
|
169
|
+
|
|
170
|
+
[Fontsource](https://fontsource.org/fonts)で検索・プレビューし、使いたいフォントの名前を確認します。
|
|
171
|
+
|
|
172
|
+
2. **スライドのディレクトリで追加する**
|
|
173
|
+
|
|
174
|
+
`slides.md`があるディレクトリへ移動して実行します。`my-talk`は自分のディレクトリ名に置き換えてください。既にその中にいる場合は`cd`は不要です。
|
|
175
|
+
|
|
176
|
+
```sh
|
|
177
|
+
cd my-talk
|
|
178
|
+
wani font add "Noto Sans JP"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
この操作で、そのプレゼンテーションにフォントをダウンロードします。Markdownの設定は次の手順で行います。
|
|
182
|
+
|
|
183
|
+
3. **`slides.md`の先頭に指定する**
|
|
184
|
+
|
|
185
|
+
```yaml
|
|
186
|
+
---
|
|
187
|
+
font: Noto Sans JP
|
|
188
|
+
---
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
既にFront Matter(先頭の`---`で囲んだ設定)がある場合は、その中に`font: Noto Sans JP`を追記します。
|
|
192
|
+
設定の下に、スライドの見出しや本文を続けてください。コードの等幅フォントは変更されません。
|
|
193
|
+
|
|
194
|
+
4. **ブラウザーで確認する**
|
|
195
|
+
|
|
196
|
+
```sh
|
|
197
|
+
wani serve slides.md
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
表示されたURLをブラウザーで開きます。既に`wani serve`を起動している場合は、開いているページを再読み込みしてください。
|
|
201
|
+
フォントが未登録・読み込み失敗の場合は警告を表示し、代替フォントで表示を続けます。
|
|
202
|
+
|
|
203
|
+
フォント名の代わりにIDやFontsourceの公式ページURLでも追加できます。例えば、手順2のコマンドを次のいずれかに置き換えられます。
|
|
204
|
+
|
|
205
|
+
```sh
|
|
206
|
+
wani font add noto-sans-jp
|
|
207
|
+
wani font add https://fontsource.org/fonts/noto-sans-jp
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 文字の太さを変える
|
|
211
|
+
|
|
212
|
+
Front Matterの`title-weight`でタイトル、`body-weight`で本文の太さを指定できます。
|
|
213
|
+
|
|
214
|
+
```yaml
|
|
215
|
+
---
|
|
216
|
+
font: Noto Sans JP
|
|
217
|
+
title-weight: 500
|
|
218
|
+
body-weight: 400
|
|
219
|
+
---
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
省略時はタイトル700・本文400です。`font`を省略して、既定フォントの太さだけを変えることもできます。
|
|
223
|
+
値の範囲やフォントによる表示の違いは [Markdown記法ガイド](docs/markdown.md#front-matter文書全体の設定) を参照してください。
|
|
224
|
+
|
|
225
|
+
### 追加済みフォントの確認・削除
|
|
226
|
+
|
|
227
|
+
`slides.md`があるディレクトリで、追加済みのフォントとIDを確認します。
|
|
228
|
+
|
|
229
|
+
```sh
|
|
230
|
+
wani font list
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
不要になったフォントは、一覧に表示されたIDを使って削除します。例えばNoto Sans JPなら次のとおりです。
|
|
234
|
+
|
|
235
|
+
```sh
|
|
236
|
+
wani font remove noto-sans-jp
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
スライドで使用中の場合は確認を求めます。削除する場合は、Front Matterの`font`も削除するか、別の追加済みフォントに変更してください。
|
|
240
|
+
|
|
241
|
+
### 他の人に渡す場合
|
|
242
|
+
|
|
243
|
+
追加したフォントは`fonts/ID/`、登録情報は`.wani/fonts.yml`に保存されます。
|
|
244
|
+
`slides.md`や画像と一緒に、`fonts/`と`.wani/fonts.yml`も保存・配布してください。`.wani`は隠しディレクトリなので、コピーし忘れないようにしてください。
|
|
245
|
+
|
|
246
|
+
各フォントのライセンスは`fonts/ID/LICENSE`に保存されます。Web公開・再配布・PDF配布の際は、そのフォントのライセンス条件を確認してください。
|
|
247
|
+
|
|
248
|
+
## 動作環境と制約
|
|
249
|
+
|
|
250
|
+
確認済みの環境は Linux / Ruby 4.0.7 / Chrome 156.0.8078.47 です。
|
|
251
|
+
Windows・WSL2、Edge / Firefox / Safari、通常ブラウザーの印刷ダイアログ操作は未検証です。
|
|
252
|
+
|
|
253
|
+
WSL2 内で `wani serve` を起動した場合は、Windows 側のブラウザーで http://localhost:8000/ を開きます。
|
|
254
|
+
環境のポート転送設定に応じて `--bind 0.0.0.0` を指定してください。
|
|
255
|
+
|
|
256
|
+
複雑に入れ子になった Markdown 方言、最適な画像の自動配置、ライブリロードは対象外です。
|
|
257
|
+
発表者画面はメイン画面の終了・再読み込み後に開き直してください。
|
|
258
|
+
|
|
259
|
+
## 開発者向けドキュメント
|
|
260
|
+
|
|
261
|
+
- [アーキテクチャ](docs/architecture.md):共通モジュール、静的配信、wasm・ローダー、フォント、レイアウトの設計
|
|
262
|
+
- [開発・検証](docs/development.md):ビルド、テスト、パッケージ作成、手動検証の手順
|
data/assets/bootstrap.rb
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require "js"
|
|
2
|
+
begin
|
|
3
|
+
$LOAD_PATH.unshift("/wani/bundle/kramdown/lib", "/wani/bundle/rexml/lib", "/wani/bundle/kramdown-parser-gfm/lib", "/wani/bundle/rouge/lib")
|
|
4
|
+
require "/wani/lib/wani/browser/application"
|
|
5
|
+
Wani::Browser::Application.new.start
|
|
6
|
+
rescue LoadError, StandardError => error
|
|
7
|
+
document = JS.global[:document]
|
|
8
|
+
document.getElementById("status")[:textContent] = "起動失敗: #{error.message}"
|
|
9
|
+
end
|
data/assets/build.json
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* Generated by scripts/build_wasm.rb with Rouge 5.1.0. */
|
|
2
|
+
.highlight table td { padding: 5px; }
|
|
3
|
+
.highlight table pre { margin: 0; }
|
|
4
|
+
.highlight, .highlight .w {
|
|
5
|
+
color: #24292f;
|
|
6
|
+
background-color: #f6f8fa;
|
|
7
|
+
}
|
|
8
|
+
.highlight .k, .highlight .kd, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kt, .highlight .kv {
|
|
9
|
+
color: #cf222e;
|
|
10
|
+
}
|
|
11
|
+
.highlight .gr {
|
|
12
|
+
color: #f6f8fa;
|
|
13
|
+
}
|
|
14
|
+
.highlight .gd {
|
|
15
|
+
color: #82071e;
|
|
16
|
+
background-color: #ffebe9;
|
|
17
|
+
}
|
|
18
|
+
.highlight .nb {
|
|
19
|
+
color: #953800;
|
|
20
|
+
}
|
|
21
|
+
.highlight .nc {
|
|
22
|
+
color: #953800;
|
|
23
|
+
}
|
|
24
|
+
.highlight .no {
|
|
25
|
+
color: #953800;
|
|
26
|
+
}
|
|
27
|
+
.highlight .nn {
|
|
28
|
+
color: #953800;
|
|
29
|
+
}
|
|
30
|
+
.highlight .sr {
|
|
31
|
+
color: #116329;
|
|
32
|
+
}
|
|
33
|
+
.highlight .na {
|
|
34
|
+
color: #116329;
|
|
35
|
+
}
|
|
36
|
+
.highlight .nt {
|
|
37
|
+
color: #116329;
|
|
38
|
+
}
|
|
39
|
+
.highlight .gi {
|
|
40
|
+
color: #116329;
|
|
41
|
+
background-color: #dafbe1;
|
|
42
|
+
}
|
|
43
|
+
.highlight .ges {
|
|
44
|
+
font-weight: bold;
|
|
45
|
+
font-style: italic;
|
|
46
|
+
}
|
|
47
|
+
.highlight .kc {
|
|
48
|
+
color: #0550ae;
|
|
49
|
+
}
|
|
50
|
+
.highlight .l, .highlight .ld, .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
|
|
51
|
+
color: #0550ae;
|
|
52
|
+
}
|
|
53
|
+
.highlight .sb {
|
|
54
|
+
color: #0550ae;
|
|
55
|
+
}
|
|
56
|
+
.highlight .bp {
|
|
57
|
+
color: #0550ae;
|
|
58
|
+
}
|
|
59
|
+
.highlight .ne {
|
|
60
|
+
color: #0550ae;
|
|
61
|
+
}
|
|
62
|
+
.highlight .nl {
|
|
63
|
+
color: #0550ae;
|
|
64
|
+
}
|
|
65
|
+
.highlight .py {
|
|
66
|
+
color: #0550ae;
|
|
67
|
+
}
|
|
68
|
+
.highlight .nv, .highlight .vc, .highlight .vg, .highlight .vi, .highlight .vm {
|
|
69
|
+
color: #0550ae;
|
|
70
|
+
}
|
|
71
|
+
.highlight .o, .highlight .ow {
|
|
72
|
+
color: #0550ae;
|
|
73
|
+
}
|
|
74
|
+
.highlight .gh {
|
|
75
|
+
color: #0550ae;
|
|
76
|
+
font-weight: bold;
|
|
77
|
+
}
|
|
78
|
+
.highlight .gu {
|
|
79
|
+
color: #0550ae;
|
|
80
|
+
font-weight: bold;
|
|
81
|
+
}
|
|
82
|
+
.highlight .s, .highlight .sa, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .se, .highlight .sh, .highlight .sx, .highlight .s1, .highlight .ss {
|
|
83
|
+
color: #0a3069;
|
|
84
|
+
}
|
|
85
|
+
.highlight .nd {
|
|
86
|
+
color: #8250df;
|
|
87
|
+
}
|
|
88
|
+
.highlight .nf, .highlight .fm {
|
|
89
|
+
color: #8250df;
|
|
90
|
+
}
|
|
91
|
+
.highlight .err {
|
|
92
|
+
color: #f6f8fa;
|
|
93
|
+
background-color: #82071e;
|
|
94
|
+
}
|
|
95
|
+
.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cp, .highlight .cpf, .highlight .c1, .highlight .cs {
|
|
96
|
+
color: #6e7781;
|
|
97
|
+
}
|
|
98
|
+
.highlight .gl {
|
|
99
|
+
color: #6e7781;
|
|
100
|
+
}
|
|
101
|
+
.highlight .gt {
|
|
102
|
+
color: #6e7781;
|
|
103
|
+
}
|
|
104
|
+
.highlight .ni {
|
|
105
|
+
color: #24292f;
|
|
106
|
+
}
|
|
107
|
+
.highlight .si {
|
|
108
|
+
color: #24292f;
|
|
109
|
+
}
|
|
110
|
+
.highlight .ge {
|
|
111
|
+
color: #24292f;
|
|
112
|
+
font-style: italic;
|
|
113
|
+
}
|
|
114
|
+
.highlight .gs {
|
|
115
|
+
color: #24292f;
|
|
116
|
+
font-weight: bold;
|
|
117
|
+
}
|
data/assets/index.html
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="ja">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Wani — Markdown presentation</title>
|
|
7
|
+
<link rel="stylesheet" href="/assets/style.css">
|
|
8
|
+
<link rel="stylesheet" href="/assets/highlight.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body class="presentation-view">
|
|
11
|
+
<header class="toolbar">
|
|
12
|
+
<a class="brand" href="#slide=1" aria-label="Wani: 最初のスライド">Wani<span>Markdown × Ruby</span></a>
|
|
13
|
+
<nav aria-label="プレゼンテーション操作">
|
|
14
|
+
<button id="previous" title="前へ (← / PageUp)" disabled>←</button>
|
|
15
|
+
<output id="position" aria-live="polite">— / —</output>
|
|
16
|
+
<button id="next" title="次へ (→ / Space / PageDown)" disabled>→</button>
|
|
17
|
+
<span class="toolbar-divider"></span>
|
|
18
|
+
<button id="fullscreen" title="全画面 (F)" disabled>全画面</button>
|
|
19
|
+
<button id="speaker" title="発表者ノート (N)" disabled>ノート</button>
|
|
20
|
+
<button id="print" disabled>PDF</button>
|
|
21
|
+
<button id="print-notes" disabled>ノート付き PDF</button>
|
|
22
|
+
</nav>
|
|
23
|
+
</header>
|
|
24
|
+
<p id="status" role="status">Ruby を読み込んでいます…</p>
|
|
25
|
+
<aside id="warnings" role="status" hidden></aside>
|
|
26
|
+
<div id="viewport"><main id="stage" aria-label="スライド"></main></div>
|
|
27
|
+
<output id="countdown" aria-live="off" aria-label="発表の残り時間" hidden></output>
|
|
28
|
+
<section id="time-expired" role="dialog" aria-modal="true" aria-labelledby="time-expired-title" hidden>
|
|
29
|
+
<h1 id="time-expired-title">時間切れです!</h1>
|
|
30
|
+
<div class="time-expired-image" role="img" aria-label="兎柄フードをくわえるワニ(さめ)"></div>
|
|
31
|
+
<p>← または → キーで元のスライドに戻れます</p>
|
|
32
|
+
<button id="resume-slides">スライドに戻る</button>
|
|
33
|
+
</section>
|
|
34
|
+
<footer class="help">← → ページ移動 <span>F 全画面</span><span>N ノート</span><span>Home / End 最初・最後</span></footer>
|
|
35
|
+
<article id="print-pages" aria-hidden="true"></article>
|
|
36
|
+
<script src="/assets/runtime.pr672.js" data-ruby-wasm-url="/assets/wani.wasm"></script>
|
|
37
|
+
<script type="text/ruby" data-eval="async" src="/assets/bootstrap.rb"></script>
|
|
38
|
+
</body>
|
|
39
|
+
</html>
|
data/assets/rabbit.svg
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="48" viewBox="0 0 100 48"><g fill="#71887e"><ellipse cx="40" cy="30" rx="24" ry="14"/><circle cx="68" cy="23" r="12"/><ellipse cx="67" cy="9" rx="4" ry="9"/><ellipse cx="76" cy="10" rx="4" ry="9"/><circle cx="14" cy="29" r="7"/><path d="M25 38h20v7H24zm33-5h17v10H55z"/></g><circle cx="73" cy="21" r="2" fill="#fff"/></svg>
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# MIT license. See http://www.opensource.org/licenses/mit-license.php
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2012 Jeanine Adkisson.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
# SPECIAL NOTE:
|
|
24
|
+
|
|
25
|
+
Many of the lexers in this project are adaptations of those in Pygments
|
|
26
|
+
(pygments.org). The license for Pygments is as follows:
|
|
27
|
+
|
|
28
|
+
# BEGIN pygments/LICENSE #
|
|
29
|
+
|
|
30
|
+
Copyright (c) 2006-2012 by the respective authors (see AUTHORS file).
|
|
31
|
+
All rights reserved.
|
|
32
|
+
|
|
33
|
+
Redistribution and use in source and binary forms, with or without
|
|
34
|
+
modification, are permitted provided that the following conditions are
|
|
35
|
+
met:
|
|
36
|
+
|
|
37
|
+
* Redistributions of source code must retain the above copyright
|
|
38
|
+
notice, this list of conditions and the following disclaimer.
|
|
39
|
+
|
|
40
|
+
* Redistributions in binary form must reproduce the above copyright
|
|
41
|
+
notice, this list of conditions and the following disclaimer in the
|
|
42
|
+
documentation and/or other materials provided with the distribution.
|
|
43
|
+
|
|
44
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
45
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
46
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
47
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
48
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
49
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
50
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
51
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
52
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
53
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
54
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
55
|
+
|
|
56
|
+
# END pygments/LICENSE #
|
|
57
|
+
|
|
58
|
+
The contents of the AUTHORS file at the time of porting was:
|
|
59
|
+
|
|
60
|
+
# BEGIN pygments/AUTHORS #
|
|
61
|
+
|
|
62
|
+
Pygments is written and maintained by Georg Brandl <georg@python.org>.
|
|
63
|
+
|
|
64
|
+
Major developers are Tim Hatch <tim@timhatch.com> and Armin Ronacher
|
|
65
|
+
<armin.ronacher@active-4.com>.
|
|
66
|
+
|
|
67
|
+
Other contributors, listed alphabetically, are:
|
|
68
|
+
|
|
69
|
+
* Sam Aaron -- Ioke lexer
|
|
70
|
+
* Kumar Appaiah -- Debian control lexer
|
|
71
|
+
* Ali Afshar -- image formatter
|
|
72
|
+
* Andreas Amann -- AppleScript lexer
|
|
73
|
+
* Jeffrey Arnold -- R/S lexer, BUGS lexers
|
|
74
|
+
* Jeremy Ashkenas -- CoffeeScript lexer
|
|
75
|
+
* Stefan Matthias Aust -- Smalltalk lexer
|
|
76
|
+
* Ben Bangert -- Mako lexers
|
|
77
|
+
* Max Battcher -- Darcs patch lexer
|
|
78
|
+
* Paul Baumgart, 280 North, Inc. -- Objective-J lexer
|
|
79
|
+
* Michael Bayer -- Myghty lexers
|
|
80
|
+
* John Benediktsson -- Factor lexer
|
|
81
|
+
* Christopher Bertels -- Fancy lexer
|
|
82
|
+
* Jarrett Billingsley -- MiniD lexer
|
|
83
|
+
* Adam Blinkinsop -- Haskell, Redcode lexers
|
|
84
|
+
* Frits van Bommel -- assembler lexers
|
|
85
|
+
* Pierre Bourdon -- bugfixes
|
|
86
|
+
* Hiram Chirino -- Scaml and Jade lexers
|
|
87
|
+
* Leaf Corcoran -- MoonScript lexer
|
|
88
|
+
* Christopher Creutzig -- MuPAD lexer
|
|
89
|
+
* Pete Curry -- bugfixes
|
|
90
|
+
* Owen Durni -- haXe lexer
|
|
91
|
+
* Nick Efford -- Python 3 lexer
|
|
92
|
+
* Sven Efftinge -- Xtend lexer
|
|
93
|
+
* Artem Egorkine -- terminal256 formatter
|
|
94
|
+
* James H. Fisher -- PostScript lexer
|
|
95
|
+
* Carlos Galdino -- Elixir and Elixir Console lexers
|
|
96
|
+
* Naveen Garg -- Autohotkey lexer
|
|
97
|
+
* Laurent Gautier -- R/S lexer
|
|
98
|
+
* Alex Gaynor -- PyPy log lexer
|
|
99
|
+
* Bertrand Goetzmann -- Groovy lexer
|
|
100
|
+
* Krzysiek Goj -- Scala lexer
|
|
101
|
+
* Matt Good -- Genshi, Cheetah lexers
|
|
102
|
+
* Patrick Gotthardt -- PHP namespaces support
|
|
103
|
+
* Olivier Guibe -- Asymptote lexer
|
|
104
|
+
* Martin Harriman -- SNOBOL lexer
|
|
105
|
+
* Matthew Harrison -- SVG formatter
|
|
106
|
+
* Steven Hazel -- Tcl lexer
|
|
107
|
+
* Aslak Hellesøy -- Gherkin lexer
|
|
108
|
+
* Greg Hendershott -- Racket lexer
|
|
109
|
+
* Jordi Gutiérrez Hermoso -- Octave lexer
|
|
110
|
+
* David Hess, Fish Software, Inc. -- Objective-J lexer
|
|
111
|
+
* Varun Hiremath -- Debian control lexer
|
|
112
|
+
* Doug Hogan -- Mscgen lexer
|
|
113
|
+
* Ben Hollis -- Mason lexer
|
|
114
|
+
* Tim Howard -- BlitzMax lexer
|
|
115
|
+
* Ivan Inozemtsev -- Fantom lexer
|
|
116
|
+
* Brian R. Jackson -- Tea lexer
|
|
117
|
+
* Dennis Kaarsemaker -- sources.list lexer
|
|
118
|
+
* Igor Kalnitsky -- vhdl lexer
|
|
119
|
+
* Eric Knibbe -- Lasso lexer
|
|
120
|
+
* Adam Koprowski -- Opa lexer
|
|
121
|
+
* Benjamin Kowarsch -- Modula-2 lexer
|
|
122
|
+
* Alexander Kriegisch -- Kconfig and AspectJ lexers
|
|
123
|
+
* Marek Kubica -- Scheme lexer
|
|
124
|
+
* Jochen Kupperschmidt -- Markdown processor
|
|
125
|
+
* Gerd Kurzbach -- Modelica lexer
|
|
126
|
+
* Olov Lassus -- Dart lexer
|
|
127
|
+
* Sylvestre Ledru -- Scilab lexer
|
|
128
|
+
* Mark Lee -- Vala lexer
|
|
129
|
+
* Ben Mabey -- Gherkin lexer
|
|
130
|
+
* Simone Margaritelli -- Hybris lexer
|
|
131
|
+
* Kirk McDonald -- D lexer
|
|
132
|
+
* Gordon McGregor -- SystemVerilog lexer
|
|
133
|
+
* Stephen McKamey -- Duel/JBST lexer
|
|
134
|
+
* Brian McKenna -- F# lexer
|
|
135
|
+
* Lukas Meuser -- BBCode formatter, Lua lexer
|
|
136
|
+
* Paul Miller -- LiveScript lexer
|
|
137
|
+
* Hong Minhee -- HTTP lexer
|
|
138
|
+
* Michael Mior -- Awk lexer
|
|
139
|
+
* Jon Morton -- Rust lexer
|
|
140
|
+
* Paulo Moura -- Logtalk lexer
|
|
141
|
+
* Mher Movsisyan -- DTD lexer
|
|
142
|
+
* Ana Nelson -- Ragel, ANTLR, R console lexers
|
|
143
|
+
* Nam T. Nguyen -- Monokai style
|
|
144
|
+
* Jesper Noehr -- HTML formatter "anchorlinenos"
|
|
145
|
+
* Mike Nolta -- Julia lexer
|
|
146
|
+
* Jonas Obrist -- BBCode lexer
|
|
147
|
+
* David Oliva -- Rebol lexer
|
|
148
|
+
* Jon Parise -- Protocol buffers lexer
|
|
149
|
+
* Ronny Pfannschmidt -- BBCode lexer
|
|
150
|
+
* Benjamin Peterson -- Test suite refactoring
|
|
151
|
+
* Dominik Picheta -- Nimrod lexer
|
|
152
|
+
* Clément Prévost -- UrbiScript lexer
|
|
153
|
+
* Kashif Rasul -- CUDA lexer
|
|
154
|
+
* Justin Reidy -- MXML lexer
|
|
155
|
+
* Norman Richards -- JSON lexer
|
|
156
|
+
* Lubomir Rintel -- GoodData MAQL and CL lexers
|
|
157
|
+
* Andre Roberge -- Tango style
|
|
158
|
+
* Konrad Rudolph -- LaTeX formatter enhancements
|
|
159
|
+
* Mario Ruggier -- Evoque lexers
|
|
160
|
+
* Stou Sandalski -- NumPy, FORTRAN, tcsh and XSLT lexers
|
|
161
|
+
* Matteo Sasso -- Common Lisp lexer
|
|
162
|
+
* Joe Schafer -- Ada lexer
|
|
163
|
+
* Ken Schutte -- Matlab lexers
|
|
164
|
+
* Tassilo Schweyer -- Io, MOOCode lexers
|
|
165
|
+
* Joerg Sieker -- ABAP lexer
|
|
166
|
+
* Robert Simmons -- Standard ML lexer
|
|
167
|
+
* Kirill Simonov -- YAML lexer
|
|
168
|
+
* Steve Spigarelli -- XQuery lexer
|
|
169
|
+
* Jerome St-Louis -- eC lexer
|
|
170
|
+
* James Strachan -- Kotlin lexer
|
|
171
|
+
* Tiberius Teng -- default style overhaul
|
|
172
|
+
* Jeremy Thurgood -- Erlang, Squid config lexers
|
|
173
|
+
* Erick Tryzelaar -- Felix lexer
|
|
174
|
+
* Daniele Varrazzo -- PostgreSQL lexers
|
|
175
|
+
* Abe Voelker -- OpenEdge ABL lexer
|
|
176
|
+
* Whitney Young -- ObjectiveC lexer
|
|
177
|
+
* Matthias Vallentin -- Bro lexer
|
|
178
|
+
* Nathan Weizenbaum -- Haml and Sass lexers
|
|
179
|
+
* Dietmar Winkler -- Modelica lexer
|
|
180
|
+
* Nils Winter -- Smalltalk lexer
|
|
181
|
+
* Davy Wybiral -- Clojure lexer
|
|
182
|
+
* Diego Zamboni -- CFengine3 lexer
|
|
183
|
+
* Alex Zimin -- Nemerle lexer
|
|
184
|
+
|
|
185
|
+
Many thanks for all contributions!
|
|
186
|
+
|
|
187
|
+
# END pygments/AUTHORS #
|