Skip to content

Latest commit

 

History

History
executable file
·
115 lines (77 loc) · 2.03 KB

README.md

File metadata and controls

executable file
·
115 lines (77 loc) · 2.03 KB

An abstract language on top of JavaScript for any purpose

puzzle

Important: The puzzle project is in early stage and under development. It's not yet production ready. If you'd like to contribute to the code or the module ecosystem, feel free to open a PR.

Example

var names = ["Peter", "Mag", "Stewie"]

loop.over(names).do(name => {
  print(name)
})

every(1000).print('hello world')

Get started

PUZZLE runs in any JavaScript environment, including Node and Browsers.

Node

$ npm i puzzlelang --global
const puzzle = require('puzzlelang');

after(2000).run(() => print('hello'))

Browsers

<script src="https://cdn.jsdelivr.net/npm/puzzlelang@latest/puzzle.browser.js">
<script type="text/javascript">
  repeat(7).run(() => print("hello from the browser!"))
</script>

Language Basics

Print

print('hello')

Variables

Variables can be defined either the JavaScript way or using puzzle syntax

set('name', 'Peter')

Persistent Variables

Persistend variables are stored locally

set('name', 'Peter').local()

Functions

Like variables, functions can also be defined either the JavaScript way or using puzzle syntax

set('sayHello', (name) => {
  print('hello ' + name)
})

Scheduled Functions

Functions can be scheduled

// Repeat every X milliseconds
every(2000).run(sayHello)

// Repeat X times
repeat(10).run(sayHello)

// Run after X milliseconds
after(10000).run(sayHello)

Loops

Loops can iteragte over data (arrays)

var array = [1,2,3]

loop.over(data).do(it => {
  print(it)
})

Math

// min and max
min([1,4,6,7]).as('result')
max([4,7,8,2]).as('result')