Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/robot-inventor/regex-syntax

Grammar files for syntax highlight of regex
https://github.com/robot-inventor/regex-syntax

Last synced: 24 days ago
JSON representation

Grammar files for syntax highlight of regex

Awesome Lists containing this project

README

        

# regex-syntax

Grammar files for syntax highlight of regex. The grammar files are automatically generated from [Linguist](https://github.com/github-linguist/linguist/)'s regex grammars.

> [!NOTE]
> You may also be interested in [shell-session-syntax](https://github.com/Robot-Inventor/shell-session-syntax/) for syntax highlight of shell sessions.

| Before | After |
| :--------------------------------------: | :-----------------------------: |
| ![before](docs/without-regex-syntax.png) | ![after](docs/regex-syntax.png) |

## Usage

To use regex-syntax in [Shiki.js](https://shiki.style/), please download ``./syntaxes/regex.tmLanguage.json`` or install the package and load it as a custom language grammar. Language name is ``regex`` and ``regexp``.

```bash
npm install @robot-inventor/regex-syntax
```

```typescript
import { getHighlighter } from "shiki";
// Directly import the downloaded file.
import regex from "./regex.tmLanguage.json";
// Or import the package.
import regex from "@robot-inventor/regex-syntax";

const code = `
^[a-zA-Z0-9.!#$%&'*+/=?^_\`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$
`.trim();

const highlighter = await getHighlighter({
langs: [regex],
themes: ["vitesse-dark"]
});

const html = highlighter.codeToHtml(code, {
lang: "regex",
theme: "vitesse-dark"
});

console.log(html);
```

## Update Grammar

To update the grammar file, run the following command. It automatically downloads the latest upstream grammar files and applies patches.

```bash
npm run build
```

## Grammar Sources

regex-syntax is generated by automatically applying patches to the following grammar file.

- [Linguist](https://github.com/github-linguist/linguist/) ([MIT License](https://github.com/github-linguist/linguist/blob/master/LICENSE))