Comparing version 4.2.0 to 5.0.0
299
index.js
@@ -1,298 +0,1 @@ | ||
'use strict' | ||
var emphasize = require('./lib/core.js') | ||
module.exports = emphasize | ||
emphasize.registerLanguage('1c', require('highlight.js/lib/languages/1c')) | ||
emphasize.registerLanguage('abnf', require('highlight.js/lib/languages/abnf')) | ||
emphasize.registerLanguage( | ||
'accesslog', | ||
require('highlight.js/lib/languages/accesslog') | ||
) | ||
emphasize.registerLanguage( | ||
'actionscript', | ||
require('highlight.js/lib/languages/actionscript') | ||
) | ||
emphasize.registerLanguage('ada', require('highlight.js/lib/languages/ada')) | ||
emphasize.registerLanguage( | ||
'angelscript', | ||
require('highlight.js/lib/languages/angelscript') | ||
) | ||
emphasize.registerLanguage('apache', require('highlight.js/lib/languages/apache')) | ||
emphasize.registerLanguage( | ||
'applescript', | ||
require('highlight.js/lib/languages/applescript') | ||
) | ||
emphasize.registerLanguage('arcade', require('highlight.js/lib/languages/arcade')) | ||
emphasize.registerLanguage('arduino', require('highlight.js/lib/languages/arduino')) | ||
emphasize.registerLanguage('armasm', require('highlight.js/lib/languages/armasm')) | ||
emphasize.registerLanguage('xml', require('highlight.js/lib/languages/xml')) | ||
emphasize.registerLanguage('asciidoc', require('highlight.js/lib/languages/asciidoc')) | ||
emphasize.registerLanguage('aspectj', require('highlight.js/lib/languages/aspectj')) | ||
emphasize.registerLanguage( | ||
'autohotkey', | ||
require('highlight.js/lib/languages/autohotkey') | ||
) | ||
emphasize.registerLanguage('autoit', require('highlight.js/lib/languages/autoit')) | ||
emphasize.registerLanguage('avrasm', require('highlight.js/lib/languages/avrasm')) | ||
emphasize.registerLanguage('awk', require('highlight.js/lib/languages/awk')) | ||
emphasize.registerLanguage('axapta', require('highlight.js/lib/languages/axapta')) | ||
emphasize.registerLanguage('bash', require('highlight.js/lib/languages/bash')) | ||
emphasize.registerLanguage('basic', require('highlight.js/lib/languages/basic')) | ||
emphasize.registerLanguage('bnf', require('highlight.js/lib/languages/bnf')) | ||
emphasize.registerLanguage( | ||
'brainfuck', | ||
require('highlight.js/lib/languages/brainfuck') | ||
) | ||
emphasize.registerLanguage('c-like', require('highlight.js/lib/languages/c-like')) | ||
emphasize.registerLanguage('c', require('highlight.js/lib/languages/c')) | ||
emphasize.registerLanguage('cal', require('highlight.js/lib/languages/cal')) | ||
emphasize.registerLanguage( | ||
'capnproto', | ||
require('highlight.js/lib/languages/capnproto') | ||
) | ||
emphasize.registerLanguage('ceylon', require('highlight.js/lib/languages/ceylon')) | ||
emphasize.registerLanguage('clean', require('highlight.js/lib/languages/clean')) | ||
emphasize.registerLanguage('clojure', require('highlight.js/lib/languages/clojure')) | ||
emphasize.registerLanguage( | ||
'clojure-repl', | ||
require('highlight.js/lib/languages/clojure-repl') | ||
) | ||
emphasize.registerLanguage('cmake', require('highlight.js/lib/languages/cmake')) | ||
emphasize.registerLanguage( | ||
'coffeescript', | ||
require('highlight.js/lib/languages/coffeescript') | ||
) | ||
emphasize.registerLanguage('coq', require('highlight.js/lib/languages/coq')) | ||
emphasize.registerLanguage('cos', require('highlight.js/lib/languages/cos')) | ||
emphasize.registerLanguage('cpp', require('highlight.js/lib/languages/cpp')) | ||
emphasize.registerLanguage('crmsh', require('highlight.js/lib/languages/crmsh')) | ||
emphasize.registerLanguage('crystal', require('highlight.js/lib/languages/crystal')) | ||
emphasize.registerLanguage('csharp', require('highlight.js/lib/languages/csharp')) | ||
emphasize.registerLanguage('csp', require('highlight.js/lib/languages/csp')) | ||
emphasize.registerLanguage('css', require('highlight.js/lib/languages/css')) | ||
emphasize.registerLanguage('d', require('highlight.js/lib/languages/d')) | ||
emphasize.registerLanguage('markdown', require('highlight.js/lib/languages/markdown')) | ||
emphasize.registerLanguage('dart', require('highlight.js/lib/languages/dart')) | ||
emphasize.registerLanguage('delphi', require('highlight.js/lib/languages/delphi')) | ||
emphasize.registerLanguage('diff', require('highlight.js/lib/languages/diff')) | ||
emphasize.registerLanguage('django', require('highlight.js/lib/languages/django')) | ||
emphasize.registerLanguage('dns', require('highlight.js/lib/languages/dns')) | ||
emphasize.registerLanguage( | ||
'dockerfile', | ||
require('highlight.js/lib/languages/dockerfile') | ||
) | ||
emphasize.registerLanguage('dos', require('highlight.js/lib/languages/dos')) | ||
emphasize.registerLanguage('dsconfig', require('highlight.js/lib/languages/dsconfig')) | ||
emphasize.registerLanguage('dts', require('highlight.js/lib/languages/dts')) | ||
emphasize.registerLanguage('dust', require('highlight.js/lib/languages/dust')) | ||
emphasize.registerLanguage('ebnf', require('highlight.js/lib/languages/ebnf')) | ||
emphasize.registerLanguage('elixir', require('highlight.js/lib/languages/elixir')) | ||
emphasize.registerLanguage('elm', require('highlight.js/lib/languages/elm')) | ||
emphasize.registerLanguage('ruby', require('highlight.js/lib/languages/ruby')) | ||
emphasize.registerLanguage('erb', require('highlight.js/lib/languages/erb')) | ||
emphasize.registerLanguage( | ||
'erlang-repl', | ||
require('highlight.js/lib/languages/erlang-repl') | ||
) | ||
emphasize.registerLanguage('erlang', require('highlight.js/lib/languages/erlang')) | ||
emphasize.registerLanguage('excel', require('highlight.js/lib/languages/excel')) | ||
emphasize.registerLanguage('fix', require('highlight.js/lib/languages/fix')) | ||
emphasize.registerLanguage('flix', require('highlight.js/lib/languages/flix')) | ||
emphasize.registerLanguage('fortran', require('highlight.js/lib/languages/fortran')) | ||
emphasize.registerLanguage('fsharp', require('highlight.js/lib/languages/fsharp')) | ||
emphasize.registerLanguage('gams', require('highlight.js/lib/languages/gams')) | ||
emphasize.registerLanguage('gauss', require('highlight.js/lib/languages/gauss')) | ||
emphasize.registerLanguage('gcode', require('highlight.js/lib/languages/gcode')) | ||
emphasize.registerLanguage('gherkin', require('highlight.js/lib/languages/gherkin')) | ||
emphasize.registerLanguage('glsl', require('highlight.js/lib/languages/glsl')) | ||
emphasize.registerLanguage('gml', require('highlight.js/lib/languages/gml')) | ||
emphasize.registerLanguage('go', require('highlight.js/lib/languages/go')) | ||
emphasize.registerLanguage('golo', require('highlight.js/lib/languages/golo')) | ||
emphasize.registerLanguage('gradle', require('highlight.js/lib/languages/gradle')) | ||
emphasize.registerLanguage('groovy', require('highlight.js/lib/languages/groovy')) | ||
emphasize.registerLanguage('haml', require('highlight.js/lib/languages/haml')) | ||
emphasize.registerLanguage( | ||
'handlebars', | ||
require('highlight.js/lib/languages/handlebars') | ||
) | ||
emphasize.registerLanguage('haskell', require('highlight.js/lib/languages/haskell')) | ||
emphasize.registerLanguage('haxe', require('highlight.js/lib/languages/haxe')) | ||
emphasize.registerLanguage('hsp', require('highlight.js/lib/languages/hsp')) | ||
emphasize.registerLanguage('htmlbars', require('highlight.js/lib/languages/htmlbars')) | ||
emphasize.registerLanguage('http', require('highlight.js/lib/languages/http')) | ||
emphasize.registerLanguage('hy', require('highlight.js/lib/languages/hy')) | ||
emphasize.registerLanguage('inform7', require('highlight.js/lib/languages/inform7')) | ||
emphasize.registerLanguage('ini', require('highlight.js/lib/languages/ini')) | ||
emphasize.registerLanguage('irpf90', require('highlight.js/lib/languages/irpf90')) | ||
emphasize.registerLanguage('isbl', require('highlight.js/lib/languages/isbl')) | ||
emphasize.registerLanguage('java', require('highlight.js/lib/languages/java')) | ||
emphasize.registerLanguage( | ||
'javascript', | ||
require('highlight.js/lib/languages/javascript') | ||
) | ||
emphasize.registerLanguage( | ||
'jboss-cli', | ||
require('highlight.js/lib/languages/jboss-cli') | ||
) | ||
emphasize.registerLanguage('json', require('highlight.js/lib/languages/json')) | ||
emphasize.registerLanguage('julia', require('highlight.js/lib/languages/julia')) | ||
emphasize.registerLanguage( | ||
'julia-repl', | ||
require('highlight.js/lib/languages/julia-repl') | ||
) | ||
emphasize.registerLanguage('kotlin', require('highlight.js/lib/languages/kotlin')) | ||
emphasize.registerLanguage('lasso', require('highlight.js/lib/languages/lasso')) | ||
emphasize.registerLanguage('latex', require('highlight.js/lib/languages/latex')) | ||
emphasize.registerLanguage('ldif', require('highlight.js/lib/languages/ldif')) | ||
emphasize.registerLanguage('leaf', require('highlight.js/lib/languages/leaf')) | ||
emphasize.registerLanguage('less', require('highlight.js/lib/languages/less')) | ||
emphasize.registerLanguage('lisp', require('highlight.js/lib/languages/lisp')) | ||
emphasize.registerLanguage( | ||
'livecodeserver', | ||
require('highlight.js/lib/languages/livecodeserver') | ||
) | ||
emphasize.registerLanguage( | ||
'livescript', | ||
require('highlight.js/lib/languages/livescript') | ||
) | ||
emphasize.registerLanguage('llvm', require('highlight.js/lib/languages/llvm')) | ||
emphasize.registerLanguage('lsl', require('highlight.js/lib/languages/lsl')) | ||
emphasize.registerLanguage('lua', require('highlight.js/lib/languages/lua')) | ||
emphasize.registerLanguage('makefile', require('highlight.js/lib/languages/makefile')) | ||
emphasize.registerLanguage( | ||
'mathematica', | ||
require('highlight.js/lib/languages/mathematica') | ||
) | ||
emphasize.registerLanguage('matlab', require('highlight.js/lib/languages/matlab')) | ||
emphasize.registerLanguage('maxima', require('highlight.js/lib/languages/maxima')) | ||
emphasize.registerLanguage('mel', require('highlight.js/lib/languages/mel')) | ||
emphasize.registerLanguage('mercury', require('highlight.js/lib/languages/mercury')) | ||
emphasize.registerLanguage('mipsasm', require('highlight.js/lib/languages/mipsasm')) | ||
emphasize.registerLanguage('mizar', require('highlight.js/lib/languages/mizar')) | ||
emphasize.registerLanguage('perl', require('highlight.js/lib/languages/perl')) | ||
emphasize.registerLanguage( | ||
'mojolicious', | ||
require('highlight.js/lib/languages/mojolicious') | ||
) | ||
emphasize.registerLanguage('monkey', require('highlight.js/lib/languages/monkey')) | ||
emphasize.registerLanguage( | ||
'moonscript', | ||
require('highlight.js/lib/languages/moonscript') | ||
) | ||
emphasize.registerLanguage('n1ql', require('highlight.js/lib/languages/n1ql')) | ||
emphasize.registerLanguage('nginx', require('highlight.js/lib/languages/nginx')) | ||
emphasize.registerLanguage('nim', require('highlight.js/lib/languages/nim')) | ||
emphasize.registerLanguage('nix', require('highlight.js/lib/languages/nix')) | ||
emphasize.registerLanguage( | ||
'node-repl', | ||
require('highlight.js/lib/languages/node-repl') | ||
) | ||
emphasize.registerLanguage('nsis', require('highlight.js/lib/languages/nsis')) | ||
emphasize.registerLanguage( | ||
'objectivec', | ||
require('highlight.js/lib/languages/objectivec') | ||
) | ||
emphasize.registerLanguage('ocaml', require('highlight.js/lib/languages/ocaml')) | ||
emphasize.registerLanguage('openscad', require('highlight.js/lib/languages/openscad')) | ||
emphasize.registerLanguage('oxygene', require('highlight.js/lib/languages/oxygene')) | ||
emphasize.registerLanguage('parser3', require('highlight.js/lib/languages/parser3')) | ||
emphasize.registerLanguage('pf', require('highlight.js/lib/languages/pf')) | ||
emphasize.registerLanguage('pgsql', require('highlight.js/lib/languages/pgsql')) | ||
emphasize.registerLanguage('php', require('highlight.js/lib/languages/php')) | ||
emphasize.registerLanguage( | ||
'php-template', | ||
require('highlight.js/lib/languages/php-template') | ||
) | ||
emphasize.registerLanguage( | ||
'plaintext', | ||
require('highlight.js/lib/languages/plaintext') | ||
) | ||
emphasize.registerLanguage('pony', require('highlight.js/lib/languages/pony')) | ||
emphasize.registerLanguage( | ||
'powershell', | ||
require('highlight.js/lib/languages/powershell') | ||
) | ||
emphasize.registerLanguage( | ||
'processing', | ||
require('highlight.js/lib/languages/processing') | ||
) | ||
emphasize.registerLanguage('profile', require('highlight.js/lib/languages/profile')) | ||
emphasize.registerLanguage('prolog', require('highlight.js/lib/languages/prolog')) | ||
emphasize.registerLanguage( | ||
'properties', | ||
require('highlight.js/lib/languages/properties') | ||
) | ||
emphasize.registerLanguage('protobuf', require('highlight.js/lib/languages/protobuf')) | ||
emphasize.registerLanguage('puppet', require('highlight.js/lib/languages/puppet')) | ||
emphasize.registerLanguage( | ||
'purebasic', | ||
require('highlight.js/lib/languages/purebasic') | ||
) | ||
emphasize.registerLanguage('python', require('highlight.js/lib/languages/python')) | ||
emphasize.registerLanguage( | ||
'python-repl', | ||
require('highlight.js/lib/languages/python-repl') | ||
) | ||
emphasize.registerLanguage('q', require('highlight.js/lib/languages/q')) | ||
emphasize.registerLanguage('qml', require('highlight.js/lib/languages/qml')) | ||
emphasize.registerLanguage('r', require('highlight.js/lib/languages/r')) | ||
emphasize.registerLanguage('reasonml', require('highlight.js/lib/languages/reasonml')) | ||
emphasize.registerLanguage('rib', require('highlight.js/lib/languages/rib')) | ||
emphasize.registerLanguage('roboconf', require('highlight.js/lib/languages/roboconf')) | ||
emphasize.registerLanguage('routeros', require('highlight.js/lib/languages/routeros')) | ||
emphasize.registerLanguage('rsl', require('highlight.js/lib/languages/rsl')) | ||
emphasize.registerLanguage( | ||
'ruleslanguage', | ||
require('highlight.js/lib/languages/ruleslanguage') | ||
) | ||
emphasize.registerLanguage('rust', require('highlight.js/lib/languages/rust')) | ||
emphasize.registerLanguage('sas', require('highlight.js/lib/languages/sas')) | ||
emphasize.registerLanguage('scala', require('highlight.js/lib/languages/scala')) | ||
emphasize.registerLanguage('scheme', require('highlight.js/lib/languages/scheme')) | ||
emphasize.registerLanguage('scilab', require('highlight.js/lib/languages/scilab')) | ||
emphasize.registerLanguage('scss', require('highlight.js/lib/languages/scss')) | ||
emphasize.registerLanguage('shell', require('highlight.js/lib/languages/shell')) | ||
emphasize.registerLanguage('smali', require('highlight.js/lib/languages/smali')) | ||
emphasize.registerLanguage( | ||
'smalltalk', | ||
require('highlight.js/lib/languages/smalltalk') | ||
) | ||
emphasize.registerLanguage('sml', require('highlight.js/lib/languages/sml')) | ||
emphasize.registerLanguage('sqf', require('highlight.js/lib/languages/sqf')) | ||
emphasize.registerLanguage('sql', require('highlight.js/lib/languages/sql')) | ||
emphasize.registerLanguage('stan', require('highlight.js/lib/languages/stan')) | ||
emphasize.registerLanguage('stata', require('highlight.js/lib/languages/stata')) | ||
emphasize.registerLanguage('step21', require('highlight.js/lib/languages/step21')) | ||
emphasize.registerLanguage('stylus', require('highlight.js/lib/languages/stylus')) | ||
emphasize.registerLanguage('subunit', require('highlight.js/lib/languages/subunit')) | ||
emphasize.registerLanguage('swift', require('highlight.js/lib/languages/swift')) | ||
emphasize.registerLanguage( | ||
'taggerscript', | ||
require('highlight.js/lib/languages/taggerscript') | ||
) | ||
emphasize.registerLanguage('yaml', require('highlight.js/lib/languages/yaml')) | ||
emphasize.registerLanguage('tap', require('highlight.js/lib/languages/tap')) | ||
emphasize.registerLanguage('tcl', require('highlight.js/lib/languages/tcl')) | ||
emphasize.registerLanguage('thrift', require('highlight.js/lib/languages/thrift')) | ||
emphasize.registerLanguage('tp', require('highlight.js/lib/languages/tp')) | ||
emphasize.registerLanguage('twig', require('highlight.js/lib/languages/twig')) | ||
emphasize.registerLanguage( | ||
'typescript', | ||
require('highlight.js/lib/languages/typescript') | ||
) | ||
emphasize.registerLanguage('vala', require('highlight.js/lib/languages/vala')) | ||
emphasize.registerLanguage('vbnet', require('highlight.js/lib/languages/vbnet')) | ||
emphasize.registerLanguage('vbscript', require('highlight.js/lib/languages/vbscript')) | ||
emphasize.registerLanguage( | ||
'vbscript-html', | ||
require('highlight.js/lib/languages/vbscript-html') | ||
) | ||
emphasize.registerLanguage('verilog', require('highlight.js/lib/languages/verilog')) | ||
emphasize.registerLanguage('vhdl', require('highlight.js/lib/languages/vhdl')) | ||
emphasize.registerLanguage('vim', require('highlight.js/lib/languages/vim')) | ||
emphasize.registerLanguage('x86asm', require('highlight.js/lib/languages/x86asm')) | ||
emphasize.registerLanguage('xl', require('highlight.js/lib/languages/xl')) | ||
emphasize.registerLanguage('xquery', require('highlight.js/lib/languages/xquery')) | ||
emphasize.registerLanguage('zephir', require('highlight.js/lib/languages/zephir')) | ||
export {emphasize} from './lib/common.js' |
166
lib/core.js
@@ -1,24 +0,34 @@ | ||
'use strict' | ||
/** | ||
* @typedef {import('lowlight/lib/core.js').LowlightRoot} LowlightRoot | ||
* @typedef {import('lowlight/lib/core.js').LowlightElementSpan} LowlightElementSpan | ||
* @typedef {import('lowlight/lib/core.js').LowlightAutoOptions} LowlightAutoOptions | ||
* @typedef {import('lowlight/lib/core.js').Text} Text | ||
*/ | ||
var chalk = require('chalk') | ||
var lowlight = require('lowlight/lib/core.js') | ||
/** | ||
* @typedef {LowlightRoot['data'] & {value: string}} Result | ||
* @typedef {(value: string) => string} Style | ||
* @typedef {Object.<string, Style>} Sheet | ||
* @typedef {{sheet?: Sheet, subset?: string[]}} AutoOptions | ||
*/ | ||
var high = lowlight.highlight | ||
var auto = lowlight.highlightAuto | ||
import chalk from 'chalk' | ||
import {lowlight} from 'lowlight/lib/core.js' | ||
// Inherit. | ||
function Lowlight() {} | ||
const own = {}.hasOwnProperty | ||
Lowlight.prototype = lowlight | ||
export const emphasize = { | ||
highlight, | ||
highlightAuto, | ||
registerLanguage: lowlight.registerLanguage, | ||
listLanguages: lowlight.listLanguages, | ||
registerAlias: lowlight.registerAlias | ||
} | ||
var emphasize = new Lowlight() | ||
// Expose. | ||
module.exports = emphasize | ||
emphasize.highlight = highlight | ||
emphasize.highlightAuto = highlightAuto | ||
// Default style sheet. | ||
var defaultSheet = { | ||
/** | ||
* Default style sheet. | ||
* | ||
* @type {Sheet} | ||
*/ | ||
const defaultSheet = { | ||
comment: chalk.gray, | ||
@@ -70,20 +80,36 @@ quote: chalk.gray, | ||
// Highlight `value` as `language`. | ||
/** | ||
* Highlight `value` as `language`. | ||
* | ||
* @param {string} language Language name | ||
* @param {string} value Code value | ||
* @param {Sheet} [sheet] Style sheet | ||
* @returns {Result} | ||
*/ | ||
function highlight(language, value, sheet) { | ||
var result = high.call(this, language, value) | ||
result.value = all(sheet || defaultSheet, result.value) | ||
return result | ||
const result = lowlight.highlight(language, value) | ||
return {...result.data, value: visit(sheet || defaultSheet, result)} | ||
} | ||
// Highlight `value` and guess its syntax. | ||
/** | ||
* Guess `value`s syntax. | ||
* | ||
* @param {string} value Code value | ||
* @param {Sheet|AutoOptions} [options] Style sheet or options | ||
* @returns {Result} | ||
*/ | ||
function highlightAuto(value, options) { | ||
var result | ||
var sheet | ||
var config | ||
/** @type {Sheet} */ | ||
let sheet | ||
/** @type {LowlightAutoOptions} */ | ||
let config | ||
if (options) { | ||
if (options.subset) { | ||
if ('subset' in options || 'sheet' in options) { | ||
// @ts-expect-error Looks like options. | ||
sheet = options.sheet | ||
// @ts-expect-error Looks like options. | ||
config = {subset: options.subset} | ||
} else { | ||
// @ts-expect-error Looks like options. | ||
sheet = options | ||
@@ -93,52 +119,48 @@ } | ||
if (!sheet) { | ||
sheet = defaultSheet | ||
} | ||
result = auto.call(this, value, config) | ||
result.value = all(sheet, result.value) | ||
if (result.secondBest) { | ||
result.secondBest.value = all(sheet, result.secondBest.value) | ||
} | ||
return result | ||
const result = lowlight.highlightAuto(value, config) | ||
return {...result.data, value: visit(sheet || defaultSheet, result)} | ||
} | ||
// Visit one `node`. | ||
/** | ||
* Visit one `node`. | ||
* | ||
* @param {Sheet} sheet | ||
* @param {LowlightRoot|LowlightElementSpan|Text} node | ||
*/ | ||
function visit(sheet, node) { | ||
var name = (node.properties || {}).className | ||
var scoped = {} | ||
var key | ||
var parts | ||
var color | ||
var style | ||
var content | ||
const names = new Set( | ||
node.type === 'element' | ||
? node.properties.className.map((d) => d.replace(/^hljs-/, '')) | ||
: [] | ||
) | ||
/** @type {Sheet} */ | ||
const scoped = {} | ||
/** @type {Style} */ | ||
let style | ||
/** @type {string} */ | ||
let content = '' | ||
/** @type {string} */ | ||
let key | ||
// Always just one class. | ||
name = name ? name[0].replace(/hljs-/, '') : '' | ||
for (key in sheet) { | ||
parts = key.split(' ') | ||
color = sheet[key] | ||
if (own.call(sheet, key)) { | ||
const parts = key.split(' ') | ||
const color = sheet[key] | ||
if (parts[0] === name) { | ||
if (parts.length === 1) { | ||
style = color | ||
if (names.has(parts[0])) { | ||
if (parts.length === 1) { | ||
style = color | ||
} else { | ||
scoped[parts.slice(1).join(' ')] = color | ||
} | ||
} else { | ||
scoped[parts.slice(1).join(' ')] = color | ||
scoped[key] = color | ||
} | ||
} else { | ||
scoped[key] = color | ||
} | ||
} | ||
content = '' | ||
if ('value' in node) { | ||
content = node.value | ||
} | ||
if ('children' in node) { | ||
} else if ('children' in node) { | ||
// @ts-expect-error Looks like a parent. | ||
content = all(scoped, node.children) | ||
@@ -154,9 +176,15 @@ } | ||
// Visit children in `node`. | ||
/** | ||
* Visit children in `node`. | ||
* | ||
* @param {Sheet} sheet | ||
* @param {Array.<LowlightElementSpan|Text>} nodes | ||
* @returns {string} | ||
*/ | ||
function all(sheet, nodes) { | ||
var result = [] | ||
var length = nodes.length | ||
var index = -1 | ||
/** @type {string[]} */ | ||
const result = [] | ||
let index = -1 | ||
while (++index < length) { | ||
while (++index < nodes.length) { | ||
result.push(visit(sheet, nodes[index])) | ||
@@ -163,0 +191,0 @@ } |
{ | ||
"name": "emphasize", | ||
"version": "4.2.0", | ||
"version": "5.0.0", | ||
"description": "ANSI syntax highlighting for the terminal", | ||
@@ -24,34 +24,38 @@ "license": "MIT", | ||
], | ||
"sideEffects": false, | ||
"type": "module", | ||
"main": "index.js", | ||
"types": "index.d.ts", | ||
"files": [ | ||
"index.js", | ||
"lib/core.js" | ||
"lib/", | ||
"index.d.ts", | ||
"index.js" | ||
], | ||
"dependencies": { | ||
"chalk": "^4.0.0", | ||
"highlight.js": "~10.4.0", | ||
"lowlight": "~1.17.0" | ||
"highlight.js": "~11.0.0", | ||
"lowlight": "~2.0.0" | ||
}, | ||
"devDependencies": { | ||
"is-hidden": "^1.0.0", | ||
"negate": "^1.0.0", | ||
"nyc": "^15.0.0", | ||
"@types/tape": "^4.0.0", | ||
"c8": "^7.0.0", | ||
"is-hidden": "^2.0.0", | ||
"prettier": "^2.0.0", | ||
"remark-cli": "^9.0.0", | ||
"remark-preset-wooorm": "^8.0.0", | ||
"rimraf": "^3.0.0", | ||
"tape": "^5.0.0", | ||
"xo": "^0.36.0" | ||
"type-coverage": "^2.0.0", | ||
"typescript": "^4.0.0", | ||
"xo": "^0.40.0" | ||
}, | ||
"scripts": { | ||
"prepack": "npm run build && npm run format", | ||
"generate": "node build", | ||
"build": "rimraf \"{lib/**,test/**,}*.d.ts\" && tsc && type-coverage", | ||
"format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix", | ||
"test-api": "node test", | ||
"test-coverage": "nyc --reporter lcov tape test/index.js", | ||
"test": "npm run generate && npm run format && npm run test-coverage" | ||
"test-api": "FORCE_COLOR=\"true\" node test/index.js", | ||
"test-coverage": "FORCE_COLOR=\"true\" c8 --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 --reporter lcov node test/index.js", | ||
"test": "npm run generate && npm run prepack && npm run test-coverage" | ||
}, | ||
"nyc": { | ||
"check-coverage": true, | ||
"lines": 100, | ||
"functions": 100, | ||
"branches": 100 | ||
}, | ||
"prettier": { | ||
@@ -67,12 +71,6 @@ "tabWidth": 2, | ||
"prettier": true, | ||
"esnext": false, | ||
"rules": { | ||
"unicorn/no-fn-reference-in-iterator": "off", | ||
"unicorn/prefer-optional-catch-binding": "off", | ||
"guard-for-in": "off" | ||
}, | ||
"ignore": [ | ||
"emphasize.js", | ||
"index.js" | ||
] | ||
"node/file-extension-in-import": "off", | ||
"unicorn/prefer-node-protocol": "off" | ||
} | ||
}, | ||
@@ -83,3 +81,8 @@ "remarkConfig": { | ||
] | ||
}, | ||
"typeCoverage": { | ||
"atLeast": 100, | ||
"detail": true, | ||
"strict": true | ||
} | ||
} |
@@ -11,6 +11,14 @@ # emphasize | ||
`emphasize` supports [all 190 syntaxes][names] of [highlight.js][hljs]. | ||
`emphasize` supports [all 191 syntaxes][names] of [highlight.js][hljs]. | ||
There are three builds of `emphasize`: | ||
* `lib/core.js` — 0 languages | ||
* `lib/common.js` (default) — 35 languages | ||
* `lib/all.js` — 191 languages | ||
## Install | ||
This package is [ESM only](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c): | ||
Node 12+ is needed to use it and it must be `import`ed instead of `require`d. | ||
[npm][]: | ||
@@ -50,8 +58,8 @@ | ||
```js | ||
var fs = require('fs') | ||
var emphasize = require('emphasize') | ||
import fs from 'fs' | ||
import {emphasize} from 'emphasize' | ||
var doc = fs.readFileSync('./example.css', 'utf8') | ||
const doc = String(fs.readFileSync('example.css')) | ||
var output = emphasize.highlightAuto(doc).value | ||
const output = emphasize.highlightAuto(doc).value | ||
@@ -64,18 +72,18 @@ console.log(output) | ||
```txt | ||
@\u001b[32mfont-face\u001b[39m { | ||
\u001b[33mfont-family\u001b[39m: Alpha; | ||
\u001b[33msrc\u001b[39m: \u001b[31murl\u001b[39m(\u001b[36m'Bravo.otf'\u001b[39m); | ||
\x1B[32m@font-face\x1B[39m { | ||
\x1B[33mfont-family\x1B[39m: Alpha; | ||
\x1B[33msrc\x1B[39m: \x1B[31murl\x1B[39m(\x1B[36m'Bravo.otf'\x1B[39m); | ||
} | ||
\u001b[32mbody\u001b[39m, \u001b[34m.charlie\u001b[39m, \u001b[34m#delta\u001b[39m { | ||
\u001b[33mcolor\u001b[39m: \u001b[36m#bada55\u001b[39m; | ||
\u001b[33mbackground-color\u001b[39m: \u001b[31mrgba\u001b[39m(33, 33, 33, 0.33); | ||
\u001b[33mfont-family\u001b[39m: \u001b[36m\"Alpha\"\u001b[39m, sans-serif; | ||
\x1B[32mbody\x1B[39m, \x1B[34m.charlie\x1B[39m, \x1B[34m#delta\x1B[39m { | ||
\x1B[33mcolor\x1B[39m: \x1B[36m#bada55\x1B[39m; | ||
\x1B[33mbackground-color\x1B[39m: \x1B[31mrgba\x1B[39m(\x1B[36m33\x1B[39m, \x1B[36m33\x1B[39m, \x1B[36m33\x1B[39m, \x1B[36m0.33\x1B[39m); | ||
\x1B[33mfont-family\x1B[39m: \x1B[36m"Alpha"\x1B[39m, sans-serif; | ||
} | ||
@\u001b[32mimport\u001b[39m url(echo.css); | ||
\x1B[32m@import\x1B[39m url(echo.css); | ||
@\u001b[32mmedia\u001b[39m print { | ||
\u001b[32ma\u001b[39m\u001b[35m[href^=http]\u001b[39m\u001b[35m::after\u001b[39m { | ||
\u001b[33mcontent\u001b[39m: \u001b[31mattr\u001b[39m(href) | ||
\x1B[32m@media\x1B[39m print { | ||
\x1B[32ma\x1B[39m\x1B[35m[href^=http]\x1B[39m\x1B[35m::after\x1B[39m { | ||
\x1B[33mcontent\x1B[39m: \x1B[31mattr\x1B[39m(href) | ||
} | ||
@@ -91,2 +99,5 @@ } | ||
This package exports the following identifiers: `emphasize`. | ||
There is no default export. | ||
### `emphasize.registerLanguage(name, syntax)` | ||
@@ -101,3 +112,3 @@ | ||
Like [`low.highlight()`][highlight], but the return object’s `value` property is | ||
a string instead of hast nodes. | ||
a string instead of a hast root. | ||
@@ -110,3 +121,3 @@ You can pass in a `sheet` ([`Sheet?`][sheet], optional) to configure the theme. | ||
Like [`low.highlightAuto()`][highlight-auto], but the return object’s `value` | ||
property is a string instead of hast nodes. | ||
property is a string instead of a hast root. | ||
@@ -123,3 +134,3 @@ You can pass in a `sheet` ([`Sheet?`][sheet], optional) directly or as | ||
Those functions receive a value (`string`), which they should wrap in ANSI | ||
sequences, and return. | ||
sequences and return. | ||
For convenience, [chalk’s chaining of styles][styles] is suggested. | ||
@@ -137,3 +148,3 @@ | ||
'formula': chalk.inverse | ||
}; | ||
} | ||
``` | ||
@@ -143,18 +154,9 @@ | ||
Do not require `emphasize` in the browser as that would include a *very* large | ||
file. | ||
If you’re using `emphasize/lib/core.js`, no syntaxes are included. | ||
Some syntaxes are included if you import `emphasize` (or | ||
`emphasize/lib/common.js`). | ||
All syntaxes are available through `emphasize/lib/all.js` | ||
Instead, require `emphasize/lib/core`, and include only the used highlighters. | ||
For example: | ||
See [Syntaxes in `lowlight`][syntaxes] for which syntaxes are included where. | ||
```js | ||
var emphasize = require('emphasize/lib/core') | ||
var js = require('highlight.js/lib/languages/javascript') | ||
emphasize.registerLanguage('javascript', js) | ||
emphasize.highlight('js', '"use strict";').value | ||
// '\u001b[35m"use strict"\u001b[39m;' | ||
``` | ||
## License | ||
@@ -202,4 +204,6 @@ | ||
[syntaxes]: https://github.com/wooorm/lowlight#syntaxes | ||
[highlight]: https://github.com/wooorm/lowlight#lowhighlightlanguage-value-options | ||
[highlight-auto]: https://github.com/wooorm/lowlight#lowhighlightautovalue-options |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
33477
11
612
200
Yes
11
1
+ Added@types/hast@2.3.10(transitive)
+ Added@types/unist@2.0.11(transitive)
+ Addedfault@2.0.1(transitive)
+ Addedhighlight.js@11.0.1(transitive)
+ Addedlowlight@2.0.1(transitive)
- Removedfault@1.0.4(transitive)
- Removedhighlight.js@10.4.1(transitive)
- Removedlowlight@1.17.0(transitive)
Updatedhighlight.js@~11.0.0
Updatedlowlight@~2.0.0