github.com/mem/u-root@v2.0.1-0.20181004165302-9b18b4636a33+incompatible/cmds/elvish/eval/builtin_fn_pred.go (about) 1 package eval 2 3 import "github.com/u-root/u-root/cmds/elvish/eval/vals" 4 5 // Basic predicate commands. 6 7 func init() { 8 addBuiltinFns(map[string]interface{}{ 9 "bool": vals.Bool, 10 "not": not, 11 "is": is, 12 "eq": eq, 13 "not-eq": notEq, 14 }) 15 } 16 17 func not(v interface{}) bool { 18 return !vals.Bool(v) 19 } 20 21 func is(args ...interface{}) bool { 22 for i := 0; i+1 < len(args); i++ { 23 if args[i] != args[i+1] { 24 return false 25 } 26 } 27 return true 28 } 29 30 func eq(args ...interface{}) bool { 31 for i := 0; i+1 < len(args); i++ { 32 if !vals.Equal(args[i], args[i+1]) { 33 return false 34 } 35 } 36 return true 37 } 38 39 func notEq(args ...interface{}) bool { 40 for i := 0; i+1 < len(args); i++ { 41 if vals.Equal(args[i], args[i+1]) { 42 return false 43 } 44 } 45 return true 46 }