Вход Регистрация
Файл: framework/thirdparty/jasmine/src/PrettyPrinter.js
Строк: 151
<?php
/**
 * Base class for pretty printing for expectation results.
 */
jasmine.PrettyPrinter = function() {
  
this.ppNestLevel_ 0;
};

/**
 * Formats a value in a nice, human-readable string.
 *
 * @param value
 */
jasmine.PrettyPrinter.prototype.format = function(value) {
  if (
this.ppNestLevel_ 40) {
    throw new 
Error('jasmine.PrettyPrinter: format() nested too deeply!');
  }

  
this.ppNestLevel_++;
  try {
    if (
value === jasmine.undefined) {
      
this.emitScalar('undefined');
    } else if (
value === null) {
      
this.emitScalar('null');
    } else if (
value === jasmine.getGlobal()) {
      
this.emitScalar('<global>');
    } else if (
value instanceof jasmine.Matchers.Any) {
      
this.emitScalar(value.toString());
    } else if (
typeof value === 'string') {
      
this.emitString(value);
    } else if (
jasmine.isSpy(value)) {
      
this.emitScalar("spy on " value.identity);
    } else if (
value instanceof RegExp) {
      
this.emitScalar(value.toString());
    } else if (
typeof value === 'function') {
      
this.emitScalar('Function');
    } else if (
typeof value.nodeType === 'number') {
      
this.emitScalar('HTMLNode');
    } else if (
value instanceof Date) {
      
this.emitScalar('Date(' value ')');
    } else if (
value.__Jasmine_been_here_before__) {
      
this.emitScalar('<circular reference: ' + (jasmine.isArray_(value) ? 'Array' 'Object') + '>');
    } else if (
jasmine.isArray_(value) || typeof value == 'object') {
      
value.__Jasmine_been_here_before__ true;
      if (
jasmine.isArray_(value)) {
        
this.emitArray(value);
      } else {
        
this.emitObject(value);
      }
      
delete value.__Jasmine_been_here_before__;
    } else {
      
this.emitScalar(value.toString());
    }
  } finally {
    
this.ppNestLevel_--;
  }
};

jasmine.PrettyPrinter.prototype.iterateObject = function(objfn) {
  for (var 
property in obj) {
    if (
property == '__Jasmine_been_here_before__') continue;
    
fn(propertyobj.__lookupGetter__ ? (obj.__lookupGetter__(property) != null) : false);
  }
};

jasmine.PrettyPrinter.prototype.emitArray jasmine.unimplementedMethod_;
jasmine.PrettyPrinter.prototype.emitObject jasmine.unimplementedMethod_;
jasmine.PrettyPrinter.prototype.emitScalar jasmine.unimplementedMethod_;
jasmine.PrettyPrinter.prototype.emitString jasmine.unimplementedMethod_;

jasmine.StringPrettyPrinter = function() {
  
jasmine.PrettyPrinter.call(this);

  
this.string '';
};
jasmine.util.inherit(jasmine.StringPrettyPrinterjasmine.PrettyPrinter);

jasmine.StringPrettyPrinter.prototype.emitScalar = function(value) {
  
this.append(value);
};

jasmine.StringPrettyPrinter.prototype.emitString = function(value) {
  
this.append("'" value "'");
};

jasmine.StringPrettyPrinter.prototype.emitArray = function(array) {
  
this.append('[ ');
  for (var 
0< array.lengthi++) {
    if (
0) {
      
this.append(', ');
    }
    
this.format(array[i]);
  }
  
this.append(' ]');
};

jasmine.StringPrettyPrinter.prototype.emitObject = function(obj) {
  var 
self this;
  
this.append('{ ');
  var 
first true;

  
this.iterateObject(obj, function(propertyisGetter) {
    if (
first) {
      
first false;
    } else {
      
self.append(', ');
    }

    
self.append(property);
    
self.append(' : ');
    if (
isGetter) {
      
self.append('<getter>');
    } else {
      
self.format(obj[property]);
    }
  });

  
this.append(' }');
};

jasmine.StringPrettyPrinter.prototype.append = function(value) {
  
this.string += value;
};
?>
Онлайн: 0
Реклама