@cardenelabs/dragon 0.36.3 → 0.37.0

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.
package/README.md CHANGED
@@ -25,6 +25,30 @@ npm install @cardenelabs/dragon
25
25
  | 描く部品 | 原本から時系列図と構成図を描き、段ごとに動かす部品。cdl には頼らない |
26
26
  | 書き出し | 同じ原本から mp4、GIF、HTML、PNG を書き出す命令 |
27
27
 
28
+ ## 頁に置く
29
+
30
+ 頁で 1 度だけ字の入口 `@cardenelabs/dragon/fonts` を import し、記法を読んだ原本を `mountDiagram` に渡す。
31
+
32
+ ```ts
33
+ import "@cardenelabs/dragon/fonts";
34
+ import { mountDiagram, parseNotation } from "@cardenelabs/dragon";
35
+
36
+ const source = await (await fetch("login.dragon")).text();
37
+ const parsed = parseNotation(source);
38
+ if (!parsed.ok) throw new Error(parsed.errors.map((e) => `${e.line}: ${e.message}`).join("\n"));
39
+
40
+ const host = document.getElementById("figure");
41
+ if (host === null) throw new Error("#figure not found");
42
+ const player = mountDiagram(host, parsed.diagram);
43
+ ```
44
+
45
+ 字の入口は、同梱の 2 つの字 (Noto Sans JP と JetBrains Mono) の CSS を読み込むだけで、何も出さない。
46
+ 図は同梱の字で測った字の幅で組むため、読み込まないと端末の字で描かれ、札から字がはみ出すことがある。
47
+ CSS と字の file は、束ねる道具 (Vite など) が頁へ運ぶ。
48
+
49
+ `mountDiagram` が返す `player` で段を動かす (`next`、`prev`、`play`、`pause`、`destroy`)。
50
+ 3 つめの引数には色味や段が替わった時に呼ぶ関数などの設定 (`PlayerOptions`) を渡す。
51
+
28
52
  ## dragon記法
29
53
 
30
54
  どの行も次の決まり 4 つに従う。
@@ -34,7 +58,7 @@ npm install @cardenelabs/dragon
34
58
  3. 空白を含む名前と文は、行末か `[` の前に置く。`,` か `]` を含む値と、`[` を含む名前だけを `"` で囲む
35
59
  4. 入れ子は `group … end` だけ。段は次の `step` までで、字下げは読みやすさのために付ける。`say` の続きの行だけは `say` より深く字下げする
36
60
 
37
- 行の頭の語は `sequence` `architecture` `group` `end` `box` `strip` `step` `say` `code` `act` `note` `set` で、線の行は `名札 -> 名札` と書く。
61
+ 行の頭の語は `sequence` `architecture` `state` `group` `end` `box` `strip` `step` `say` `code` `act` `note` `set` で、線の行は `名札 -> 名札` と書く。
38
62
 
39
63
  ```dragon
40
64
  architecture 注文を倉庫へ回す
@@ -59,6 +83,37 @@ step 出荷に回す
59
83
  前の形の記法 (`時系列図` か `構成図` で始まる形) は読まず、その行の新しい形を示す誤りで止まる。
60
84
  前の形と新しい形の対応表は [`CHANGELOG.md`](https://github.com/cardene777/dragon/blob/main/CHANGELOG.md) にある。
61
85
 
86
+ ### 状態遷移図
87
+
88
+ `state` で始めると、1 つの物が状態を移る様子を段ごとに追う状態遷移図になる。箱が状態で、線は状態から状態への移り変わり。
89
+ 線の送る側に `start` を書くと始まりの印から出る線に、受ける側に `finish` を書くと終わりの印へ入る線になる。
90
+ 最初の `step` より前に書いた線は、移れるが今回は通らない道として点線で引く。
91
+
92
+ ```dragon
93
+ state 注文が届くまでの状態
94
+
95
+ box 支払い待ち [note: 入金を待つ, color: amber, icon: clock]
96
+ box 発送済み [note: 業者が運ぶ, color: violet, icon: truck]
97
+ box 配達完了 [note: 受け取られた, color: green, icon: check]
98
+ box キャンセル [note: 払った分は返す, color: rose, icon: x]
99
+
100
+ 支払い待ち -> キャンセル: 取り消す
101
+ キャンセル -> finish
102
+
103
+ step 注文する
104
+ say 注文を確定すると、支払い待ちから始まる。
105
+ start -> 支払い待ち: 注文を確定 [tag: #1042]
106
+
107
+ step 発送する
108
+ say 入金を確かめて品物を送り、発送済みに移る。
109
+ 支払い待ち -> 発送済み: 発送 [tag: #1042]
110
+
111
+ step 届く
112
+ say 品物が届いて配達完了に移り、注文を閉じる。
113
+ 発送済み -> 配達完了: 受け取り [tag: #1042]
114
+ 配達完了 -> finish: 注文を閉じる [tag: #1042]
115
+ ```
116
+
62
117
  ## 書き出し
63
118
 
64
119
  書き出しは画面なしの Chromium で、頁と同じ描画を時刻を止めて 1 コマずつ撮る。