0.6.2 • Published 4 years ago

cirru-script v0.6.2

Weekly downloads
11
License
MIT
Repository
github
Last release
4 years ago

CirruScript: a JavaScript generator in Cirru Grammar

Live Docs: http://script.cirru.org/

Play with CirruScript by typing in here: http://repo.cirru.org/script/

The AST transformer of CirruScript is Scirpus https://github.com/Cirru/scirpus .

Usage

npm.io

yarn add cirru-script

Here is a demo of calling compiler:

script = require 'cirru-script'
code = "console.log :demo"
script.compile code

Command-line tool

By installing CirruScript at global, you'll get command cirruscript(and crs for short):

npm i -g cirru-script
cirruscript
# enter REPL
cirruscript>
cirruscript a.cirru
# evaluates a file

File compiling and SourceMaps support might come in the future.

Add DISPLAY_JS for displaying compiled js:

DISPLAY_JS=true cirruscript a.cirru

compile sub-command can compile code:

cirruscript compile from-dir to-dir

Injected functions

There are several command built into REPL for convenience.

Copying data as a string

console.copy :demo

Turn on DISPLAY_JS during REPL running:

console.DISPLAY_JS true

Syntax

-- "test assignment"

= a 1
= b :string
= c true
= d undefined
= e /^hello\sworld$

-- "test values"

console.log 1
console.log a b c

array 1 2 3
console.log $ object (:a 1) (:b :)
  :c $ array 1

-- "combine"

console.log $ array 1 2 3

= e $ array 1 2
= f $ object
  :a 1
  :c :nothing

... gulp
  src :src/**/*.cirru (object (:base :src))
  pipe $ script (object (:dest :../lib))
  pipe $ rename (object (:extname :.js))
  pipe $ gulp.dest :./lib

> 2 1

+ 1 2 3

and (> 2 1) true

not a
not (+ a 1)

new String :x :y

. a :b

? a

in a b

= list $ array 1 2 3 4 5
= obj $ object (:a 1) (:b 2)

= a 1

if (> a 1)
  do
    console.log true
    console.log true
    console.log true
  do
    console.log false

= b $ cond (> a 1) :>1 :<=1

console.log b

= f1 $ \ (a b)
  = a $ + a 2
  console.log a b

= f2 $ \ (a)
  = a 1
  , a

= f3 $ \ ((xs))
  = head $ . xs 0
  = body $ xs.slice 1
  return body.length

switch a
  1 :1
  2
    console.log 1
    console.log 2
  else a

switch 3
  3 :3
  else :else

switch true
  (> a 1) :1
  (> 2 3) :2
  else
    console.log 2
    console.log 2

set a 4
switch true
  (> a 2) :large
  else :small

throw $ new Error ":just an error"

try
  do
    print x
  error
    console.error error

try
  do
    print y
  err

License

MIT

0.6.2

4 years ago

0.6.1

4 years ago

0.6.1-a8

4 years ago

0.6.1-a7

4 years ago

0.6.1-a6

4 years ago

0.6.1-a5

4 years ago

0.6.1-a4

4 years ago

0.6.1-a3

4 years ago

0.6.1-a2

4 years ago

0.6.1-a1

4 years ago

0.6.0

4 years ago

0.6.0-a3

4 years ago

0.6.0-a2

4 years ago

0.6.0-a1

4 years ago

0.5.5

8 years ago

0.5.4

8 years ago

0.5.3-1

8 years ago

0.5.3-0

8 years ago

0.5.2-1

8 years ago

0.5.0-alpha2

8 years ago

0.5.0-alpha1

8 years ago

0.4.26

9 years ago

0.4.26-1

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.27

9 years ago

0.1.26

9 years ago

0.1.25

9 years ago

0.1.24

9 years ago

0.1.23

9 years ago

0.1.21

9 years ago

0.1.20

9 years ago

0.1.19

9 years ago

0.1.18

9 years ago

0.1.17

9 years ago

0.1.16

9 years ago

0.1.15

9 years ago

0.1.14

9 years ago

0.1.13

9 years ago

0.1.12

9 years ago

0.1.11

9 years ago

0.1.10

9 years ago

0.1.9

9 years ago

0.1.8

9 years ago

0.1.7

9 years ago

0.1.6

9 years ago

0.1.5

9 years ago

0.1.4-1

9 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago