Skip to content

Commit

Permalink
Enable passing options for parsing Markdown.
Browse files Browse the repository at this point in the history
Closes #1163, #1495.
  • Loading branch information
bnjmnt4n committed Dec 8, 2016
1 parent 2bd6b56 commit 90b301d
Show file tree
Hide file tree
Showing 5 changed files with 99 additions and 14 deletions.
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,18 @@ Special syntax (in html comment) is available for adding attributes to the slide
</section>
```

#### Configuring `marked`

We use [marked](https://github.com/chjj/marked) to parse Markdown. To customise marked's rendering, you can pass in options when [configuring Reveal](#configuration):

```javascript
Reveal.initialize({
// Options which are passed into marked
// See https://github.com/chjj/marked#options-1
markdown: {
smartypants: true
}
});

### Configuration

Expand Down
32 changes: 19 additions & 13 deletions plugin/markdown/markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,6 @@
}
}( this, function( marked ) {

if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}

if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( code, lang ) {
return hljs.highlightAuto( code, [lang] ).value;
}
});
}

var DEFAULT_SLIDE_SEPARATOR = '^\r?\n---\r?\n$',
DEFAULT_NOTES_SEPARATOR = 'note:',
DEFAULT_ELEMENT_ATTRIBUTES_SEPARATOR = '\\\.element\\\s*?(.+?)$',
Expand Down Expand Up @@ -189,7 +177,7 @@
markdownSections += '<section '+ options.attributes +'>';

sectionStack[i].forEach( function( child ) {
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
markdownSections += '<section data-markdown>' + createMarkdownSlide( child, options ) + '</section>';
} );

markdownSections += '</section>';
Expand Down Expand Up @@ -391,6 +379,24 @@
return {

initialize: function() {
if( typeof marked === 'undefined' ) {
throw 'The reveal.js Markdown plugin requires marked to be loaded';
}

if( typeof hljs !== 'undefined' ) {
marked.setOptions({
highlight: function( code, lang ) {
return hljs.highlightAuto( code, [lang] ).value;
}
});
}

var options = Reveal.getConfig().markdown;

if ( options ) {
marked.setOptions( options );
}

processSlides();
convertSlides();
},
Expand Down
41 changes: 41 additions & 0 deletions test/test-markdown-options.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<!doctype html>
<html lang="en">

<head>
<meta charset="utf-8">

<title>reveal.js - Test Markdown Options</title>

<link rel="stylesheet" href="../css/reveal.css">
<link rel="stylesheet" href="qunit-1.12.0.css">
</head>

<body style="overflow: auto;">

<div id="qunit"></div>
<div id="qunit-fixture"></div>

<div class="reveal" style="display: none;">

<div class="slides">

<section data-markdown>
<script type="text/template">
## Testing Markdown Options

This "slide" should contain 'smart' quotes.
</script>
</section>

</div>

</div>

<script src="../lib/js/head.min.js"></script>
<script src="../js/reveal.js"></script>
<script src="qunit-1.12.0.js"></script>

<script src="test-markdown-options.js"></script>

</body>
</html>
26 changes: 26 additions & 0 deletions test/test-markdown-options.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Reveal.addEventListener( 'ready', function() {

QUnit.module( 'Markdown' );

test( 'Options are set', function() {
strictEqual( marked.defaults.smartypants, true );
});

test( 'Smart quotes are activated', function() {
var text = document.querySelector( '.reveal .slides>section>p' ).textContent;

strictEqual( /['"]/.test( text ), false );
strictEqual( /[“”‘’]/.test( text ), true );
});

} );

Reveal.initialize({
dependencies: [
{ src: '../plugin/markdown/marked.js' },
{ src: '../plugin/markdown/markdown.js' },
],
markdown: {
smartypants: true
}
});
2 changes: 1 addition & 1 deletion test/test-markdown.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<body style="overflow: auto;">

<div id="qunit"></div>
<div id="qunit-fixture"></div>
<div id="qunit-fixture"></div>

<div class="reveal" style="display: none;">

Expand Down

0 comments on commit 90b301d

Please sign in to comment.