/** * 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 = () => (
{pascaligoExample}
); const CamelLIGOTab = () => (
{cameligoExample}
); const LinkButton = props => ( ); class HomeSplash extends React.Component { render() { const { siteConfig, language = "" } = this.props; const { baseUrl, docsUrl } = siteConfig; const docsPart = `${docsUrl ? `${docsUrl}/` : ""}`; const langPart = `${language ? `${language}/` : ""}`; const docUrl = doc => `${baseUrl}${docsPart}${langPart}${doc}`; const SampleCode = props => (
PascaLIGO
CameLIGO
ReasonLIGO (coming soon)
{PascalLIGOTab()} {CamelLIGOTab()}
); return (

{siteConfig.tagline}

{siteConfig.taglineSub}

Get Started
); } } class Index extends React.Component { render() { const { config: siteConfig, language = "" } = this.props; const { baseUrl } = siteConfig; const Block = props => ( ); const FeatureCallout = () => (

Feature Callout

These are features of this project
); 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" } ]}
); const Partners = () => { if ((siteConfig.partners || []).length === 0) { return null; } const PartnerShowcase = siteConfig.partners .filter(user => user.pinned) .map(user => ( {user.caption} )); return (
{PartnerShowcase}

Our Partners

We are not alone in this world -- here're some people who support us

); }; const Team = () => { if ((siteConfig.team || []).length === 0) { return null; } const showcase = siteConfig.team .filter(user => user.pinned) .map(user => ( {user.caption}

{user.caption}

)); return (

Team

{showcase}
); }; return (
{/* */} {/* */} {/* {/* */} {/* */} {/* */}
); } } module.exports = Index;