Вход Регистрация
Файл: error-kitty/lib/error-kitty/stacks/stack.js
Строк: 80
<?php
module
.exports Stack;

var 
StackFrame = require("./frame");
var 
stacks     = require("./index");
var 
_          = require("lodash");

function 
Stack(errframes) {
  
this.err err;
  
this.frames err.frames this.parseFrames(errframes);
}

Stack.prototype.parseFrames = function (errframes) {
  var 
manipulateEvals err.manipulateEvals || [];

  
frames frames || [];
  if (
err.frameOffsetframes frames.slice(err.frameOffset);
  
frames frames.slice(015);

  
this.shareWithFrame(frames[0]);

  
frames frames.map(function (frame) {
    var 
stackFrame = new StackFrame(frame);

    if (
frame.isEval()) {
      var 
manipulateFrame manipulateEvals.shift();
      if (
manipulateFramemanipulateFrame(errstackFrame);
    }

    return 
stackFrame;
  });

  return 
frames;
};

Stack.prototype.shareWithFrame = function (frame) {
  if (!
frame) return;

  var 
err this.err;

  
_.each(["file""locals""filename""colNumber""lineNumber",
          
"functionName""ignoreMap"], function (key) {
    var 
val err[key];
    if (
val == nullval frame[key];
    
err[key] = frame[key] = val;
  });
};

Stack.prototype.buildAssertionMessage = function () {
  var 
err this.err;

  var 
replacer = function (keyvalue) {
    if (
value === undefined) {
      return 
"" value;
    }
    if (
typeof value === "number" && (isNaN(value) || !isFinite(value))) {
      return 
value.toString();
    }
    if (
typeof value === "function" || value instanceof RegExp) {
      return 
value.toString();
    }
    return 
value;
  };

  var 
truncate = function (sn) {
    if (
typeof s == "string") {
      return 
s.length s.slice(0n);
    } else {
      return 
s;
    }
  };

  return [
    
truncate(JSON.stringify(err.actualreplacer), 128),
    
err.operator,
    
truncate(JSON.stringify(err.expectedreplacer), 128)
  ].
join(" ");
};

Stack.prototype.buildMessage = function () {
  var 
err this.err;
  var 
msg err.message;

  if (
err.name === "AssertionError") {
    
msg this.buildAssertionMessage();
  }

  
msg JSON.stringify(msg);

  return 
msg;
};

Stack.prototype.toString = function () {
  var 
frames this.frames.slice();
  var 
first  frames.shift();
  var 
err    this.err;

  var 
result = [
    
err.name ":",
    
this.buildMessage(),
    
first && first.buildMessage()
  ].
join(" ");

  if (
first && first.fileExists()) {
    
result += stacks(first.getHighlightedFile(), first.lineNumber,
                     
first.colNumber);
  }

  
_.each(frames, function (frame) {
    
result += "n " frame.buildMessage();
  });

  return 
result;
};
?>
Онлайн: 1
Реклама