1 | const path = require('path');
|
2 | const fs = require('fs');
|
3 | const transform = require('../util/transform');
|
4 | const ncp = require('ncp').ncp;
|
5 | const config = require('../config');
|
6 |
|
7 | const Page = function(){
|
8 |
|
9 | };
|
10 |
|
11 | Page.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.componentPath === '../templates/_SampleComponent' ? __dirname : '', config.componentPath),
|
36 | path.resolve('./src/components/' + nameU),
|
37 | {
|
38 | |
39 |
|
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 | }
|
80 | module.exports = Page;
|