source: frontend/node_modules/css-tree/lib/lexer/error.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.6 KB
Line 
1var createCustomError = require('../utils/createCustomError');
2var generate = require('../definition-syntax/generate');
3
4function fromMatchResult(matchResult) {
5 var tokens = matchResult.tokens;
6 var longestMatch = matchResult.longestMatch;
7 var node = longestMatch < tokens.length ? tokens[longestMatch].node : null;
8 var mismatchOffset = -1;
9 var entries = 0;
10 var css = '';
11
12 for (var i = 0; i < tokens.length; i++) {
13 if (i === longestMatch) {
14 mismatchOffset = css.length;
15 }
16
17 if (node !== null && tokens[i].node === node) {
18 if (i <= longestMatch) {
19 entries++;
20 } else {
21 entries = 0;
22 }
23 }
24
25 css += tokens[i].value;
26 }
27
28 return {
29 node: node,
30 css: css,
31 mismatchOffset: mismatchOffset === -1 ? css.length : mismatchOffset,
32 last: node === null || entries > 1
33 };
34}
35
36function getLocation(node, point) {
37 var loc = node && node.loc && node.loc[point];
38
39 if (loc) {
40 return {
41 offset: loc.offset,
42 line: loc.line,
43 column: loc.column
44 };
45 }
46
47 return null;
48}
49
50var SyntaxReferenceError = function(type, referenceName) {
51 var error = createCustomError(
52 'SyntaxReferenceError',
53 type + (referenceName ? ' `' + referenceName + '`' : '')
54 );
55
56 error.reference = referenceName;
57
58 return error;
59};
60
61var MatchError = function(message, syntax, node, matchResult) {
62 var error = createCustomError('SyntaxMatchError', message);
63 var details = fromMatchResult(matchResult);
64 var mismatchOffset = details.mismatchOffset || 0;
65 var badNode = details.node || node;
66 var end = getLocation(badNode, 'end');
67 var start = details.last ? end : getLocation(badNode, 'start');
68 var css = details.css;
69
70 error.rawMessage = message;
71 error.syntax = syntax ? generate(syntax) : '<generic>';
72 error.css = css;
73 error.mismatchOffset = mismatchOffset;
74 error.loc = {
75 source: (badNode && badNode.loc && badNode.loc.source) || '<unknown>',
76 start: start,
77 end: end
78 };
79 error.line = start ? start.line : undefined;
80 error.column = start ? start.column : undefined;
81 error.offset = start ? start.offset : undefined;
82 error.message = message + '\n' +
83 ' syntax: ' + error.syntax + '\n' +
84 ' value: ' + (error.css || '<empty string>') + '\n' +
85 ' --------' + new Array(error.mismatchOffset + 1).join('-') + '^';
86
87 return error;
88};
89
90module.exports = {
91 SyntaxReferenceError: SyntaxReferenceError,
92 MatchError: MatchError
93};
Note: See TracBrowser for help on using the repository browser.