-
Notifications
You must be signed in to change notification settings - Fork 4
Template Example
Lanten edited this page Dec 29, 2019
·
4 revisions
const files = {
'Javascript Log': (name, query) => {
return `console.log('${name}: ${JSON.stringify(query)}')`
},
'React Class Component': name => {
const nameH = toCamel(name)
return [
`import React from 'react'`,
``,
`import './${name}.less'`,
``,
`export default class ${nameH} extends React.Component {`,
` render() {`,
` return (`,
` <div className="${name}">`,
` <p>component ${name} is ok</p>`,
` </div>`,
` )`,
` }`,
`} // class ${nameH} end`,
``,
]
},
Index: name => {
const nameH = toCamel(name)
return [`import ${nameH} from './${name}'`, `export default ${nameH}`, ``]
},
}
const folders = {
'React Component': name => {
console.log(name)
return {
'index.ts': files.Index(name),
[`${name}.tsx`]: files['React Class Component'](name),
[`${name}.less`]: [`.${name} {`, `}`],
}
},
}
/**
* Hyphen to Camel
* @param {String} str
* @param {Boolean} c Initial capital
*/
function toCamel(str, c = true) {
let strH = str.replace(/([^\-])(?:\-+([^\-]))/g, (_, $1, $2) => $1 + $2.toUpperCase())
if (c) strH = strH.slice(0, 1).toUpperCase() + strH.slice(1)
return strH
}
module.exports = { files, folders }