-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample_test.go
More file actions
32 lines (23 loc) · 1.03 KB
/
example_test.go
File metadata and controls
32 lines (23 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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);
}