github.com/lmorg/murex@v0.0.0-20240217211045-e081c89cd4ef/builtins/core/time/time.go (about)

     1  package time
     2  
     3  import (
     4  	"errors"
     5  	"time"
     6  
     7  	"github.com/lmorg/murex/lang"
     8  	"github.com/lmorg/murex/lang/types"
     9  )
    10  
    11  func init() {
    12  	lang.DefineFunction("time", cmdTime, types.Any)
    13  }
    14  
    15  func cmdTime(p *lang.Process) (err error) {
    16  	p.Stdout.SetDataType(types.Integer)
    17  
    18  	if p.Parameters.Len() == 0 {
    19  		return errors.New("Missing parameters")
    20  	}
    21  
    22  	block := p.Parameters.StringAll()
    23  	start := time.Now()
    24  
    25  	p.ExitNum, err = p.Fork(lang.F_DEFAULTS).Execute([]rune(block))
    26  	if err != nil {
    27  		return
    28  	}
    29  
    30  	s := types.FloatToString(time.Now().Sub(start).Seconds())
    31  	_, err = p.Stderr.Write([]byte(s))
    32  	return
    33  }