Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

shiki-processor

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

shiki-processor

Add processing capabilities to Shiki's highlighter

latest
Source
npmnpm
Version
0.1.3
Version published
Weekly downloads
228
-32.54%
Maintainers
1
Weekly downloads
 
Created
Source

shiki-processor

Status   npm

Add processing capabilities to Shiki's highlighter

npm i shiki shiki-processor

 

Usage

shiki-processor exports a custom getHighlighter that provides the same API as the one exported from shiki, except it adds a new processors option.

import { getHighlighter, createFocusProcessor } from 'shiki-processor'

const snippet = /** ... */
const highlighter = await getHighlighter({
  processors: [
    createFocusProcessor(),
  ],
})

highlighter.codeToHtml(snippet, { lang: 'javascript' })

Alternatively, for more flexibility, it is possible to use the process and postProcess functions directly.

import { getHighlighter } from 'shiki'
import { process, postProcess } from 'shiki-processor'

const theme = 'material-theme-palenight'
const lang = 'javascript'
const snippet = /** ... */
const processors = [
  createFocusProcessor(),
]

const highlighter = await getHighlighter({ theme })

const { code, lineOptions } = process(processors, snippet, lang)
const highlighted = highlighter.codeToHtml(code, {
	lang,
	theme,
	lineOptions,
})

return postProcess(processors, highlighted, lang)

 

Built-in processors

There is currently three processors: focus, diff and highlight. Each one of them adds the possibility of adding a // [!code <tag>] annotation to a line in a code snipppet.

When this annotation is found, it is removed and a class corresponding to the processor is added to the line. The complete code block is also added a class.

// Input
function() {
	console.log('hewwo') // [!code --]
	console.log('hello') // [!code ++]
}
<!-- Output (stripped of `style` attributes for clarity) -->
<pre class="shiki has-diff"> <!-- Notice `has-diff` -->
	<code>
		<span class="line"></span>
		<span class="line"><span>function</span><span>()</span><span></span><span>{</span></span>
		<span class="line diff remove">  <!-- Notice `diff` and `remove` -->
			<span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>&#39;</span><span>hewwo</span><span>&#39;</span><span>) </span>
		</span>
		<span class="line diff add">  <!-- Notice `diff` and `add` -->
			<span></span><span>console</span><span>.</span><span>log</span><span>(</span><span>&#39;</span><span>hello</span><span>&#39;</span><span>) </span>
		</span>
		<span class="line"><span></span><span>}</span></span>
		<span class="line"><span></span></span>
	</code>
</pre>

Optionally, a range can be defined by adding a colon and a number of lines: // [!code focus:3].



·

Built with ❤︎ by Enzo Innocenzi

Keywords

shiki

FAQs

Package last updated on 31 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts