Popularity
7.7
Declining
Activity
4.3
-
1,433
46
119

Programming language: Go
License: MIT License
Latest version: v0.1.8

anko alternatives and similar packages

Based on the "Embeddable Scripting Languages" category.
Alternatively, view anko alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of anko or a related project?

Add another 'Embeddable Scripting Languages' Package

README

Anko

GoDoc Reference Build Status Financial Contributors on Open Collective Coverage Go Report Card

Anko is a scriptable interpreter written in Go.

(Picture licensed under CC BY-SA 3.0, photo by Ocdp)

Usage Example - Embedded

package main

import (
    "fmt"
    "log"

    "github.com/mattn/anko/env"
    "github.com/mattn/anko/vm"
)

func main() {
    e := env.NewEnv()

    err := e.Define("println", fmt.Println)
    if err != nil {
        log.Fatalf("Define error: %v\n", err)
    }

    script := `
println("Hello World :)")
`

    _, err = vm.Execute(e, nil, script)
    if err != nil {
        log.Fatalf("Execute error: %v\n", err)
    }

    // output: Hello World :)
}

More examples are located in the GoDoc:

https://godoc.org/github.com/mattn/anko/vm

Usage Example - Command Line

Building

go get github.com/mattn/anko
go install github.com/mattn/anko

Running an Anko script file named script.ank

./anko script.ank

Anko Script Quick Start

// declare variables
x = 1
y = x + 1

// print using outside the script defined println function
println(x + y) // 3

// if else statement
if x < 1 || y < 1 {
    println(x)
} else if x < 1 && y < 1 {
    println(y)
} else {
    println(x + y)
}

// slice
a = []interface{1, 2, 3}
println(a) // [1 2 3]
println(a[0]) // 1

// map
a = map[interface]interface{"x": 1}
println(a) // map[x:1]
a.b = 2
a["c"] = 3
println(a["b"]) // 2
println(a.c) // 3

// struct
a = make(struct {
    A int64,
    B float64
})
a.A = 4
a.B = 5.5
println(a.A) // 4
println(a.B) // 5.5

// function
func a (x) {
    println(x + 1)
}
a(5) // 6

Please note that the master branch is not stable

The master branch language and API may change at any time.

To mitigate breaking changes, please use tagged branches. New tagged branches will be created for breaking changes.

Author

Yasuhiro Matsumoto (a.k.a mattn)

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]


*Note that all licence references and agreements mentioned in the anko README section above are relevant to that project's source code only.