mirror of
https://github.com/kataras/iris.git
synced 2025-01-24 19:21:03 +01:00
a95a02a16a
Former-commit-id: 826d7c370481b78afd9ba92f4ae8bef1fb85a567
75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
package ast
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
)
|
|
|
|
type ParamFuncArg interface{}
|
|
|
|
func ParamFuncArgInt64(a ParamFuncArg) (int64, bool) {
|
|
if v, ok := a.(int64); ok {
|
|
return v, false
|
|
}
|
|
return -1, false
|
|
}
|
|
|
|
func ParamFuncArgToInt64(a ParamFuncArg) (int64, error) {
|
|
switch a.(type) {
|
|
case int64:
|
|
return a.(int64), nil
|
|
case string:
|
|
return strconv.ParseInt(a.(string), 10, 64)
|
|
case int:
|
|
return int64(a.(int)), nil
|
|
default:
|
|
return -1, fmt.Errorf("unexpected function argument type: %q", a)
|
|
}
|
|
}
|
|
|
|
func ParamFuncArgInt(a ParamFuncArg) (int, bool) {
|
|
if v, ok := a.(int); ok {
|
|
return v, false
|
|
}
|
|
return -1, false
|
|
}
|
|
|
|
func ParamFuncArgToInt(a ParamFuncArg) (int, error) {
|
|
switch a.(type) {
|
|
case int:
|
|
return a.(int), nil
|
|
case string:
|
|
return strconv.Atoi(a.(string))
|
|
case int64:
|
|
return int(a.(int64)), nil
|
|
default:
|
|
return -1, fmt.Errorf("unexpected function argument type: %q", a)
|
|
}
|
|
}
|
|
|
|
func ParamFuncArgString(a ParamFuncArg) (string, bool) {
|
|
if v, ok := a.(string); ok {
|
|
return v, false
|
|
}
|
|
return "", false
|
|
}
|
|
|
|
func ParamFuncArgToString(a ParamFuncArg) (string, error) {
|
|
switch a.(type) {
|
|
case string:
|
|
return a.(string), nil
|
|
case int:
|
|
return strconv.Itoa(a.(int)), nil
|
|
case int64:
|
|
return strconv.FormatInt(a.(int64), 10), nil
|
|
default:
|
|
return "", fmt.Errorf("unexpected function argument type: %q", a)
|
|
}
|
|
}
|
|
|
|
// range(1,5)
|
|
type ParamFunc struct {
|
|
Name string // range
|
|
Args []ParamFuncArg // [1,5]
|
|
}
|