/**
* 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 pascaligoHighlighting = `
function pascaligo(hljs) {
return {
case_insensitive: true,
keywords: 'and begin block case const contains down else end fail for ' +
'from function if in is list map mod nil not of or patch ' +
'procedure record remove set skip step then to type var while'
,
literal: 'true false unit int string some none',
lexemes: '[a-z_]\\w*!?'
}
}
`
const pre = "```";
const pascaligoExample = `${pre}pascaligo
// variant defining pseudo multi-entrypoint actions
type action is
| Increment
| Decrement
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 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"
}
]}