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