Documentation
¶
Index ¶
- type Config
- type Evaluator
- func (e *Evaluator) CompleteInput(_ context.Context, req repl.CompletionRequest) (repl.CompletionResult, error)
- func (e *Evaluator) Evaluate(ctx context.Context, code string) (string, error)
- func (e *Evaluator) EvaluateStream(ctx context.Context, code string, emit func(repl.Event)) error
- func (e *Evaluator) GetAvailableModules() []string
- func (e *Evaluator) GetConfig() Config
- func (e *Evaluator) GetFileExtension() string
- func (e *Evaluator) GetHelpBar(_ context.Context, req repl.HelpBarRequest) (repl.HelpBarPayload, error)
- func (e *Evaluator) GetHelpDrawer(ctx context.Context, req repl.HelpDrawerRequest) (repl.HelpDrawerDocument, error)
- func (e *Evaluator) GetHelpText() string
- func (e *Evaluator) GetName() string
- func (e *Evaluator) GetPrompt() string
- func (e *Evaluator) GetRuntime() *goja.Runtime
- func (e *Evaluator) GetVariable(name string) (interface{}, error)
- func (e *Evaluator) IsValidCode(code string) bool
- func (e *Evaluator) LoadScript(ctx context.Context, filename string, content string) error
- func (e *Evaluator) Reset() error
- func (e *Evaluator) SetVariable(name string, value interface{}) error
- func (e *Evaluator) SupportsMultiline() bool
- func (e *Evaluator) UpdateConfig(config Config) error
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
EnableModules bool
EnableCallLog bool
EnableConsoleLog bool
EnableNodeModules bool
CustomModules map[string]interface{}
}
Config holds configuration for the JavaScript evaluator
func DefaultConfig ¶
func DefaultConfig() Config
DefaultConfig returns a default configuration for JavaScript evaluation
type Evaluator ¶
type Evaluator struct {
// contains filtered or unexported fields
}
Evaluator implements the REPL evaluator interface for JavaScript
Example ¶
package main
import (
"context"
"fmt"
"log"
"github.com/go-go-golems/bobatea/pkg/repl/evaluators/javascript"
)
func main() {
// Create a JavaScript evaluator with default configuration
evaluator, err := javascript.NewWithDefaults()
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Basic JavaScript evaluation
result, err := evaluator.Evaluate(ctx, "2 + 3")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Result: %s\n", result)
// Variable assignment and retrieval
_, err = evaluator.Evaluate(ctx, "let name = 'World'")
if err != nil {
log.Fatal(err)
}
result, err = evaluator.Evaluate(ctx, "name")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Name: %s\n", result)
// Function definition and call
_, err = evaluator.Evaluate(ctx, "function greet(name) { return 'Hello, ' + name + '!'; }")
if err != nil {
log.Fatal(err)
}
result, err = evaluator.Evaluate(ctx, "greet(name)")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Greeting: %s\n", result)
}
Output: Result: 5 Name: World Greeting: Hello, World!
Example (CustomConfiguration) ¶
package main
import (
"context"
"fmt"
"log"
"github.com/go-go-golems/bobatea/pkg/repl/evaluators/javascript"
)
func main() {
// Create a JavaScript evaluator with custom configuration
config := javascript.Config{
EnableModules: true,
EnableConsoleLog: true,
EnableNodeModules: true,
CustomModules: map[string]interface{}{
"math": map[string]interface{}{
"pi": 3.14159,
"add": func(a, b float64) float64 { return a + b },
},
},
}
evaluator, err := javascript.New(config)
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
// Use custom module
result, err := evaluator.Evaluate(ctx, "math.pi")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Pi: %s\n", result)
result, err = evaluator.Evaluate(ctx, "math.add(10, 5)")
if err != nil {
log.Fatal(err)
}
fmt.Printf("Addition: %s\n", result)
}
Output: Pi: 3.14159 Addition: 15
Example (InterfaceProperties) ¶
package main
import (
"fmt"
"log"
"github.com/go-go-golems/bobatea/pkg/repl/evaluators/javascript"
)
func main() {
evaluator, err := javascript.NewWithDefaults()
if err != nil {
log.Fatal(err)
}
// Interface properties
fmt.Printf("Name: %s\n", evaluator.GetName())
fmt.Printf("Prompt: %s\n", evaluator.GetPrompt())
fmt.Printf("File Extension: %s\n", evaluator.GetFileExtension())
fmt.Printf("Supports Multiline: %t\n", evaluator.SupportsMultiline())
}
Output: Name: JavaScript Prompt: js> File Extension: .js Supports Multiline: true
func NewWithDefaults ¶
NewWithDefaults creates a new JavaScript evaluator with default configuration
func (*Evaluator) CompleteInput ¶ added in v0.1.0
func (e *Evaluator) CompleteInput(_ context.Context, req repl.CompletionRequest) (repl.CompletionResult, error)
CompleteInput resolves JavaScript completions using jsparse CST + resolver primitives.
func (*Evaluator) EvaluateStream ¶ added in v0.0.29
EvaluateStream adapts Evaluate to the streaming interface used by the timeline-based REPL.
func (*Evaluator) GetAvailableModules ¶
GetAvailableModules returns a list of available modules
func (*Evaluator) GetFileExtension ¶
GetFileExtension returns the file extension for external editor
func (*Evaluator) GetHelpBar ¶ added in v0.1.0
func (e *Evaluator) GetHelpBar(_ context.Context, req repl.HelpBarRequest) (repl.HelpBarPayload, error)
GetHelpBar resolves contextual one-line symbol help for the JS REPL input.
func (*Evaluator) GetHelpDrawer ¶ added in v0.1.0
func (e *Evaluator) GetHelpDrawer(ctx context.Context, req repl.HelpDrawerRequest) (repl.HelpDrawerDocument, error)
GetHelpDrawer resolves rich contextual help for the JS REPL input.
func (*Evaluator) GetHelpText ¶
GetHelpText returns help text for JavaScript evaluation
func (*Evaluator) GetRuntime ¶
GetRuntime returns the underlying Goja runtime (for advanced usage)
func (*Evaluator) GetVariable ¶
GetVariable gets a variable from the JavaScript runtime
func (*Evaluator) IsValidCode ¶
IsValidCode checks if the given code is syntactically valid JavaScript
func (*Evaluator) LoadScript ¶
LoadScript loads and executes a JavaScript file
func (*Evaluator) SetVariable ¶
SetVariable sets a variable in the JavaScript runtime
func (*Evaluator) SupportsMultiline ¶
SupportsMultiline returns true since JavaScript supports multiline input
func (*Evaluator) UpdateConfig ¶
UpdateConfig updates the evaluator configuration