Skip to content

Commit

Permalink
MDX: Handle <Story> name starting with number (#8469)
Browse files Browse the repository at this point in the history
MDX: Handle `<Story>` name starting with number
  • Loading branch information
shilman committed Oct 18, 2019
2 parents 9fba946 + 766f013 commit ddd159d
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
Expand Up @@ -511,6 +511,9 @@ function MDXContent({ components, ...props }) {
<Story name=\\"w/punctuation\\" mdxType=\\"Story\\">
<Button mdxType=\\"Button\\">with punctuation</Button>
</Story>
<Story name=\\"1 fine day\\" mdxType=\\"Story\\">
<Button mdxType=\\"Button\\">starts with number</Button>
</Story>
</MDXLayout>
);
}
Expand All @@ -532,12 +535,21 @@ wPunctuation.story = {};
wPunctuation.story.name = 'w/punctuation';
wPunctuation.story.parameters = { mdxSource: '<Button>with punctuation</Button>' };
const componentMeta = { title: 'Button', includeStories: ['one', 'helloStory', 'wPunctuation'] };
export const _1FineDay = () => <Button>starts with number</Button>;
_1FineDay.story = {};
_1FineDay.story.name = '1 fine day';
_1FineDay.story.parameters = { mdxSource: '<Button>starts with number</Button>' };
const componentMeta = {
title: 'Button',
includeStories: ['one', 'helloStory', 'wPunctuation', '_1FineDay'],
};
const mdxStoryNameToId = {
one: 'button--one',
'hello story': 'button--hello-story',
'w/punctuation': 'button--w-punctuation',
'1 fine day': 'button--1-fine-day',
};
componentMeta.parameters = componentMeta.parameters || {};
Expand Down
4 changes: 4 additions & 0 deletions addons/docs/src/mdx/__testfixtures__/story-definitions.mdx
Expand Up @@ -16,3 +16,7 @@ import { Story, Meta } from '@storybook/addon-docs/blocks';
<Story name="w/punctuation">
<Button>with punctuation</Button>
</Story>

<Story name="1 fine day">
<Button>starts with number</Button>
</Story>
5 changes: 4 additions & 1 deletion addons/docs/src/mdx/mdx-compiler-plugin.js
Expand Up @@ -19,10 +19,13 @@ function getAttr(elt, what) {
}

const isReserved = name => RESERVED.exec(name);
const startsWithNumber = name => /^\d/.exec(name);

const sanitizeName = name => {
let key = camelCase(name);
if (isReserved(key)) {
if (startsWithNumber(key)) {
key = `_${key}`;
} else if (isReserved(key)) {
key = `${key}Story`;
}
return key;
Expand Down

1 comment on commit ddd159d

@vercel
Copy link

@vercel vercel bot commented on ddd159d Oct 18, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.