react-native-ui-lib
Version:
UI Components Library for React Native
38 lines (31 loc) • 1.25 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});exports.
generateSnippet=generateSnippet;var _lodash=require('lodash');var _lodash2=_interopRequireDefault(_lodash);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}var TAB=' ';var LINE_BREAK='\n';function generateSnippet(instance){
var componentName=instance.constructor.name;
var defaultProps=instance.constructor.defaultProps||{};
var componentProps=instance.props||{};
var snippet='<'+componentName;
_lodash2.default.forEach(componentProps,function(value,key){
var formattedValue='{'+value+'}';
if(_lodash2.default.isObject(value)){
formattedValue='{'+JSON.stringify(value)+'}';
}else if(_lodash2.default.isString(value)){
formattedValue='"'+value+'"';
}else if(_lodash2.default.isBoolean(value)&&value===true){
formattedValue='';
}
var hasEmptyValue=_lodash2.default.isUndefined(value)||_lodash2.default.isObject(value)&&_lodash2.default.isEmpty(value);
var hasDefaultValue=value==defaultProps[key];
if(!hasEmptyValue&&!hasDefaultValue){
snippet+=''+LINE_BREAK+TAB+key;
if(formattedValue){
snippet+='='+formattedValue;
}
}
});
if(componentProps.children){
snippet+='>'+LINE_BREAK+'</'+componentName+'>';
}else{
snippet+='/>';
}
return snippet;
}