Skip to content

Commit

Permalink
chore: Update FunctionDefinition to use CodeDef
Browse files Browse the repository at this point in the history
  • Loading branch information
jerelmiller committed Jun 16, 2020
1 parent 2f86c62 commit 720e4c1
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 70 deletions.
74 changes: 33 additions & 41 deletions src/components/FunctionDefinition.js
Original file line number Diff line number Diff line change
@@ -1,50 +1,42 @@
import React, { Children } from 'react';
import React from 'react';
import PropTypes from 'prop-types';
import cx from 'classnames';
import Markdown from 'react-markdown';
import CodeDef from './CodeDef';
import styles from './FunctionDefinition.module.scss';

const ParamDescription = ({ children, ...props }) => {
if (Children.toArray(children).length === 0) {
return null;
}

return (
<span {...props} className={styles.paramDescription}>
{' //'} {children}
</span>
);
};

ParamDescription.propTypes = {
children: PropTypes.node,
};

const FunctionDefinition = ({ className, params, returnValue }) => {
return (
<div className={cx(styles.container, className)}>
<span className={styles.keyword}>
{params.length > 0 ? 'function (' : 'function ()'}
</span>
{params.map((param, i) => (
<div key={i} className={styles.param}>
<span className={styles.paramName}>
{param.type.startsWith('...') ? `...${param.name}` : param.name}:{' '}
</span>
<span className={styles.type}>{param.type}</span>
{i !== params.length - 1 && ', '}
<Markdown
source={param.description}
renderers={{
root: ParamDescription,
}}
/>
</div>
))}
{params.length > 0 && <span className={styles.keyword}>)</span>}
<span className={styles.keyword}> => </span>
<span className={styles.type}>{returnValue.type}</span>
</div>
<CodeDef className={cx(styles.container, className)}>
{params.length > 0 ? (
<>
<CodeDef.Keyword>function</CodeDef.Keyword>{' '}
<CodeDef.Bracket>(</CodeDef.Bracket>
</>
) : (
<>
<CodeDef.Keyword>function</CodeDef.Keyword>{' '}
<CodeDef.Bracket>()</CodeDef.Bracket>
</>
)}
{params.length > 0 && (
<CodeDef.Block>
{params.map((param, i) => (
<div key={i}>
<CodeDef.Identifier>
{param.type.startsWith('...') ? `...${param.name}` : param.name}
:{' '}
</CodeDef.Identifier>
<CodeDef.Type>{param.type}</CodeDef.Type>
{i !== params.length - 1 ? ', ' : ' '}
<CodeDef.Comment text={param.description} />
</div>
))}
</CodeDef.Block>
)}
{params.length > 0 && <CodeDef.Bracket>)</CodeDef.Bracket>}
<CodeDef.Operator> => </CodeDef.Operator>
<CodeDef.Type>{returnValue.type}</CodeDef.Type>
</CodeDef>
);
};

Expand Down
29 changes: 0 additions & 29 deletions src/components/FunctionDefinition.module.scss
Original file line number Diff line number Diff line change
@@ -1,32 +1,3 @@
.container {
font-family: var(--code-font);
font-size: 0.875rem;
line-height: 1.5;
}

.line:not(:last-child) {
margin-bottom: 0.5rem;
}

.param {
color: var(--color-neutrals-700);
margin-left: 1rem;
}

.paramDescription {
color: var(--color-neutrals-500);

> p {
color: inherit;
display: inline;
}
}

.keyword {
color: var(--color-neutrals-600);
}

.type {
color: var(--color-green-500);
background: var(--color-green-050);
}

0 comments on commit 720e4c1

Please sign in to comment.