From 59037f174c444bb7b7b7e71bc1cfc564dd775df0 Mon Sep 17 00:00:00 2001 From: Novus Nota <68142933+novusnota@users.noreply.github.com> Date: Mon, 20 Jan 2025 10:49:40 +0100 Subject: [PATCH] docs: show examples of Mermaid diagrams as images (#1387) --- CHANGELOG.md | 2 +- .../assets/contract-dependency-diagram-2.png | Bin 0 -> 5171 bytes .../assets/contract-dependency-diagram-3.png | Bin 0 -> 5916 bytes .../assets/contract-dependency-diagram.png | Bin 0 -> 4308 bytes docs/src/assets/trait-inheritance-diagram.png | Bin 0 -> 15193 bytes docs/src/content/docs/book/compile.mdx | 35 ++++++++++++++++-- docs/src/content/docs/book/contracts.mdx | 2 +- 7 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 docs/src/assets/contract-dependency-diagram-2.png create mode 100644 docs/src/assets/contract-dependency-diagram-3.png create mode 100644 docs/src/assets/contract-dependency-diagram.png create mode 100644 docs/src/assets/trait-inheritance-diagram.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ff5389c9..e06c944f5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,7 +81,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added onchain metadata creation for NFTs and Jettons to the cookbook: PR [#1236](https://github.com/tact-lang/tact/pull/1236) - Document that identifiers cannot start with `__gen` or `__tact`, and cannot contain Unicode characters apart from the small subset `a-zA-Z0-9_`: PR [#1312](https://github.com/tact-lang/tact/pull/1312) - Added signatures for map methods, such as `.get()`, `.exists()`, `.set()`, `.replace()`, `.replaceGet()`, `.del()`, `.isEmpty()`, `.deepEquals()`, `.asCell()`: PR [#1352](https://github.com/tact-lang/tact/pull/1352) -- Added a compilation-related page with the description of the compilation report: PR [#1309](https://github.com/tact-lang/tact/pull/1309) +- Added a compilation-related page with the description of the compilation report: PR [#1309](https://github.com/tact-lang/tact/pull/1309), PR [#1387](https://github.com/tact-lang/tact/pull/1387) - Documented `BaseTrait` and methods in stdlib code: PR [#1296](https://github.com/tact-lang/tact/pull/1296) ### Release contributors diff --git a/docs/src/assets/contract-dependency-diagram-2.png b/docs/src/assets/contract-dependency-diagram-2.png new file mode 100644 index 0000000000000000000000000000000000000000..9eedf5cc88a1e55322bba796df7767863192392c GIT binary patch literal 5171 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 JanJ7Ae*k;5>9zm> literal 0 HcmV?d00001 diff --git a/docs/src/assets/contract-dependency-diagram-3.png b/docs/src/assets/contract-dependency-diagram-3.png new file mode 100644 index 0000000000000000000000000000000000000000..cb523b3d9ce3e6c2ab57cec01b2fa07154c816fd GIT binary patch literal 5916 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 li$<3snWdkj)q7R5mDfRAT9KcKdJ_R@ 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 literal 0 HcmV?d00001 diff --git a/docs/src/assets/trait-inheritance-diagram.png b/docs/src/assets/trait-inheritance-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..46975ba4915d53834bb898331e30fe3621175777 GIT binary patch literal 15193 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 literal 0 HcmV?d00001 diff --git a/docs/src/content/docs/book/compile.mdx b/docs/src/content/docs/book/compile.mdx index 0c214b0fd..d310e0afd 100644 --- a/docs/src/content/docs/book/compile.mdx +++ b/docs/src/content/docs/book/compile.mdx @@ -112,14 +112,43 @@ There, the [exit codes](/book/exit-codes) in the range from $0$ to $255$ are tho #### Trait inheritance diagram {#trait-diagram} -This section shows a [Mermaid][mm] diagram of inherited [traits](/book/types#traits), including the [`BaseTrait{:tact}`](/ref/core-base). +This section shows a [Mermaid][mm] diagram of [inherited traits](/book/contracts#traits), including the [`BaseTrait{:tact}`](/ref/core-base). -#### Contract inheritance diagram {#contract-diagram} +For example: + +![Trait inheritance diagram](/src/assets/trait-inheritance-diagram.png) + +There, [`JettonWallet`][code-jetton-wallet] inherits the `WalletExitcodes` and `GasConstant` traits, and all inherit the [`BaseTrait{:tact}`](/ref/core-base). + +#### Contract dependency diagram {#contract-diagram} + +This section shows a [Mermaid][mm] diagram of [contract](/book/contracts) dependencies, i.e. any calls to [`initOf{:tact}`](/book/expressions#initof) in order to compute the initial state of other contracts. + +If the contract has no dependencies, only its name is displayed: + +![Contract dependency diagram without dependencies](/src/assets/contract-dependency-diagram.png) + +However, if the contract, say `FirstOne`, somewhere in its code computes the [initial state](/book/expressions#initof) of another contract, say `SecondOne`, such a relationship is shown in the diagram: -This section shows a [Mermaid][mm] diagram of [contract](/book/contracts) dependencies, i.e. the [traits](/book/types#traits) that it depends upon. +![Contract dependency diagram with a single dependency](/src/assets/contract-dependency-diagram-2.png) + +A real-world example of this would be the [`JettonMinter`][code-jetton-minter] contract, commonly referred to as the [Jetton Master](/cookbook/jettons#jetton-master-contract). Often, `JettonMinter` needs the [initial state](/book/expressions#initof) of the [`JettonWallet`][code-jetton-wallet], which is why `JettonMinter` defines the following [internal function](/book/contracts#internal-functions): + +```tact +inline fun getJettonWalletInit(address: Address): StateInit { + return initOf JettonWallet(address, myAddress()); +} +``` + +Thus, the following dependency diagram is produced: + +![Contract dependency diagram of the JettonMinter](/src/assets/contract-dependency-diagram-3.png) [struct]: /book/structs-and-messages#structs [message]: /book/structs-and-messages#messages [tlb]: https://docs.ton.org/develop/data-formats/tl-b-language [mm]: https://mermaid.js.org/ + +[code-jetton-wallet]: https://github.com/tact-lang/jetton/blob/ef802f95c967f2fd37e80893845c3c3ed7c34c78/sources/jetton_wallet.tact +[code-jetton-minter]: https://github.com/tact-lang/jetton/blob/ef802f95c967f2fd37e80893845c3c3ed7c34c78/sources/jetton_minter_discoverable.tact diff --git a/docs/src/content/docs/book/contracts.mdx b/docs/src/content/docs/book/contracts.mdx index cacab40c2..7aae8237b 100644 --- a/docs/src/content/docs/book/contracts.mdx +++ b/docs/src/content/docs/book/contracts.mdx @@ -33,7 +33,7 @@ Each contract can contain: * [Receiver functions](#receiver-functions) * [Internal functions](#internal-functions) -### Inherited traits, `with{:tact}` {#traits} +### Inherited traits, `with` {#traits} Contracts can inherit all the declarations and definitions from [traits][trait] and override some of their default behaviours. In addition to that, every contract and trait implicitly inherits the special [`BaseTrait{:tact}` trait](/ref/core-base).