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  }