-- import "vimagination.zapto.org/javascript"
Package javascript implements a javascript tokeniser and AST.
- Parse javascript code into AST.
- Modify parsed code.
- Consistant javascript formatting.
- Parse Typescript as comments, allowing it to be parsed as normal Javascript.
- Scoping package to allowing the processing of identifier references.
package main
import (
"fmt"
"vimagination.zapto.org/javascript"
"vimagination.zapto.org/parser"
)
func main() {
src := `function greet(name) {console.log("Hello, " + name)} for (const name of ["Alice", "Bob", "Charlie"]) greet(name)`
tk := parser.NewStringTokeniser(src)
ast, err := javascript.ParseModule(&tk)
if err != nil {
fmt.Println(err)
return
}
javascript.UnwrapConditional(javascript.WrapConditional(javascript.UnwrapConditional(javascript.UnwrapConditional(ast.ModuleListItems[0].StatementListItem.Declaration.FunctionDeclaration.FunctionBody.StatementList[0].Statement.ExpressionStatement.Expressions[0].ConditionalExpression).(*javascript.CallExpression).Arguments.ArgumentList[0].AssignmentExpression.ConditionalExpression).(*javascript.AdditiveExpression).AdditiveExpression)).(*javascript.PrimaryExpression).Literal.Data = `"Hi, "`
fmt.Printf("%s", ast)
// Output:
// function greet(name) {
// console.log("Hi, " + name);
// }
//
// for (const name of ["Alice", "Bob", "Charlie"]) greet(name);
}Full API docs can be found at: