| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 'use strict'let pico = require('picocolors')let tokenizer = require('./tokenize')let Inputfunction registerInput(dependant) {  Input = dependant}const HIGHLIGHT_THEME = {  'brackets': pico.cyan,  'at-word': pico.cyan,  'comment': pico.gray,  'string': pico.green,  'class': pico.yellow,  'hash': pico.magenta,  'call': pico.cyan,  '(': pico.cyan,  ')': pico.cyan,  '{': pico.yellow,  '}': pico.yellow,  '[': pico.yellow,  ']': pico.yellow,  ':': pico.yellow,  ';': pico.yellow}function getTokenType([type, value], processor) {  if (type === 'word') {    if (value[0] === '.') {      return 'class'    }    if (value[0] === '#') {      return 'hash'    }  }  if (!processor.endOfFile()) {    let next = processor.nextToken()    processor.back(next)    if (next[0] === 'brackets' || next[0] === '(') return 'call'  }  return type}function terminalHighlight(css) {  let processor = tokenizer(new Input(css), { ignoreErrors: true })  let result = ''  while (!processor.endOfFile()) {    let token = processor.nextToken()    let color = HIGHLIGHT_THEME[getTokenType(token, processor)]    if (color) {      result += token[1]        .split(/\r?\n/)        .map(i => color(i))        .join('\n')    } else {      result += token[1]    }  }  return result}terminalHighlight.registerInput = registerInputmodule.exports = terminalHighlight
 |