Skip to content

Commit 2c99e22

Browse files
committed
Auto merge of #2069 - Turbo87:prism-modifier, r=locks
Simplify README rendering using a new `highlight-syntax` modifier This PR implements a new `highlight-syntax` modifier based on https://github.com/ember-modifier/ember-modifier and the existing `ember-prism` addon. That modifier is then used to apply the Prism.js syntax highlighting to all code blocks in the README, making the `CrateReadme` component obsolete. r? @locks
2 parents 498506f + 1db71ad commit 2c99e22

File tree

7 files changed

+92
-16
lines changed

7 files changed

+92
-16
lines changed

app/components/crate-readme.js

Lines changed: 0 additions & 13 deletions
This file was deleted.

app/modifiers/highlight-syntax.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/* global Prism */
2+
import { modifier } from 'ember-modifier';
3+
4+
export default modifier((element, _, { selector }) => {
5+
let elements = selector ? element.querySelectorAll(selector) : [element];
6+
7+
for (let element of elements) {
8+
Prism.highlightElement(element);
9+
}
10+
});

app/templates/components/crate-readme.hbs

Lines changed: 0 additions & 1 deletion
This file was deleted.

app/templates/crate/version.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@
7171
{{/if}}
7272
</div>
7373
{{#if this.crate.readme}}
74-
<section class="crate-readme" aria-label="Readme">
75-
<CrateReadme @rendered={{this.crate.readme}} />
74+
<section class="crate-readme" aria-label="Readme" {{highlight-syntax selector="pre > code"}}>
75+
{{html-safe this.crate.readme}}
7676
</section>
7777
{{else}}
7878
{{#if this.crate.description}}

package-lock.json

Lines changed: 42 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"ember-keyboard": "^5.0.0",
6262
"ember-load-initializers": "^2.1.1",
6363
"ember-maybe-import-regenerator": "^0.1.6",
64+
"ember-modifier": "^1.0.2",
6465
"ember-moment": "^8.0.0",
6566
"ember-qunit": "^4.6.0",
6667
"ember-page-title": "^5.1.0",
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { module, test } from 'qunit';
2+
import { setupRenderingTest } from 'ember-qunit';
3+
import { render } from '@ember/test-helpers';
4+
import { hbs } from 'ember-cli-htmlbars';
5+
6+
module('Modifier | highlight-syntax', function(hooks) {
7+
setupRenderingTest(hooks);
8+
9+
test('uses Prism.js to apply syntax highlighting', async function(assert) {
10+
await render(hbs`
11+
<pre class="language-rust" {{highlight-syntax}}>
12+
#[macro_use]
13+
extern crate bitflags;
14+
</pre>
15+
`);
16+
assert.dom('.token').exists();
17+
assert.dom('.keyword').exists({ count: 2 });
18+
});
19+
20+
test('accepts a `selector` argument', async function(assert) {
21+
await render(hbs`
22+
<div {{highlight-syntax selector=".b"}}>
23+
<pre class="language-rust a">
24+
#[macro_use]
25+
extern crate bitflags;
26+
</pre>
27+
<pre class="language-rust b">
28+
#[macro_use]
29+
extern crate bitflags;
30+
</pre>
31+
</div>
32+
`);
33+
assert.dom('.a .token').doesNotExist();
34+
assert.dom('.b .token').exists();
35+
assert.dom('.b .keyword').exists({ count: 2 });
36+
});
37+
});

0 commit comments

Comments
 (0)