Skip to content

Commit

Permalink
Testing (my) safecast - cost 1.3kb (gsa) (#220)
Browse files Browse the repository at this point in the history
* Testing (my) safecast - cost 1.3kb (gsa)

* go get -u

* Update to fortio's
  • Loading branch information
ldemailly authored Sep 15, 2024
1 parent e106894 commit d0b5fa2
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 27 deletions.
28 changes: 13 additions & 15 deletions extensions/extension.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"unicode/utf8"

"fortio.org/log"
"fortio.org/safecast"
"fortio.org/terminal"
"github.com/rivo/uniseg"
"grol.io/grol/eval"
Expand Down Expand Up @@ -140,6 +141,8 @@ func initInternal(c *Config) error {
{math.Acos, "acos"},
{math.Atan, "atan"},
{math.Log10, "log10"},
{math.Floor, "floor"},
{math.Ceil, "ceil"},
} {
oneFloat.Callback = object.ShortCallback(func(args []object.Object) object.Object {
// Arg len check already done through MinArgs=MaxArgs=1 and
Expand All @@ -150,21 +153,16 @@ func initInternal(c *Config) error {
MustCreate(oneFloat)
}
// These are all int-returning functions.
for _, function := range []struct {
fn OneFloatInOutFunc
name string
}{
{math.Round, "round"},
{math.Trunc, "trunc"},
{math.Floor, "floor"},
{math.Ceil, "ceil"},
} {
oneFloat.Callback = object.ShortCallback(func(args []object.Object) object.Object {
return object.Integer{Value: int64(function.fn(args[0].(object.Float).Value))}
})
oneFloat.Name = function.name
MustCreate(oneFloat)
}
oneFloat.Name = "round"
oneFloat.Callback = object.ShortCallback(func(args []object.Object) object.Object {
return object.Integer{Value: safecast.MustRound[int64](args[0].(object.Float).Value)}
})
MustCreate(oneFloat)
oneFloat.Name = "trunc"
oneFloat.Callback = object.ShortCallback(func(args []object.Object) object.Object {
return object.Integer{Value: safecast.MustTruncate[int64](args[0].(object.Float).Value)}
})
MustCreate(oneFloat)
MustCreate(object.Extension{
Name: "atan2",
MinArgs: 2,
Expand Down
9 changes: 5 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.22.7
require (
fortio.org/cli v1.9.0
fortio.org/log v1.16.0
fortio.org/safecast v0.1.0
fortio.org/sets v1.2.0
fortio.org/struct2env v0.4.1
fortio.org/terminal v0.8.2
Expand All @@ -17,8 +18,8 @@ require (
require (
fortio.org/term v0.23.0-fortio-6 // indirect
github.com/kortschak/goroutine v1.1.2 // indirect
golang.org/x/crypto/x509roots/fallback v0.0.0-20240806160748-b2d3a6a4b4d3 // indirect
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/tools v0.24.0 // indirect
golang.org/x/crypto/x509roots/fallback v0.0.0-20240910204333-9e92970a1eb4 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/tools v0.25.0 // indirect
)
18 changes: 10 additions & 8 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ fortio.org/cli v1.9.0 h1:cPgNHvrjxznmbmwuXSwPqQLKZ+RMW8i0iAOESLjt1aI=
fortio.org/cli v1.9.0/go.mod h1:pk/JBE8LcXtNuo5Yj2bLsVbwPaHo8NWdbstSN0cpbFk=
fortio.org/log v1.16.0 h1:GhU8/9NkYZmEIzvTN/DTMedDAStLJraWUUVUA2EbNDc=
fortio.org/log v1.16.0/go.mod h1:t58Spg9njjymvRioh5F6qKGSupEsnMjXLGWIS1i3khE=
fortio.org/safecast v0.1.0 h1:YXinAgFD4OIFoXX9Ndn2AQBVo7tUf3IlqXznP8XcKhY=
fortio.org/safecast v0.1.0/go.mod h1:kt6vI9BSRimgDGhNjxgvAfrYPsy0Zsrql46Lt/3jq9Y=
fortio.org/sets v1.2.0 h1:FBfC7R2xrOJtkcioUbY6WqEzdujuBoZRbSdp1fYF4Kk=
fortio.org/sets v1.2.0/go.mod h1:J2BwIxNOLWsSU7IMZUg541kh3Au4JEKHrghVwXs68tE=
fortio.org/struct2env v0.4.1 h1:rJludAMO5eBvpWplWEQNqoVDFZr4RWMQX7RUapgZyc0=
Expand All @@ -20,13 +22,13 @@ github.com/kortschak/goroutine v1.1.2 h1:lhllcCuERxMIK5cYr8yohZZScL1na+JM5JYPRcl
github.com/kortschak/goroutine v1.1.2/go.mod h1:zKpXs1FWN/6mXasDQzfl7g0LrGFIOiA6cLs9eXKyaMY=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240806160748-b2d3a6a4b4d3 h1:oWb21rU9Q9XrRwXLB7jHc1rbp6EiiimZZv5MLxpu4T0=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240806160748-b2d3a6a4b4d3/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8=
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948 h1:kx6Ds3MlpiUHKj7syVnbp57++8WpuKPcR5yjLBjvLEA=
golang.org/x/exp v0.0.0-20240823005443-9b4947da3948/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240910204333-9e92970a1eb4 h1:2ET4PwUR2nlFyH11/NrFz+OHyYCrnI1Gz5diQ3ZRi8A=
golang.org/x/crypto/x509roots/fallback v0.0.0-20240910204333-9e92970a1eb4/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
golang.org/x/image v0.20.0 h1:7cVCUjQwfL18gyBJOmYvptfSHS8Fb3YUDtfLIZ7Nbpw=
golang.org/x/image v0.20.0/go.mod h1:0a88To4CYVBAHp5FXJm8o7QbUl37Vd85ply1vyD8auM=
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=

0 comments on commit d0b5fa2

Please sign in to comment.