Added help command
This commit is contained in:
parent
5b4e45ff80
commit
e0db900e4e
4 changed files with 120 additions and 28 deletions
|
|
@ -7,6 +7,8 @@ import (
|
|||
"ucl.lmika.dev/ucl"
|
||||
)
|
||||
|
||||
type NoResults struct{}
|
||||
|
||||
func (r *REPL) EvalAndDisplay(ctx context.Context, expr string) error {
|
||||
res, err := r.inst.Eval(ctx, expr)
|
||||
if err != nil {
|
||||
|
|
@ -18,20 +20,26 @@ func (r *REPL) EvalAndDisplay(ctx context.Context, expr string) error {
|
|||
|
||||
func displayResult(ctx context.Context, inst *ucl.Inst, res any) (err error) {
|
||||
switch v := res.(type) {
|
||||
case NoResults:
|
||||
return nil
|
||||
case nil:
|
||||
if _, err = fmt.Fprintln(os.Stdout, "(nil)"); err != nil {
|
||||
return err
|
||||
}
|
||||
case listable:
|
||||
case ucl.Listable:
|
||||
for i := 0; i < v.Len(); i++ {
|
||||
if err = displayResult(ctx, inst, v.Index(i)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
default:
|
||||
case ucl.Object:
|
||||
if _, err = fmt.Fprintln(os.Stdout, v.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
default:
|
||||
if _, err = fmt.Fprintln(os.Stdout, v); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue