UNPKG

react-native-ui-lib

Version:

UI Components Library for React Native

38 lines (31 loc) 1.25 kB
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; }