From 11b0ec79a33a67a16375550d64b3cb86f11cdc72 Mon Sep 17 00:00:00 2001 From: ppenguin Date: Wed, 2 Apr 2025 21:02:20 +0200 Subject: [PATCH] rebase on master --- Makefile | 4 +++ testdata/examples/Makefile | 14 +++++++++++ testdata/examples/themex.d2 | 50 +++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 testdata/examples/Makefile create mode 100644 testdata/examples/themex.d2 diff --git a/Makefile b/Makefile index 346e9649a..d70ed76e2 100644 --- a/Makefile +++ b/Makefile @@ -24,3 +24,7 @@ race: fmt .PHONY: js js: gen cd d2js/js && NPM_VERSION="${NPM_VERSION}" prefix "$@" ./make.sh all + +.PHONY: themesdemo +themesdemo: + $(MAKE) -C ./testdata/examples/ diff --git a/testdata/examples/Makefile b/testdata/examples/Makefile new file mode 100644 index 000000000..8cbc835b1 --- /dev/null +++ b/testdata/examples/Makefile @@ -0,0 +1,14 @@ +D2 := ../../d2 + +SVGS = $(shell $(D2) themes | gawk -F':' '/^-/{ printf "out/themex-%03d.svg ",$$2 }' || :) + +.PHONY: +all: $(D2) $(SVGS) + +$(D2): + cd $(dir $@) && go build + $(MAKE) $(SVGS) +# D2 as dependency to expire results if recompiled +out/themex-%.svg: themex.d2 $(D2) + $(info Building $@ from $< ...) + $(D2) -t $$(( 10#$* )) $< $@ diff --git a/testdata/examples/themex.d2 b/testdata/examples/themex.d2 new file mode 100644 index 000000000..4dba20d83 --- /dev/null +++ b/testdata/examples/themex.d2 @@ -0,0 +1,50 @@ + +vars: { + d2-config: { + layout-engine: elk + } +} +network: { + cell tower: { + satellites: { + shape: stored_data + style.multiple: true + } + + transmitter + + satellites -> transmitter: send + satellites -> transmitter: send + satellites -> transmitter: send + } + + online portal: { + ui: {shape: hexagon} + } + + data processor: { + storage: { + shape: cylinder + style.multiple: true + } + } + + cell tower.transmitter -> data processor.storage: phone logs +} + +user: { + shape: person + width: 130 +} + +user -> network.cell tower: make call +user -> network.online portal.ui: access { + style.stroke-dash: 3 +} + +api server -> network.online portal.ui: display +api server -> logs: persist +logs: {shape: page; style.multiple: true} + +network.data processor -> api server +