parent
c94823dd59
commit
b536c682a2
|
@ -1,6 +1,7 @@
|
|||
// @flow
|
||||
import { filter } from 'lodash';
|
||||
import slugify from 'shared/utils/slugify';
|
||||
import unescape from 'shared/utils/unescape';
|
||||
|
||||
export default function getHeadingsForText(
|
||||
text: string
|
||||
|
@ -13,7 +14,7 @@ export default function getHeadingsForText(
|
|||
if (!match) continue;
|
||||
|
||||
const level = match[1].length;
|
||||
const title = match[2];
|
||||
const title = unescape(match[2]);
|
||||
|
||||
let slug = slugify(title);
|
||||
const existing = filter(output, { slug });
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
/* eslint-disable flowtype/require-valid-file-annotation */
|
||||
import getHeadingsForText from './getHeadingsForText';
|
||||
|
||||
it('should return an array of document headings', () => {
|
||||
const response = getHeadingsForText(`
|
||||
# Header
|
||||
|
||||
## Subheading
|
||||
`);
|
||||
|
||||
expect(response.length).toBe(2);
|
||||
expect(response[0].level).toBe(1);
|
||||
expect(response[0].title).toBe('Header');
|
||||
expect(response[1].level).toBe(2);
|
||||
expect(response[1].title).toBe('Subheading');
|
||||
});
|
||||
|
||||
it('should unescape special characters', () => {
|
||||
const response = getHeadingsForText(`# Header <\\>`);
|
||||
|
||||
expect(response.length).toBe(1);
|
||||
expect(response[0].title).toBe('Header <>');
|
||||
});
|
Reference in New Issue