README
soltar
Generate Solidity Code from its Abstract Syntax Tree. (The AST must follow the Spider Monkey API for defining AST nodes).
An NPM module, solidity-parser, exists if you want to generate AST of your solidity code.
npm install solidity-parser
I've also released a clone of solidity-parser called solparse - it has a lot of bug fixes and I maintain it.
npm install solparse
Installation
npm install --save soltar
Documentation
To use Soltar in Browser, include:
<script src="soltar-bundle.js"></script>
You can then access the Soltar object by using window.Soltar
or simply Soltar
.
In order to access Soltar's functionality in Node.js, require()
it like:
let Soltar = require ('soltar');
API
generate - The main function that takes 2 arguments: ast (the Solidity Code's abstract syntax tree (following the Spider monkey API) & options (optional) to confgure the output
version - Get version information
Example
A typical AST would look like:
{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "AssignmentExpression",
"operator": "=",
"left": {
"type": "DeclarativeExpression",
"name": "myVar",
"literal": {
"type": "Type",
"literal": "uint",
"members": [],
"array_parts": [
3
]
},
"is_constant": false,
"is_public": false,
"is_memory": false
},
"right": {
"type": "ArrayExpression",
"elements": [
{
"type": "Literal",
"value": 1
},
{
"type": "Literal",
"value": 2
},
{
"type": "Literal",
"value": 3
}
]
}
}
}
]
}
The default options configuration is:
let options = {
format: {
indent: {
style: '\t',
base: 0
},
newline: '\n',
space: ' ',
quotes: 'single',
minify: false
}
}
Usage
/*
AST is the solidity-parser generated Abstract Syntax Tree
soltar is the require()d object
*/
let options = {
format: {
indent: {
style: '\t',
base: 0
},
newline: '\n\n',
space: ' ',
quotes: 'double'
}
};
let sourceCode = soltar.generate (AST, options);
console.log (sourceCode);
Output
contract Vote {
address public creator;
function Vote () {
creator = msg.sender;
}
}
The above solidity code corresponds to this Abstract Syntax Tree
See examples for a full contract example.
Future enhancements:
1. Commandline utility
PROBLEMS WITH solidity-parser
There are currently a few bugs in solidity-parser. I've listed them. You can instead choose to install solparse (see above).