javascript - example_test.go

package javascript_test

import (
	"fmt"

	"vimagination.zapto.org/javascript"
	"vimagination.zapto.org/parser"
)

func Example() {
	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);
}