module Enumerable

def all?(&block)

def all?(&block)
  %x{
    var result = true, proc;
    if (block !== nil) {
      proc = function(obj) {
        var value;
        if ((value = block(obj)) === __breaker) {
          return __breaker.$v;
        }
        if (value === false || value === nil) {
          result = false;
          __breaker.$v = nil;
          return __breaker;
        }
      }
    }
    else {
      proc = function(obj) {
        if (obj === false || obj === nil) {
          result = false;
          __breaker.$v = nil;
          return __breaker;
        }
      }
    }
    #{self}.$each(proc);
    return result;
  }
end