当前位置: 首页>>代码示例>>Golang>>正文


Golang Filter.Value方法代码示例

本文整理汇总了Golang中github.com/eaciit/dbox.Filter.Value方法的典型用法代码示例。如果您正苦于以下问题:Golang Filter.Value方法的具体用法?Golang Filter.Value怎么用?Golang Filter.Value使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/eaciit/dbox.Filter的用法示例。


在下文中一共展示了Filter.Value方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: ReadVariable

func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
	f.Field = strings.ToLower(f.Field)
	if (f.Op == "$and" || f.Op == "$or") && strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
		fs := f.Value.([]*dbox.Filter)
		for i, ff := range fs {
			bf := ReadVariable(ff, in)
			fs[i] = bf
		}
		f.Value = fs
	} else {
		if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
			fSlice := f.Value.([]interface{})
			// nilai fSlice : [@name1 @name2]
			for i := 0; i < len(fSlice); i++ {
				// nilai fSlice [i] : @name1
				if len(cast.ToString(f.Value)) > 0 && string(cast.ToString(fSlice[i])[0]) == "@" {
					fSlice[i] = in.Get(cast.ToString(fSlice[i]), "")
				}
			}
			f.Value = fSlice
		} else if len(cast.ToString(f.Value)) > 0 && string(cast.ToString(f.Value)[0]) == "@" {
			f.Value = in.Get(cast.ToString(f.Value), "")
		}
	}
	return f
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:26,代码来源:xlsx_query.go

示例2: ReadVariable

func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
	f.Field = strings.ToLower(f.Field)
	if (f.Op == "$and" || f.Op == "$or") &&
		strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
		fs := f.Value.([]*dbox.Filter)
		/* nilai fs :  [0xc082059590 0xc0820595c0]*/
		for i, ff := range fs {
			/* nilai ff[0] : &{umur $gt @age} && ff[1] : &{name $eq @nama}*/
			bf := ReadVariable(ff, in)
			/* nilai bf[0] :  &{umur $gt 25} && bf[1] : &{name $eq Kane}*/
			fs[i] = bf
		}
		f.Value = fs
		return f
	} else {
		if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
			if strings.Contains(reflect.TypeOf(f.Value).String(), "interface") {
				fSlice := f.Value.([]interface{})
				/*nilai fSlice : [@name1 @name2]*/
				for i := 0; i < len(fSlice); i++ {
					/* nilai fSlice [i] : @name1*/
					if string(cast.ToString(fSlice[i])[0]) == "@" {
						for key, val := range in {
							if cast.ToString(fSlice[i]) == key {
								fSlice[i] = val
							}
						}
					}
				}
				f.Value = fSlice
			} else if strings.Contains(reflect.TypeOf(f.Value).String(), "string") {
				fSlice := f.Value.([]string)
				for i := 0; i < len(fSlice); i++ {
					if string(fSlice[i][0]) == "@" {
						for key, val := range in {
							if fSlice[i] == key {
								fSlice[i] = val.(string)
							}
						}
					}
				}
				f.Value = fSlice
			}
			return f
		} else {
			if string(cast.ToString(f.Value)[0]) == "@" {
				for key, val := range in {
					if cast.ToString(f.Value) == key {
						f.Value = val
					}
				}
			}
			return f
		}
	}
	return f
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:57,代码来源:query.go

示例3: CheckFilter

func (fb *FilterBuilder) CheckFilter(f *dbox.Filter, p M) *dbox.Filter {
	if f.Op == "$or" || f.Op == "$and" {
		fs := f.Value.([]*dbox.Filter)
		for i, ff := range fs {
			bf := fb.CheckFilter(ff, p)
			fs[i] = bf
		}
		return f
	} else if f.Op == "$contains" {
		// Println(f.Value)
		for i, v := range f.Value.([]string) {
			if p != nil {
				f.Value.([]string)[i] = p.Get(v).(string)
			} else {
				f.Value.([]string)[i] = v
			}

		}
		return f
	} else {
		if !IsSlice(f.Value) {
			if strings.ToLower(Kind(f.Value).String()) == "string" {
				foundSubstring := strings.Index(f.Value.(string), "@")
				if foundSubstring != 0 {
					return f
				}

				if strings.Contains(f.Value.(string), "@") {
					f.Value = p.Get(f.Value.(string))
					return f
				}
			}
		} else {
			for i, v := range f.Value.([]interface{}) {
				foundSubstring := strings.Index(v.(string), "@")
				if foundSubstring != 0 {
					return f
				}

				switch Kind(v) {
				case reflect.String:
					stringValue := p.Get(v.(string))
					f.Value.([]interface{})[i] = stringValue
				case reflect.Int:
					stringValue := ToInt(p.Get(v.(string)), ".")
					f.Value.([]interface{})[i] = stringValue
				case reflect.Bool:
					f.Value.([]interface{})[i] = p.Get(v.(string)).(bool)
				}
			}
			return f
		}
	}
	return f
}
开发者ID:rinosukmandityo,项目名称:dbox,代码行数:55,代码来源:json_filter.go

示例4: ReadVariable

func ReadVariable(f *dbox.Filter, in toolkit.M) *dbox.Filter {
	if (f.Op == "$and" || f.Op == "$or") &&
		strings.Contains(reflect.TypeOf(f.Value).String(), "dbox.Filter") {
		fs := f.Value.([]*dbox.Filter)
		// nilai fs :  [0xc082059590 0xc0820595c0]
		for i, ff := range fs {
			// nilai ff[0] : &{umur $gt @age} && ff[1] : &{name $eq @nama}
			bf := ReadVariable(ff, in)
			// nilai bf[0] :  &{umur $gt 25} && bf[1] : &{name $eq Kane}
			fs[i] = bf
		}
		f.Value = fs
		return f
	} else {
		if reflect.TypeOf(f.Value).Kind() == reflect.Slice {
			fSlice := f.Value.([]interface{})
			// nilai fSlice : [@name1 @name2]
			for i := 0; i < len(fSlice); i++ {
				// nilai fSlice [i] : @name1
				if string(cast.ToString(fSlice[i])[0]) == "@" {
					for key, val := range in {
						if strings.Replace(cast.ToString(fSlice[i]), "@", "", 1) == key {
							fSlice[i] = val
						}
					}
				}
			}
			f.Value = fSlice
			return f
		} else {
			if string(cast.ToString(f.Value)[0]) == "@" {
				for key, val := range in {
					if strings.Replace(cast.ToString(f.Value), "@", "", 1) == key {
						f.Value = val
					}
				}
			}
			return f
		}
	}
	return f
}
开发者ID:Budianto55,项目名称:dbox,代码行数:42,代码来源:rdbms_query.go


注:本文中的github.com/eaciit/dbox.Filter.Value方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。