mirror of
https://github.com/status-im/react-native.git
synced 2025-02-14 02:17:14 +00:00
81 lines
1.9 KiB
JavaScript
81 lines
1.9 KiB
JavaScript
/**
|
|
* 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.
|
|
*/
|
|
"use strict";
|
|
|
|
function stringOfLength(string, length) {
|
|
var newString = '';
|
|
for (var i = 0; i < length; i++) {
|
|
newString += string;
|
|
}
|
|
return newString;
|
|
}
|
|
|
|
function generateTitle(name) {
|
|
var title = '`' + name + '` (component)';
|
|
return title + '\n' + stringOfLength('=', title.length) + '\n';
|
|
}
|
|
|
|
function generateDesciption(description) {
|
|
return description + '\n';
|
|
}
|
|
|
|
function generatePropType(type) {
|
|
var values;
|
|
if (Array.isArray(type.value)) {
|
|
values = '(' +
|
|
type.value.map(function(typeValue) {
|
|
return typeValue.name || typeValue.value;
|
|
}).join('|') +
|
|
')';
|
|
} else {
|
|
values = type.value;
|
|
}
|
|
|
|
return 'type: `' + type.name + (values ? 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) {
|
|
var title = 'Props';
|
|
|
|
return (
|
|
title + '\n' +
|
|
stringOfLength('-', title.length) + '\n' +
|
|
'\n' +
|
|
Object.keys(props).sort().map(function(propName) {
|
|
return generateProp(propName, props[propName]);
|
|
}).join('\n')
|
|
);
|
|
}
|
|
|
|
function generateMarkdown(name, reactAPI) {
|
|
var markdownString =
|
|
generateTitle(name) + '\n' +
|
|
generateDesciption(reactAPI.description) + '\n' +
|
|
generateProps(reactAPI.props);
|
|
|
|
return markdownString;
|
|
}
|
|
|
|
module.exports = generateMarkdown;
|