Coder Social home page Coder Social logo

hetu script

Hetu Script

A lightweight scripting language written in Dart for embedding in Flutter apps.

简体中文页面

Introduction

Hetu is a lightweight scripting language purely written in Dart for embedding in Flutter apps. Our goal is to enable Flutter app & game to have hotfix and scripting ability.

Documentation 中文文档

Features

  • Modern programming language syntax likes typescript/kotlin/swift, need very little time to get familiar with.
  • Full scripting language abilities: class OOP, prototype OOP, FP, module, errors, etc.
  • Runs on all platforms that flutter supports, including web browsers and desktop.
  • Extremely easy on binding, call Dart functions in script or call script functions in Dart with just one line.

Test Hetu script in the online playground.

Quick start

To eval a string literal of Hetu code in Dart.

import 'package:hetu_script/hetu_script.dart';

void main() {
  final hetu = Hetu();
  hetu.init();
  hetu.eval(r'''
    var ht = {
      name: 'Hetu',
      greeting: () {
        print('Greetings from ${this.name}!')
      }
    }
    ht.greeting()
  ''');
}

To pass a Map to script, modify it in script and get it back:

import 'package:hetu_script/hetu_script.dart';

void main() {
  final hetu = Hetu();
  hetu.init(externalFunctions: {
    'hello': () => {'greetings': 'greetings from Dart!'},
  });
  var hetuValue = hetu.eval(r'''
      external function hello
      var dartValue = hello()
      dartValue['reply'] = 'Hi, this is Hetu.'
      dartValue // the script will return the value of it's last expression
      ''');

  print('hetu value: $hetuValue');
}

You can check the documentation for more information on the grammar and binding.

IDE extension

If you are using VS Code, you can download this extension to get basic highlight and dart snippets on bindings.

Command line tool

We have a command line REPL tool for quick testing. You can activate by the following command:

dart pub global activate hetu_script_dev_tools

Then you can use command line tool 'hetu' in any directory on your computer.

More information about the command line tool can be found by enter 'hetu -h'.

If no arguments is provided, enter REPL mode.

In REPL mode, every exrepssion you entered will be evaluated and print out immediately.

If you want to write multiple line in REPL mode, use '\' to end a line.

>>>var a = 42
null // repl print
>>>a
42 // repl print
>>>function meaning {\
return a }
null // repl print
>>>meaning
meaning() -> any // repl print
>>>hello()
42 // repl print

You can check this official document for more information on 'pub global activate'.

Discussion group

Discord: https://discord.gg/aJedwcRPr8

中文交流可以加 QQ 群:812529118

Support

You can support my project by simply giving it a star on GitHub.

Or you can buy me a coffee:

Buy me a coffee

Hetu 河图's Projects

heavenly-tribulation icon heavenly-tribulation

Heavenly Tribulation: A RPG game mixed with cardgame-autobattler/Tycoon elements. Game logic is written in Hetu Script. 《天道奇劫》:混合了仙侠RPG+卡牌自动对战+门派经营玩法的游戏。

hetu-script icon hetu-script

Hetu is a lightweight scripting language written in Dart for embedding in Flutter apps.

hetu-script-autobinding icon hetu-script-autobinding

Auto binding codes generator for Hetu script language. Generate from Flutter/Dart library, your codes, or any packages and use them in the scripts.

script-widget icon script-widget

Add a dynamically created, script-driven widget in your Flutter app.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.