@cardenelabs/dragon 0.7.0 → 0.9.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 +115 -0
- package/dist/index.cjs +6610 -3358
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +578 -9
- package/dist/index.d.ts +578 -9
- package/dist/index.js +6606 -3360
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/compile.ts +2957 -256
- package/src/index.ts +29 -15
- package/src/input-size.ts +8 -1
- package/src/json-parser.ts +1384 -105
- package/src/notation-lint.ts +27 -4
- package/src/schemas/diagram.json +416 -41
- package/src/tokenize.ts +289 -0
- package/src/types.ts +144 -0
- package/src/v05/parser.ts +995 -163
- package/src/value-syntax.ts +313 -0
package/README.md
CHANGED
|
@@ -41,6 +41,117 @@ flow:
|
|
|
41
41
|
<CdlDiagramView diagram={diagram} />
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
## 記法に書ける欄
|
|
45
|
+
|
|
46
|
+
**この節の一覧は検査が実装と突き合わせる** (`test/readme-notation-keys.test.ts`)。
|
|
47
|
+
実装に欄が増えてここを直さないと落ちる。
|
|
48
|
+
|
|
49
|
+
### 最上位のブロック
|
|
50
|
+
|
|
51
|
+
<!-- notation:top-level:start -->
|
|
52
|
+
| 欄 | 何を書くか |
|
|
53
|
+
|---|---|
|
|
54
|
+
| `title` | 図の題 |
|
|
55
|
+
| `type` | 図種 (`sequence` / `flow` / `swimlane` / `er` / `state` / `topology` / `gantt` / `class` / `mind` / `tree` / `c4` / `solidity` / 図表各種) |
|
|
56
|
+
| `actors` | 箱 |
|
|
57
|
+
| `flow` | 矢印 |
|
|
58
|
+
| `states` | 状態の初期値 |
|
|
59
|
+
| `values` | 他の状態から決まる値 (式) |
|
|
60
|
+
| `animation` | 段 |
|
|
61
|
+
| `viewport` | 図全体の大きさと間隔 |
|
|
62
|
+
| `lanes` | 縦列の見出しと幅 |
|
|
63
|
+
| `groups` | 縦列を束ねる枠 |
|
|
64
|
+
| `eyebrow` | 図全体を 1 箱にする図種で、その箱の上に出す小見出し |
|
|
65
|
+
| `axes` | 2 軸で仕分ける図の軸の名前 |
|
|
66
|
+
<!-- notation:top-level:end -->
|
|
67
|
+
|
|
68
|
+
### 箱に書ける欄
|
|
69
|
+
|
|
70
|
+
`- 名前: { 欄: 値, ... }` の形で書く。
|
|
71
|
+
|
|
72
|
+
<!-- notation:actor:start -->
|
|
73
|
+
| 欄 | 何を書くか |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `kind` | 見た目の種別 (`card` / `storage` / `service` / `person` 等、`種類` とも書ける) |
|
|
76
|
+
| `subtitle` | 題の下の補足 (`補足` とも書ける) |
|
|
77
|
+
| `eyebrow` | 題の上の小見出し |
|
|
78
|
+
| `value` | 箱に出す値 (`値` とも書ける) |
|
|
79
|
+
| `rows` | 箱の中に並べる行 (`行` とも書ける) |
|
|
80
|
+
| `lane` | どの縦列に置くか |
|
|
81
|
+
| `stack` | 縦列の中の何段目に置くか |
|
|
82
|
+
| `initial` | 状態遷移図で始まりの状態か |
|
|
83
|
+
| `final` | 状態遷移図で終わりの状態か |
|
|
84
|
+
| `tone` | 色 |
|
|
85
|
+
| `nodes` | 見本 (parts) の中の箱を差し替える |
|
|
86
|
+
| `touchpoint` | 体験の道筋で、利用者が触れる場所 |
|
|
87
|
+
| `opportunity` | 体験の道筋で、改善の余地 |
|
|
88
|
+
| `owner` | 工程の並びで、担当 |
|
|
89
|
+
| `end` | 工程の並びで、終わりの位置 |
|
|
90
|
+
| `posX` | 置く場所の横位置 |
|
|
91
|
+
| `posY` | 置く場所の縦位置 |
|
|
92
|
+
| `posW` | 箱の幅 |
|
|
93
|
+
| `posH` | 箱の高さ |
|
|
94
|
+
| `scale` | 見本 (parts) の倍率 (`倍率` とも書ける) |
|
|
95
|
+
<!-- notation:actor:end -->
|
|
96
|
+
|
|
97
|
+
### 矢印に書ける欄
|
|
98
|
+
|
|
99
|
+
`- A -> B: "説明" (色, 線種) { 欄: 値, ... }` の形で書く。
|
|
100
|
+
|
|
101
|
+
<!-- notation:flow:start -->
|
|
102
|
+
| 欄 | 何を書くか |
|
|
103
|
+
|---|---|
|
|
104
|
+
| `sub` | 説明の下の補足 |
|
|
105
|
+
| `guard` | 状態遷移の条件 |
|
|
106
|
+
| `cardinality` | 関係の多重度 (`1:N` 等) |
|
|
107
|
+
| `labelOffsetX` | 説明文の位置を横にずらす |
|
|
108
|
+
| `labelOffsetY` | 説明文の位置を縦にずらす |
|
|
109
|
+
| `overlay` | `true` で説明文を線の上に重ねる (分岐図の条件ラベル用) |
|
|
110
|
+
<!-- notation:flow:end -->
|
|
111
|
+
|
|
112
|
+
## 記法の癖
|
|
113
|
+
|
|
114
|
+
### 箱の `lane:` が効く図種は限られる
|
|
115
|
+
|
|
116
|
+
縦列を並べるために使う図種 (`flow` / `topology` / `swimlane`) では効く。 縦列が骨格その
|
|
117
|
+
ものになる図種 (`sequence` は縦列がそのまま時間軸の線) では効かず、知らせが出る。
|
|
118
|
+
|
|
119
|
+
効く図種でも **全ての箱に書いた時だけ** 効く。 一部だけ書くと、書かなかった箱をどこに
|
|
120
|
+
置くか決められないため知らせが出る。
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
type: flow
|
|
124
|
+
|
|
125
|
+
lanes:
|
|
126
|
+
left: { width: 320 }
|
|
127
|
+
right: { width: 320 }
|
|
128
|
+
|
|
129
|
+
actors:
|
|
130
|
+
- A: { kind: card, lane: left }
|
|
131
|
+
- B: { kind: card, lane: right }
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`lanes:` の id は組み立て側が作る形に合わせて、字 / 数 / 下線 / hyphen を受ける
|
|
135
|
+
(`lane-idle` のような自動で作られた縦列の幅も書き直せる)。
|
|
136
|
+
|
|
137
|
+
### 静止した `type: flow` は書いた矢印の端を使わない
|
|
138
|
+
|
|
139
|
+
この図種は **登場人物を書いた順に鎖状に繋ぐ**。 矢印の説明文は「その箱を to に持つ行」
|
|
140
|
+
から拾い、書いた側の端は使わない。
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
type: flow
|
|
144
|
+
|
|
145
|
+
actors: [A, B, C]
|
|
146
|
+
|
|
147
|
+
flow:
|
|
148
|
+
- A -> C: "x" # 出来るのは A -> B
|
|
149
|
+
- C -> B: "y" # 出来るのは B -> C
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
書いた端どおりに繋ぎたい時は箱に `lane:` を書く。 縦列を書いた形は別の組み立てを通り、
|
|
153
|
+
書いた端がそのまま矢印になる。 端が使われなかった行には知らせが出る。
|
|
154
|
+
|
|
44
155
|
## API
|
|
45
156
|
|
|
46
157
|
**Text DSL (人向け YAML)**
|
|
@@ -168,6 +279,10 @@ const diagram = jsonToDiagram(json);
|
|
|
168
279
|
| `step: "..." 1.4s` | `{step: "...", duration: 1.4}` |
|
|
169
280
|
| `focus: [A, B]` | `{focus: ["A", "B"]}` |
|
|
170
281
|
|
|
282
|
+
箱に書ける項目 (`tone` / `owner` / `posX` 等) は両方の記法で同じ。 一覧は実装
|
|
283
|
+
(`INLINE_ACTOR_KEYS`) が持ち、`packages/dragon/test/json-actor-fields.test.ts` が
|
|
284
|
+
両入口の一致を確かめる。 ここに一覧を写すと項目が増えた時に取り残されるため書かない。
|
|
285
|
+
|
|
171
286
|
## License
|
|
172
287
|
|
|
173
288
|
MIT
|