Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/nullvoxpopuli/highlightjs-glimmer

glimmer syntax highlighting with highlight.js
https://github.com/nullvoxpopuli/highlightjs-glimmer

ember emberjs glimmer glimmerjs hacktoberfest highlightjs

Last synced: about 2 months ago
JSON representation

glimmer syntax highlighting with highlight.js

Awesome Lists containing this project

README

        

# highlightjs-glimmer

[![npm version](https://badge.fury.io/js/highlightjs-glimmer.svg)](https://www.npmjs.com/package/highlightjs-glimmer)
[![code quality](https://badgen.net/lgtm/grade/github/NullVoxPopuli/highlightjs-glimmer/js?label=code+quality)](https://lgtm.com/projects/g/NullVoxPopuli/highlightjs-glimmer/)

glimmer syntax highlighting with [highlight.js](https://github.com/highlightjs/highlight.js)

## Install

```bash
yarn add highlightjs-glimmer
# or
npm install highlightjs-glimmer
```

## Compatibility

Requires: [highlight.js >= v11](https://github.com/highlightjs/highlight.js)

| | [Remark][1] | [Rehype][2] | [MarkdownIt][3] |
| -- | ----------- | ----------- | --------------- |
| cjs | ✅ | ✅ | ✅ |
| esm | ❌[^1] | ✅ | ✅ |

[1]: https://github.com/remarkjs/remark-highlight.js
[2]: https://github.com/rehypejs/rehype-highlight
[3]: https://github.com/markdown-it/markdown-it
[^1]: remark-highlight.js is deprecated and cjs only

## Usage

```js
import hljs from 'highlight.js';
import { setup } from 'highlightjs-glimmer';

setup(hljs);

hljs.highlightAll();
```

- the `javascript` language must be registered before `setup` is called.
- `setup` _must_ be called before any highlighting occurs.

Supported language tags:

```html



```
where `{tag}` could be:
- glimmer
- hbs
- html.hbs
- html.handlebars
- htmlbars

**NOTE** because highlightjs-glimmer overrides the same aliases as highlightjs' handlebars grammar,
to use the handlebars grammar align with the glimmer grammar, you'll need to use the full name in class
```html

...

...

```

## with `await import(...)`

When using ES Modules in browsers with a packager

```ts
let HIGHLIGHT;

async function getHighlighter() {
if (HIGHLIGHT) return HIGHLIGHT;

HIGHLIGHT = (await import('highlight.js')).default;

let { setup } = await import('highlightjs-glimmer');

setup(HIGHLIGHT);

return HIGHLIGHT;
}

async highlight() {
let hljs = await getHighlighter();

let element = document.querySelector('...');

hljs.highlightElement(element);
}

highlight();
```

## API

- `setup`

The convenience method for configuring everything related to
glimmer highlighting. This wraps `registerLanguage` and `registerInjections`.
For most use cases, this should be the only method you need.

- `registerLanguage`

Convenience method for registering the glimmer template syntax with
highlight.js under the name "glimmer"

- `registerInjections`

Registers the glimmer-javascript grammar, and installes `javascript`, `js`, `mjs` and `cjs`
as aliases of it

- `glimmer`

The highlight.js grammar function for glimmer templates. This can be used to register
the glimmer grammar without using the provided setup methods.

- `glimmerJavascript`

The highlight.js grammar function for glimmer-javascript (gjs) files. This can be used to register
the glimmer-javascript grammar without using the provided setup methods.

## CDN Usage

### Traditional Script Tags

```html

hljs.highlightAll();
```

### ES Modules

At this time, highlight.js does not ship ES Modules to CDNs

```html

import { glimmer } from '/cdn/path/to/highlightjs-glimmer/glimmer.esm.js';

hljs.registerLanguage('glimmer', glimmer);
hljs.highlightAll();

```

## Node / cjs / `require`

```js
const hljs = require('highlight.js');
const { setup } = require('highlightjs-glimmer');

setup(hljs);

hljs.highlightAll();
```

Only Node 14 is supported

## Node ES Modules / `import`

```js
import hljs from 'highlight.js';
import { setup } from 'highlightjs-glimmer';

setup(hljs);

hljs.highlightAll();
```

With Node 14, launch with

```bash
NODE_OPTIONS="--experimental-vm-modules" node your-module-script.js
```

## Contributing

Debug with `yarn debug -p 4201`
Visit `http://localhost:4201`

Run Tets with `yarn test` or `npm run test`