2016-04-08 13:10:37 -04:00
|
|
|
## scratch-vm
|
|
|
|
|
2016-04-18 17:22:23 -04:00
|
|
|
[![Build Status](https://travis-ci.com/LLK/scratch-vm.svg?token=xzzHj4ct3SyBTpeqxnx1&branch=develop)](https://travis-ci.com/LLK/scratch-vm)
|
|
|
|
|
2016-04-08 13:10:37 -04:00
|
|
|
## Installation
|
|
|
|
```bash
|
|
|
|
npm install scratch-vm
|
|
|
|
```
|
|
|
|
|
2016-04-18 17:20:30 -04:00
|
|
|
## Setup
|
2016-04-08 13:10:37 -04:00
|
|
|
```js
|
2016-04-18 17:20:30 -04:00
|
|
|
var VirtualMachine = require('scratch-vm');
|
|
|
|
var vm = new VirtualMachine();
|
2016-04-08 13:10:37 -04:00
|
|
|
|
2016-04-18 17:20:30 -04:00
|
|
|
// Block events
|
|
|
|
|
|
|
|
// UI events
|
|
|
|
|
|
|
|
// Listen for events
|
|
|
|
```
|
|
|
|
|
|
|
|
## Standalone Build
|
|
|
|
```bash
|
|
|
|
make build
|
|
|
|
```
|
|
|
|
|
|
|
|
```html
|
|
|
|
<script src="/path/to/vm.js"></script>
|
|
|
|
<script>
|
|
|
|
var vm = new window.VirtualMachine();
|
|
|
|
// do things
|
|
|
|
</script>
|
2016-04-08 13:10:37 -04:00
|
|
|
```
|
|
|
|
|
2016-04-26 09:49:52 -04:00
|
|
|
## Abstract Syntax Tree
|
|
|
|
|
|
|
|
#### Overview
|
|
|
|
|
|
|
|
#### Anatomy of a Block
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"id": "^1r~63Gdl7;Dh?I*OP3_",
|
|
|
|
"opcode": "wedo_motorclockwise",
|
|
|
|
"next": null,
|
|
|
|
"fields": {
|
|
|
|
"DURATION": {
|
|
|
|
"name": "DURATION",
|
|
|
|
"value": null,
|
|
|
|
"blocks": {
|
|
|
|
"1?P=eV(OiDY3vMk!24Ip": {
|
|
|
|
"id": "1?P=eV(OiDY3vMk!24Ip",
|
|
|
|
"opcode": "math_number",
|
|
|
|
"next": null,
|
|
|
|
"fields": {
|
|
|
|
"NUM": {
|
|
|
|
"name": "NUM",
|
|
|
|
"value": "10",
|
|
|
|
"blocks": null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"SUBSTACK": {
|
|
|
|
"name": "SUBSTACK",
|
|
|
|
"value": "@1ln(HsUO4!]*2*%BrE|",
|
|
|
|
"blocks": null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2016-04-08 13:10:37 -04:00
|
|
|
## Testing
|
|
|
|
```bash
|
|
|
|
make test
|
|
|
|
```
|
|
|
|
|
|
|
|
```bash
|
|
|
|
make coverage
|
|
|
|
```
|
|
|
|
|
|
|
|
```bash
|
|
|
|
make benchmark
|
|
|
|
```
|