| /*! |
| * Chai - message composition utility |
| * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com> |
| * MIT Licensed |
| */ |
| |
| /*! |
| * Module dependencies |
| */ |
| |
| var flag = require('./flag') |
| , getActual = require('./getActual') |
| , objDisplay = require('./objDisplay'); |
| |
| /** |
| * ### .getMessage(object, message, negateMessage) |
| * |
| * Construct the error message based on flags |
| * and template tags. Template tags will return |
| * a stringified inspection of the object referenced. |
| * |
| * Message template tags: |
| * - `#{this}` current asserted object |
| * - `#{act}` actual value |
| * - `#{exp}` expected value |
| * |
| * @param {Object} object (constructed Assertion) |
| * @param {Arguments} chai.Assertion.prototype.assert arguments |
| * @namespace Utils |
| * @name getMessage |
| * @api public |
| */ |
| |
| module.exports = function getMessage(obj, args) { |
| var negate = flag(obj, 'negate') |
| , val = flag(obj, 'object') |
| , expected = args[3] |
| , actual = getActual(obj, args) |
| , msg = negate ? args[2] : args[1] |
| , flagMsg = flag(obj, 'message'); |
| |
| if(typeof msg === "function") msg = msg(); |
| msg = msg || ''; |
| msg = msg |
| .replace(/#\{this\}/g, function () { return objDisplay(val); }) |
| .replace(/#\{act\}/g, function () { return objDisplay(actual); }) |
| .replace(/#\{exp\}/g, function () { return objDisplay(expected); }); |
| |
| return flagMsg ? flagMsg + ': ' + msg : msg; |
| }; |