UNPKG

react-hierarchy-tree-graph

Version:

React component to create interactive D3 tree hierarchies

77 lines (63 loc) 1.88 kB
/** * Copyright (c) 2015, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ function stringOfLength(string, length) { let newString = ''; for (let i = 0; i < length; i++) { newString += string; } return newString; } function generateTitle(name) { const title = `\`${name}\` (component)`; return `${title}\n${stringOfLength('=', title.length)}\n`; } function generateDesciption(description) { return `${description}\n`; } function generatePropType(type) { let values; if (Array.isArray(type.value)) { values = `(${ type.value.map((typeValue) => typeValue.name || typeValue.value).join('|') })`; } else { values = type.value; } return `type: \`${type.name}${values || ''}\`\n`; } function generatePropDefaultValue(value) { return `defaultValue: \`${value.value}\`\n`; } function generateProp(propName, prop) { return ( `### \`${propName}\`${prop.required ? ' (required)' : ''}\n` + `\n${ prop.description ? `${prop.description}\n\n` : '' }${prop.type ? generatePropType(prop.type) : '' }${prop.defaultValue ? generatePropDefaultValue(prop.defaultValue) : '' }\n` ); } function generateProps(props) { const title = 'Props'; return ( `${title}\n${ stringOfLength('-', title.length)}\n` + `\n${ Object.keys(props).sort().map((propName) => generateProp(propName, props[propName])).join('\n')}` ); } function generateMarkdown(name, reactAPI) { const markdownString = `${generateTitle(name)}\n${ generateDesciption(reactAPI.description)}\n${ generateProps(reactAPI.props)}`; return markdownString; } module.exports = generateMarkdown;