/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const React = require("react");
const CompLibrary = require("../../core/CompLibrary.js");
const hljs = require("highlight.js");
const MarkdownBlock = CompLibrary.MarkdownBlock; /* Used to read markdown */
const Container = CompLibrary.Container;
const GridBlock = CompLibrary.GridBlock;
const pre = "```";
const pascaligoExampleSmall = `${pre}pascaligo
// variant defining pseudo multi-entrypoint
// actions
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
// real entrypoint that re-routes the flow
// based on the action provided
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)
${pre}`;
const pascaligoExample = `${pre}pascaligo
// variant defining pseudo multi-entrypoint actions
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
// real entrypoint that re-routes the flow based
// on the action provided
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)
${pre}`;
const cameligoExampleSmall = `${pre}ocaml
type storage = int
(* variant defining pseudo multi-entrypoint
actions *)
type action =
| Increment of int
| Decrement of int
let add (a: int) (b: int): int = a + b
let subtract (a: int) (b: int): int = a - b
(* real entrypoint that re-routes the flow
based on the action provided *)
let%entry main(p : action) storage =
let storage =
match p with
| Increment n -> add storage n
| Decrement n -> subtract storage n
in (([] : operation list), storage)
${pre}`;
const cameligoExample = `${pre}ocaml
type storage = int
(* variant defining pseudo multi-entrypoint actions *)
type action =
| Increment of int
| Decrement of int
let add (a: int) (b: int): int = a + b
let subtract (a: int) (b: int): int = a - b
(* real entrypoint that re-routes the flow based on
the action provided *)
let%entry main(p : action) storage =
let storage =
match p with
| Increment n -> add storage n
| Decrement n -> subtract storage n
in (([] : operation list), storage)
${pre}`;
const PascalLIGOTab = () => (
);
const TryOut = () => (
{[
{
content:
"To make your landing page more attractive, use illustrations! Check out " +
"[**unDraw**](https://undraw.co/) which provides you with customizable illustrations which are free to use. " +
"The illustrations you see on this page are from unDraw.",
image: `${baseUrl}img/undraw_code_review.svg`,
imageAlign: "left",
title: "Wonderful SVG Illustrations"
}
]}
);
const Description = () => (
{[
{
content:
"This is another description of how this project is useful",
image: `${baseUrl}img/undraw_note_list.svg`,
imageAlign: "right",
title: "Description"
}
]}
);
const LearnHow = () => (
{[
{
content:
"Each new Docusaurus project has **randomly-generated** theme colors.",
image: `${baseUrl}img/undraw_youtube_tutorial.svg`,
imageAlign: "right",
title: "Randomly Generated Theme Colors"
}
]}
);
const FeatureCard = props => (
{props.title}
{props.content}
);
const Features = () => (
Features
{[
{
content:
"Write types, then code, and benefit from the safety coming from type systems.",
image: `${baseUrl}img/strong-type-system.svg`,
title: "Strong Type System"
},
{
content:
"Write in PascaLIGO (pascal-like syntax) or CameLIGO (caml-like syntax). If you know OCaml, you can also add your own syntax.",
image: `${baseUrl}img/syntax-agnostic.svg`,
title: "Syntax Agnostic"
},
{
content: "With Granary, you can use LIGO as a lib from NodeJS.",
image: `${baseUrl}img/easy-integration.svg`,
title: "Easy Integration"
}
].map(FeatureCard)}
);
const Roadmap = () => (
{[
{
content:
"
June 2019
" +
"
" +
"
First public release
" +
"
PascaLIGO and CameLIGO syntaxes
" +
"
Docs and Tutorials
" +
"
Integration testing in ReasonML/JS with Granary
" +
"
" +
"
July 2019
" +
"
" +
"
Try LIGO online editor
" +
"
Unit testing toolkit
" +
"
ReasonLIGO syntax support
" +
"
Repository with best practices & patterns for LIGO
" +
"
" +
"
August 2019
" +
"" +
"Long term plans will be announced soon" +
"",
image: ``,
imageAlign: "right",
title: "Roadmap"
}
]}