MCPcopy
hub / github.com/zxlie/FeHelper / highlightCSS

Function highlightCSS

apps/code-beautify/content-script.js:158–225  ·  view source on GitHub ↗
(code)

Source from the content-addressed store, hash-verified

156 };
157
158 let highlightCSS = (code) => {
159 let out = '';
160 let i = 0;
161 let len = code.length;
162 let inBlock = false;
163 while (i < len) {
164 let c = code[i];
165 if (c === '/' && code[i + 1] === '*') {
166 let end = code.indexOf('*/', i + 2);
167 end = end === -1 ? len : end + 2;
168 out += span('comment', code.substring(i, end));
169 i = end;
170 } else if (c === '"' || c === "'") {
171 let q = c, j = i + 1;
172 while (j < len && code[j] !== q) { if (code[j] === '\\') j++; j++; }
173 if (j < len) j++;
174 out += span('string', code.substring(i, j));
175 i = j;
176 } else if (c === '{') { inBlock = true; out += esc(c); i++; }
177 else if (c === '}') { inBlock = false; out += esc(c); i++; }
178 else if (c === '@') {
179 let j = i + 1;
180 while (j < len && /[a-zA-Z-]/.test(code[j])) j++;
181 out += span('keyword', code.substring(i, j));
182 i = j;
183 } else if (c === '#' && !inBlock) {
184 let j = i;
185 while (j < len && /[a-zA-Z0-9_#-]/.test(code[j])) j++;
186 out += span('selector-id', code.substring(i, j));
187 i = j;
188 } else if (c === '.' && !inBlock && /[a-zA-Z_-]/.test(code[i + 1] || '')) {
189 let j = i;
190 while (j < len && /[a-zA-Z0-9_.-]/.test(code[j])) j++;
191 out += span('selector-class', code.substring(i, j));
192 i = j;
193 } else if (c === ':' && !inBlock) {
194 let j = i + 1;
195 while (j < len && /[a-zA-Z0-9_(-]/.test(code[j])) j++;
196 out += span('selector-pseudo', code.substring(i, j));
197 i = j;
198 } else if (/[0-9]/.test(c) || (c === '.' && /[0-9]/.test(code[i + 1]))) {
199 let j = i;
200 while (j < len && /[0-9.]/.test(code[j])) j++;
201 while (j < len && /[a-zA-Z%]/.test(code[j])) j++;
202 out += span('number', code.substring(i, j));
203 i = j;
204 } else if (c === '#' && inBlock) {
205 let j = i + 1;
206 while (j < len && /[0-9a-fA-F]/.test(code[j])) j++;
207 out += span('number', code.substring(i, j));
208 i = j;
209 } else if (inBlock && /[a-zA-Z-]/.test(c)) {
210 let j = i;
211 while (j < len && /[a-zA-Z0-9-]/.test(code[j])) j++;
212 let word = code.substring(i, j);
213 if (CSS_PROPS.has(word)) out += span('attribute', word);
214 else out += esc(word);
215 i = j;

Callers 1

beautyFunction · 0.85

Calls 3

spanFunction · 0.85
escFunction · 0.85
hasMethod · 0.80

Tested by

no test coverage detected