UNPKG

2.39 kBJavaScriptView Raw
1const path = require('path');
2const fs = require('fs');
3const transform = require('../util/transform');
4const ncp = require('ncp').ncp;
5const config = require('../config');
6
7const Page = function(){
8
9}
10
11Page.createComponent = (name)=>{
12 let nameU ,nameC ,nameD ,name_ ;
13 if(name.indexOf("-") !== -1){
14 nameD = name;
15 name_ = transform(nameD ,"dash" ,"lodash");
16 nameC = transform(nameD ,"dash" ,"camel");
17 nameU = transform(nameD ,"dash" ,"upper");
18 }else if(name.indexOf("_") !== -1){
19 name_ = name;
20 nameD = transform(name_ ,"lodash" ,"dash");
21 nameC = transform(name_ ,"lodash" ,"camel");
22 nameU = transform(name_ ,"lodash" ,"upper");
23 }else if(/^[A-Z]/.test(name)){
24 nameU = name;
25 nameD = transform(nameU ,"upper" ,"dash");
26 nameC = transform(nameU ,"upper" ,"camel");
27 name_ = transform(nameU ,"upper" ,"lodash");
28 }else {
29 nameC = name;
30 nameD = transform(nameC ,"camel" ,"dash");
31 nameU = transform(nameC ,"camel" ,"upper");
32 name_ = transform(nameC ,"camel" ,"lodash");
33 }
34
35 ncp(path.resolve(config.templatePath === '../templates/_SampleComponent' ? __dirname : '', config.templatePath),
36 path.resolve('./src/components/' + nameU),
37 {
38 /*transform: function (read, write){
39 console.log('read:',read);
40 }*/
41 },
42 function(err){
43 if (err) {
44 return console.error(err);
45 } else {
46 change();
47 }
48 }
49 )
50
51 function change(){
52 function reName(path, ele){
53 var toEle = ele.replace(/sampleComponent/g,nameC).replace(/SampleComponent/g,nameU);
54 if(toEle !== ele){
55 fs.renameSync(path+"/"+ele, path+"/"+toEle);
56 }
57 return toEle;
58 }
59 function readDirSync(path){
60 var pa = fs.readdirSync(path);
61 pa.forEach(function(ele,index){
62 ele = reName(path, ele);
63 var info = fs.statSync(path+"/"+ele)
64 if(info.isDirectory()){
65 readDirSync(path+"/"+ele);
66 }else{
67 var text = fs.readFileSync(`${path}/${ele}` ,'utf-8')
68 .replace(/sampleComponent/g, nameC)
69 .replace(/SampleComponent/g, nameU);
70 fs.writeFileSync(`${path}/${ele}`, text, { encoding:'utf-8', flag:'w' });
71 }
72 })
73 }
74 readDirSync(path.resolve('./src/components/' + nameU));
75 }
76
77 console.log('done');
78 return {nameU, nameC, nameD, name_};
79}
80module.exports = Page;