39 lines
837 B
JavaScript
39 lines
837 B
JavaScript
|
'use strict'
|
||
|
|
||
|
module.exports = emphasis
|
||
|
|
||
|
var underscore = '_'
|
||
|
var asterisk = '*'
|
||
|
|
||
|
// Stringify an `emphasis`.
|
||
|
//
|
||
|
// The marker used is configurable through `emphasis`, which defaults to an
|
||
|
// underscore (`'_'`) but also accepts an asterisk (`'*'`):
|
||
|
//
|
||
|
// ```markdown
|
||
|
// *foo*
|
||
|
// ```
|
||
|
//
|
||
|
// In `pedantic` mode, text which itself contains an underscore will cause the
|
||
|
// marker to default to an asterisk instead:
|
||
|
//
|
||
|
// ```markdown
|
||
|
// *foo_bar*
|
||
|
// ```
|
||
|
function emphasis(node) {
|
||
|
var marker = this.options.emphasis
|
||
|
var content = this.all(node).join('')
|
||
|
|
||
|
// When in pedantic mode, prevent using underscore as the marker when there
|
||
|
// are underscores in the content.
|
||
|
if (
|
||
|
this.options.pedantic &&
|
||
|
marker === underscore &&
|
||
|
content.indexOf(marker) !== -1
|
||
|
) {
|
||
|
marker = asterisk
|
||
|
}
|
||
|
|
||
|
return marker + content + marker
|
||
|
}
|