diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/postcss-message-helpers/index.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/postcss-message-helpers/index.js')
| -rwxr-xr-x | node_modules/postcss-message-helpers/index.js | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/node_modules/postcss-message-helpers/index.js b/node_modules/postcss-message-helpers/index.js new file mode 100755 index 00000000..e57cc29f --- /dev/null +++ b/node_modules/postcss-message-helpers/index.js @@ -0,0 +1,81 @@ +/** + * Constants + */ +var SPLITTER = "\n at " + +/** + * PostCSS helpers + */ +module.exports = { + sourceString: sourceString, + message: formatMessage, + try: tryCatch +} + +/** + * Returns GNU style source + * + * @param {Object} source + */ +function sourceString(source) { + var message = "<css input>" + if (source) { + if (source.input && source.input.file) { + message = source.input.file + } + if (source.start) { + message += ":" + source.start.line + ":" + source.start.column + } + } + + return message +} + +/** + * Returns a GNU style message + * + * @param {String} message + * @param {Object} source a PostCSS source object + * @return {String} + */ +function formatMessage(message, source) { + return sourceString(source) + ": " + message +} + +/** + * Do something and throw an error with enhanced exception (from given source) + * + * @param {Function} fn [description] + * @param {[type]} source [description] + */ +function tryCatch(fn, source) { + try { + return fn() + } + catch (err) { + err.originalMessage = err.message + err.message = formatMessage(err.message, source) + + // if source seems interesting, enhance error + if (typeof source === "object") { + // add a stack item if something interesting available + if ((source.input && source.input.file) || source.start) { + var stack = err.stack.split(SPLITTER) + var firstStackItem = stack.shift() + stack.unshift(sourceString(source)) + stack.unshift(firstStackItem) + err.stack = stack.join(SPLITTER) + } + + if (source.input && source.input.file) { + err.fileName = source.input.file + } + if (source.start) { + err.lineNumber = source.start.line + err.columnNumber = source.start.column + } + } + + throw err + } +} |
