本文整理汇总了Golang中github.com/araddon/qlbridge/value.Value类的典型用法代码示例。如果您正苦于以下问题:Golang Value类的具体用法?Golang Value怎么用?Golang Value使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Value类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: ToInt
// Convert to Integer: Best attempt at converting to integer
//
// toint("5") => 5
// toint("5.75") => 5
// toint("5,555") => 5555
// toint("$5") => 5
// toint("5,555.00") => 5555
//
func ToInt(ctx expr.EvalContext, item value.Value) (value.IntValue, bool) {
iv, ok := value.ToInt64(reflect.ValueOf(item.Value()))
if !ok {
return value.NewIntValue(0), false
}
return value.NewIntValue(iv), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:15,代码来源:builtins.go
示例2: NotFunc
// Not: urnary negation function
//
// eq(item,5)
func NotFunc(ctx expr.EvalContext, item value.Value) (value.BoolValue, bool) {
boolVal, ok := value.ToBool(item.Rv())
if ok {
return value.NewBoolValue(!boolVal), true
}
return value.BoolValueFalse, false
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:10,代码来源:builtins.go
示例3: ToNumber
// Convert to Number: Best attempt at converting to integer
//
// tonumber("5") => 5.0
// tonumber("5.75") => 5.75
// tonumber("5,555") => 5555
// tonumber("$5") => 5.00
// tonumber("5,555.00") => 5555
//
func ToNumber(ctx expr.EvalContext, item value.Value) (value.NumberValue, bool) {
fv, ok := value.ToFloat64(reflect.ValueOf(item.Value()))
if !ok {
return value.NewNumberValue(0), false
}
return value.NewNumberValue(fv), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:15,代码来源:builtins.go
示例4: Qs
// Extract host from a String (must be urlish), doesn't do much/any validation
func Qs(ctx expr.EvalContext, urlItem, keyItem value.Value) (value.StringValue, bool) {
val, ok := value.ToString(urlItem.Rv())
if !ok {
return value.EmptyStringValue, false
}
if val == "" {
return value.EmptyStringValue, false
}
urlstr := strings.ToLower(val)
if len(urlstr) < 8 {
return value.EmptyStringValue, false
}
keyVal, ok := value.ToString(keyItem.Rv())
if !ok {
return value.EmptyStringValue, false
}
if keyVal == "" {
return value.EmptyStringValue, false
}
if !strings.HasPrefix(urlstr, "http") {
urlstr = "http://" + urlstr
}
if urlParsed, err := url.Parse(urlstr); err == nil {
//u.Infof("url.parse: %#v", urlParsed)
qsval, ok := urlParsed.Query()[keyVal]
if !ok {
return value.EmptyStringValue, false
}
if len(qsval) > 0 {
return value.NewStringValue(qsval[0]), true
}
}
return value.EmptyStringValue, false
}
开发者ID:jmptrader,项目名称:qlbridge,代码行数:36,代码来源:builtins.go
示例5: CountFunc
// Count
func CountFunc(ctx EvalContext, val value.Value) (value.IntValue, bool) {
if val.Err() || val.Nil() {
return value.NewIntValue(0), false
}
//u.Infof("??? vals=[%v]", val.Value())
return value.NewIntValue(1), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:8,代码来源:nativefuncs.go
示例6: Eq
// Equal function? returns true if items are equal
//
// eq(item,5)
func Eq(ctx expr.EvalContext, itemA, itemB value.Value) (value.BoolValue, bool) {
//return BoolValue(itemA == itemB)
//rvb := value.CoerceTo(itemA.Rv(), itemB.Rv())
//u.Infof("Eq(): a:%T b:%T %v=%v?", itemA, itemB, itemA.Value(), rvb)
//u.Infof("Eq()2: %T %T", itemA.Rv(), rvb)
return value.NewBoolValue(reflect.DeepEqual(itemA.Value(), itemB.Value())), true
}
开发者ID:schmichael,项目名称:qlbridge,代码行数:10,代码来源:vm_test.go
示例7: Lower
// String lower function
// must be able to convert to string
//
func Lower(ctx expr.EvalContext, item value.Value) (value.StringValue, bool) {
val, ok := value.ToString(item.Rv())
if !ok {
return value.EmptyStringValue, false
}
return value.NewStringValue(strings.ToLower(val)), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:10,代码来源:builtins.go
示例8: LeFunc
// <= Less Than or Equal
// Must be able to convert items to Floats or else not ok
//
func LeFunc(ctx expr.EvalContext, lv, rv value.Value) (value.BoolValue, bool) {
left, _ := value.ToFloat64(lv.Rv())
right, _ := value.ToFloat64(rv.Rv())
if math.IsNaN(left) || math.IsNaN(right) {
return value.BoolValueFalse, false
}
return value.NewBoolValue(left <= right), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:11,代码来源:builtins.go
示例9: LtFunc
// < Less Than
// Must be able to convert items to Floats or else not ok
//
func LtFunc(ctx expr.EvalContext, lv, rv value.Value) (value.BoolValue, bool) {
left := value.ToFloat64(lv.Rv())
right := value.ToFloat64(rv.Rv())
if left == math.NaN() || right == math.NaN() {
return value.BoolValueFalse, false
}
return value.NewBoolValue(left < right), true
}
开发者ID:jmptrader,项目名称:qlbridge,代码行数:12,代码来源:builtins.go
示例10: EmailIsValid
// Example of a custom Function, that we are adding into the Expression VM
//
// select
// user_id AS theuserid, email, item_count * 2, reg_date
// FROM stdio
// WHERE email_is_valid(email)
func EmailIsValid(ctx expr.EvalContext, email value.Value) (value.BoolValue, bool) {
emailstr, ok := value.ToString(email.Rv())
if !ok || emailstr == "" {
return value.BoolValueFalse, true
}
if _, err := mail.ParseAddress(emailstr); err == nil {
return value.BoolValueTrue, true
}
return value.BoolValueFalse, true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:17,代码来源:main.go
示例11: ToDate
// todate
func ToDate(ctx expr.EvalContext, item value.Value) (value.TimeValue, bool) {
dateStr, ok := value.ToString(item.Rv())
if !ok {
return value.TimeZeroValue, false
}
//u.Infof("v=%v %v ", v, item.Rv())
if t, err := dateparse.ParseAny(dateStr); err == nil {
return value.NewTimeValue(t), true
}
return value.TimeZeroValue, false
}
开发者ID:jmptrader,项目名称:qlbridge,代码行数:14,代码来源:builtins.go
示例12: SqrtFunc
// Sqrt
//
// sqrt(4) => 2, true
// sqrt(9) => 3, true
// sqrt(not_number) => 0, false
//
func SqrtFunc(ctx expr.EvalContext, val value.Value) (value.NumberValue, bool) {
nv, ok := val.(value.NumericValue)
if !ok {
return value.NewNumberValue(math.NaN()), false
}
if val.Err() || val.Nil() {
return value.NewNumberValue(0), false
}
fv := nv.Float()
fv = math.Sqrt(fv)
//u.Infof("??? vals=[%v]", val.Value())
return value.NewNumberValue(fv), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:19,代码来源:builtins.go
示例13: ToInt
// Convert to Integer: Best attempt at converting to integer
//
// toint("5") => 5, true
// toint("5.75") => 5, true
// toint("5,555") => 5555, true
// toint("$5") => 5, true
// toint("5,555.00") => 5555, true
//
func ToInt(ctx expr.EvalContext, item value.Value) (value.IntValue, bool) {
switch itemT := item.(type) {
case value.TimeValue:
iv := itemT.Val().UnixNano() / 1e6 // Milliseconds
return value.NewIntValue(iv), true
}
iv, ok := value.ToInt64(reflect.ValueOf(item.Value()))
if !ok {
return value.NewIntValue(0), false
}
return value.NewIntValue(iv), true
}
开发者ID:allisonmorgan,项目名称:qlbridge,代码行数:21,代码来源:builtins.go
示例14: ToTimestamp
// totimestamp: convert to date, then to unix Seconds
//
func ToTimestamp(ctx expr.EvalContext, item value.Value) (value.IntValue, bool) {
dateStr, ok := value.ToString(item.Rv())
if !ok {
return value.NewIntValue(0), false
}
if t, err := dateparse.ParseAny(dateStr); err == nil {
//u.Infof("v=%v %v unix=%v", item, item.Rv(), t.Unix())
return value.NewIntValue(int64(t.Unix())), true
}
return value.NewIntValue(0), false
}
开发者ID:allisonmorgan,项目名称:qlbridge,代码行数:15,代码来源:builtins.go
示例15: ContainsFunc
// String contains
// Will first convert to string, so may get unexpected results
//
func ContainsFunc(ctx expr.EvalContext, lv, rv value.Value) (value.BoolValue, bool) {
left, leftOk := value.ToString(lv.Rv())
right, rightOk := value.ToString(rv.Rv())
if !leftOk || !rightOk {
return value.BoolValueFalse, false
}
//u.Infof("Contains(%v, %v)", left, right)
if left == "" || right == "" {
return value.BoolValueFalse, false
}
if strings.Contains(left, right) {
return value.BoolValueTrue, true
}
return value.BoolValueFalse, true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:18,代码来源:builtins.go
示例16: SplitFunc
// Split a string, accepts an optional with parameter
//
// split(item, ",")
//
func SplitFunc(ctx expr.EvalContext, input value.Value, splitByV value.StringValue) (value.StringsValue, bool) {
sv, ok := value.ToString(input.Rv())
splitBy, splitByOk := value.ToString(splitByV.Rv())
if !ok || !splitByOk {
return value.NewStringsValue(make([]string, 0)), false
}
if sv == "" {
return value.NewStringsValue(make([]string, 0)), false
}
if splitBy == "" {
return value.NewStringsValue(make([]string, 0)), false
}
vals := strings.Split(sv, splitBy)
return value.NewStringsValue(vals), true
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:20,代码来源:builtins.go
示例17: EmailNameFunc
// emailname a string, parses email
//
// emailname("Bob <[email protected]>") => Bob
//
func EmailNameFunc(ctx expr.EvalContext, item value.Value) (value.StringValue, bool) {
val, ok := value.ToString(item.Rv())
if !ok {
return value.EmptyStringValue, false
}
if val == "" {
return value.EmptyStringValue, false
}
if len(val) < 6 {
return value.EmptyStringValue, false
}
if em, err := mail.ParseAddress(val); err == nil {
return value.NewStringValue(em.Name), true
}
return value.EmptyStringValue, false
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:22,代码来源:builtins.go
示例18: Yy
func Yy(ctx expr.EvalContext, item value.Value) (value.IntValue, bool) {
//u.Info("yy: %T", item)
val, ok := value.ToString(item.Rv())
if !ok || val == "" {
return value.NewIntValue(0), false
}
//u.Infof("v=%v %v ", val, item.Rv())
if t, err := dateparse.ParseAny(val); err == nil {
yy := t.Year()
if yy >= 2000 {
yy = yy - 2000
} else if yy >= 1900 {
yy = yy - 1900
}
//u.Infof("Yy = %v yy = %v", item, yy)
return value.NewIntValue(int64(yy)), true
}
return value.NewIntValue(0), false
}
开发者ID:schmichael,项目名称:qlbridge,代码行数:21,代码来源:vm_test.go
示例19: EmailDomainFunc
// email a string, parses email
//
// email("Bob <[email protected]>") => [email protected]
//
func EmailDomainFunc(ctx expr.EvalContext, item value.Value) (value.StringValue, bool) {
val, ok := value.ToString(item.Rv())
if !ok {
return value.EmptyStringValue, false
}
if val == "" {
return value.EmptyStringValue, false
}
if len(val) < 6 {
return value.EmptyStringValue, false
}
if em, err := mail.ParseAddress(strings.ToLower(val)); err == nil {
parts := strings.SplitN(strings.ToLower(em.Address), "@", 2)
if len(parts) == 2 {
return value.NewStringValue(parts[1]), true
}
}
return value.EmptyStringValue, false
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:25,代码来源:builtins.go
示例20: UrlMinusQs
// urlminusqs removes a specific query parameter and its value from a url
//
// urlminusqs("http://www.lytics.io/?q1=google&q2=123", "q1") => "http://www.lytics.io/?q2=123", true
//
func UrlMinusQs(ctx expr.EvalContext, urlItem, keyItem value.Value) (value.StringValue, bool) {
val := ""
switch itemT := urlItem.(type) {
case value.StringValue:
val = itemT.Val()
case value.StringsValue:
if len(itemT.Val()) == 0 {
return value.EmptyStringValue, false
}
val = itemT.Val()[0]
}
if val == "" {
return value.EmptyStringValue, false
}
if !strings.HasPrefix(val, "http") {
val = "http://" + val
}
keyVal, ok := value.ToString(keyItem.Rv())
if !ok {
return value.EmptyStringValue, false
}
if keyVal == "" {
return value.EmptyStringValue, false
}
if up, err := url.Parse(val); err == nil {
qsval := up.Query()
_, ok := qsval[keyVal]
if !ok {
return value.NewStringValue(fmt.Sprintf("%s://%s%s?%s", up.Scheme, up.Host, up.Path, up.RawQuery)), true
}
qsval.Del(keyVal)
up.RawQuery = qsval.Encode()
if up.RawQuery == "" {
return value.NewStringValue(fmt.Sprintf("%s://%s%s", up.Scheme, up.Host, up.Path)), true
}
return value.NewStringValue(fmt.Sprintf("%s://%s%s?%s", up.Scheme, up.Host, up.Path, up.RawQuery)), true
}
return value.EmptyStringValue, false
}
开发者ID:kyledj,项目名称:qlbridge,代码行数:44,代码来源:builtins.go
注:本文中的github.com/araddon/qlbridge/value.Value类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论