Comments (4)
I've been messing around a bit trying to understand the code, so i tried messing around with the type conversion default.
This is basically a proof of concept, would something like this work for you? if so i'll make a pr for all built in conversion types including tests.
If needed i can also add an error type ErrWrongObjectType or something like that when the default isn't an Int (for this specific case)
func builtinInt(args ...Object) (Object, error) {
argsLen := len(args)
if !(argsLen == 1 || argsLen == 2) {
return nil, ErrWrongNumArguments
}
switch arg := args[0].(type) {
case *Int:
return arg, nil
case *Float:
return &Int{Value: int64(arg.Value)}, nil
case *Char:
return &Int{Value: int64(arg.Value)}, nil
case *Bool:
if arg.Value {
return &Int{Value: 1}, nil
}
return &Int{Value: 0}, nil
case *String:
n, err := strconv.ParseInt(arg.Value, 10, 64)
if err == nil {
return &Int{Value: n}, nil
}
}
if argsLen == 2 {
switch arg := args[1].(type) {
case *Int:
return arg, nil
}
}
return UndefinedValue, nil
}
from tengo.
Yeah, I'd appreciate if you could create a PR for this! 😄 Btw, I just merged a big PR that has some code changes around these type conversions. But it shouldn't be too different.
from tengo.
I also added a documentation on types: https://github.com/d5/tengo/wiki/Variable-Types. Just FYI.
from tengo.
I will create a PR shortly, should be able to adjust it to the changes you made in the latest PR in like an an hour or so
from tengo.
Related Issues (20)
- a map with 10000 keys: panic: runtime error: index out of range [2048] with length 2048 HOT 4
- support context.Context in ToInterface and FromInterface
- provide compiled.CloneWithoutGlobals() or make compiled's fields accessible
- Is there a example on the use of `Regexp`
- VSCode Extention Support & Monaco-editor language support, EBNF is wanted.
- Does Tengo Playground support code format or code compress?
- [Performance Improvement] Using pool to avoid stack and frames memory allocation
- Any plan to add settrace() functionality to VM?
- Changing Owners? HOT 2
- Isolated VM possible ? HOT 2
- Ability to call a CompiledFunc from a UserFunc @kcsampson this functionality is now available in the `tengo2` branch. The `Callable` interface and `CallableFunc` signatures have changed, so you might need to update your code to support that, but you will be able to call back to tengo code from go code provided you make the call from the same goroutine the VM is running on. HOT 1
- Support for centralized configuration and shared variables in separate Tengo scripts HOT 1
- FromInterface support HOT 1
- bug:invalid jump position:0 HOT 13
- binaryop and equals diff HOT 1
- Lack of means to obtain vm context
- UX improvement: conditionalize the installation of rescue handler...
- [question] How can I register native type into script? HOT 1
- FYI: wasm-compiled tengo playground running in a browser HOT 2
- Allow removal of specific attributes from builtin module
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tengo.