Exemplo n.º 1
0
func VariableValue(a, b string, data *facts.FactCollection) (interface{}, interface{}) {
	va, oka := data.Get(a)
	vb, okb := data.Get(b)
	if oka && okb {
		return va, vb
	} else if oka && !okb {
		{
			na, ok := va.(int)
			if ok {
				nb, err := strconv.Atoi(b)
				if err != nil {
					panic(err)
				}
				return na, nb
			}
		}
		{
			na, ok := va.(float64)
			if ok {
				nb, err := strconv.ParseFloat(b, 64)
				if err != nil {
					panic(err)
				}
				return na, nb
			}
		}
		{
			na, ok := va.(string)
			if ok {
				return na, b
			}
		}
	} else if !oka && okb {
		{
			nb, ok := vb.(int)
			if ok {
				na, err := strconv.Atoi(a)
				if err != nil {
					panic(err)
				}
				return na, nb
			}
		}
		{
			nb, ok := vb.(float64)
			if ok {
				na, err := strconv.ParseFloat(a, 64)
				if err != nil {
					panic(err)
				}
				return na, nb
			}
		}
		{
			nb, ok := vb.(string)
			if ok {
				return a, nb
			}
		}
	} else {
		{
			na, err_na := strconv.Atoi(a)
			nb, err_nb := strconv.Atoi(b)

			if err_na == nil && err_nb == nil {
				return na, nb
			}
		}
		{
			na, err_na := strconv.ParseFloat(a, 64)
			nb, err_nb := strconv.ParseFloat(b, 64)

			if err_na == nil && err_nb == nil {
				return na, nb
			}
		}
	}
	return a, b
}