36 lines
687 B
JavaScript
36 lines
687 B
JavaScript
'use strict';
|
|
|
|
var streak = require('longest-streak');
|
|
var repeat = require('repeat-string');
|
|
|
|
module.exports = inlineCode;
|
|
|
|
/* Stringify inline code.
|
|
*
|
|
* Knows about internal ticks (`\``), and ensures one more
|
|
* tick is used to enclose the inline code:
|
|
*
|
|
* ```foo ``bar`` baz```
|
|
*
|
|
* Even knows about inital and final ticks:
|
|
*
|
|
* `` `foo ``
|
|
* `` foo` ``
|
|
*/
|
|
function inlineCode(node) {
|
|
var value = node.value;
|
|
var ticks = repeat('`', streak(value, '`') + 1);
|
|
var start = ticks;
|
|
var end = ticks;
|
|
|
|
if (value.charAt(0) === '`') {
|
|
start += ' ';
|
|
}
|
|
|
|
if (value.charAt(value.length - 1) === '`') {
|
|
end = ' ' + end;
|
|
}
|
|
|
|
return start + value + end;
|
|
}
|