| 6396 | } |
| 6397 | |
| 6398 | function errorHTML(e, rootHref) { |
| 6399 | var id = 'less-error-message:' + extractId(rootHref || ""); |
| 6400 | var template = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>'; |
| 6401 | var elem = document.createElement('div'), timer, content, errors = []; |
| 6402 | var filename = e.filename || rootHref; |
| 6403 | var filenameNoPath = filename.match(/([^\/]+(\?.*)?)$/)[1]; |
| 6404 | |
| 6405 | elem.id = id; |
| 6406 | elem.className = "less-error-message"; |
| 6407 | |
| 6408 | content = '<h3>' + (e.type || "Syntax") + "Error: " + (e.message || 'There is an error in your .less file') + |
| 6409 | '</h3>' + '<p>in <a href="' + filename + '">' + filenameNoPath + "</a> "; |
| 6410 | |
| 6411 | var errorline = function (e, i, classname) { |
| 6412 | if (e.extract[i] !== undefined) { |
| 6413 | errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1)) |
| 6414 | .replace(/\{class\}/, classname) |
| 6415 | .replace(/\{content\}/, e.extract[i])); |
| 6416 | } |
| 6417 | }; |
| 6418 | |
| 6419 | if (e.extract) { |
| 6420 | errorline(e, 0, ''); |
| 6421 | errorline(e, 1, 'line'); |
| 6422 | errorline(e, 2, ''); |
| 6423 | content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':</p>' + |
| 6424 | '<ul>' + errors.join('') + '</ul>'; |
| 6425 | } else if (e.stack) { |
| 6426 | content += '<br/>' + e.stack.split('\n').slice(1).join('<br/>'); |
| 6427 | } |
| 6428 | elem.innerHTML = content; |
| 6429 | |
| 6430 | // CSS for error messages |
| 6431 | createCSS([ |
| 6432 | '.less-error-message ul, .less-error-message li {', |
| 6433 | 'list-style-type: none;', |
| 6434 | 'margin-right: 15px;', |
| 6435 | 'padding: 4px 0;', |
| 6436 | 'margin: 0;', |
| 6437 | '}', |
| 6438 | '.less-error-message label {', |
| 6439 | 'font-size: 12px;', |
| 6440 | 'margin-right: 15px;', |
| 6441 | 'padding: 4px 0;', |
| 6442 | 'color: #cc7777;', |
| 6443 | '}', |
| 6444 | '.less-error-message pre {', |
| 6445 | 'color: #dd6666;', |
| 6446 | 'padding: 4px 0;', |
| 6447 | 'margin: 0;', |
| 6448 | 'display: inline-block;', |
| 6449 | '}', |
| 6450 | '.less-error-message pre.line {', |
| 6451 | 'color: #ff0000;', |
| 6452 | '}', |
| 6453 | '.less-error-message h3 {', |
| 6454 | 'font-size: 20px;', |
| 6455 | 'font-weight: bold;', |