A React component for embedding Ligo code snippets on a page.
# Quick start
1. Install package `yarn add @ligolang/ligo-snippets`
2. Add `LigoSnippet` component to a page
```jsx
import { LigoSnippet } from "@ligolang/ligo-snippets";
const App = () => {
const code = `type storage is int
type parameter is
Increment of int
| Decrement of int
| Reset
type return is list (operation) * storage
// Two entrypoints
function add (const store : storage; const delta : int) : storage is
store + delta
function sub (const store : storage; const delta : int) : storage is
store - delta
(* Main access point that dispatches to the entrypoints according to
the smart contract parameter. *)
function main (const action : parameter; const store : storage) : return is
((nil : list (operation)), // No operations
case action of
Increment (n) -> add (store, n)
| Decrement (n) -> sub (store, n)
| Reset -> 0
end)`
const snippetData = {
"language": "pascaligo", // Required - Takes a string value of a Ligo language (e.g. "pascaligo", "reasonligo" or "cameligo").
"code": code, // Required - Takes a string value of your code snippet.
"name": "PascaLigo Code Snippet Example", // Optional - Takes a string value to display as your snippet's title on the Ligo Web IDE.
"theme": "dark", // Optional - Takes a string value of either "dark" or "light".
"height": "" // Optional - Takes a string value of a CSS height (e.g. "100px").
}
return
}
render(, document.getElementById("root"));
```
The `snippetData` values of `language` and `code` are required. These values determine the code displayed and the syntax highlighting. The `name` value is optional and will be used as the title of your code when sent to the Ligo Web IDE.
# Ligo Web IDE
Ligo Snippets can be opened in the Ligo Web IDE [(https://ide.ligolang.org/)](https://ide.ligolang.org/) by clicking the IDE button at the bottom of the snippet. The Ligo Web IDE can take in preset configurations for the available features.
## Available Configurations
```json
"name": string,
"language": string,
"compile": {
"entrypoint": string
},
"dryRun": {
"entrypoint": string,
"parameters": string,
"storage": string,
},
"deploy": {
"entrypoint": string,
"storage": string,
},
"evaluateValue": {
"entrypoint": string
},
"evaluateFunction": {
"entrypoint": string,
"parameters": string
},
"generateDeployScript": {
"entrypoint": string,
"storage": string
}
```
## Setting Configurations
When using the configurations to set preset default values for the Ligo Web IDE, please note that the `name` and `language` values are required. When present, these values will replace the `name` and `language` values from your `snippetData`. Everything else is optional.
Add the configuration in a yaml format at the top of your the code you are trying to display.
```js
(*_*
name: PascaLIGO Contract
language: pascaligo
compile:
entrypoint: main
dryRun:
entrypoint: main
parameters: Increment (1)
storage: 0
deploy:
entrypoint: main
storage: 0
evaluateValue:
entrypoint: ""
evaluateFunction:
entrypoint: add
parameters: (5, 6)
generateDeployScript:
entrypoint: main
storage: 0
*_*)
type action is
| Increment of int
| Decrement of int
function add (const a : int ; const b : int) : int is
block { skip } with a + b
function subtract (const a : int ; const b : int) : int is
block { skip } with a - b
function main (const p : action ; const s : int) :
(list(operation) * int) is
block { skip } with ((nil : list(operation)),
case p of
| Increment(n) -> add(s, n)
| Decrement(n) -> subtract(s, n)
end)
```