UNPKG

2.97 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
11function getNames(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 return {nameU, nameC, nameD, name_};
35}
36
37function deleteFolder(path) {
38 var files = [];
39 if( fs.existsSync(path) ) {
40 files = fs.readdirSync(path);
41 files.forEach(function(file,index){
42 var curPath = path + "/" + file;
43 if(fs.statSync(curPath).isDirectory()) { // recurse
44 deleteFolder(curPath);
45 } else { // delete file
46 fs.unlinkSync(curPath);
47 }
48 });
49 fs.rmdirSync(path);
50 }
51}
52
53Page.deletePage = name => {
54 const names = getNames(name);
55 const { nameU ,nameC ,nameD ,name_ } = names;
56 const dir = './src/routes/' + nameC;
57 deleteFolder(dir);
58 return names;
59};
60
61Page.createPage = (name)=>{
62 const names = getNames(name);
63 const { nameU ,nameC ,nameD ,name_ } = names;
64 ncp(path.resolve('', config.templatePath),
65 path.resolve('./src/routes/' + nameC),
66 {
67 /*transform: function (read, write){
68 console.log('read:',read);
69 }*/
70 },
71 function(err){
72 if (err) {
73 return console.error(err);
74 } else {
75 change();
76 }
77 }
78 );
79
80 function change(){
81 function reName(path, ele){
82 var toEle = ele.replace(/samplePage/g,nameC).replace(/SamplePage/g,nameU);
83 if(toEle !== ele){
84 fs.renameSync(path+"/"+ele, path+"/"+toEle);
85 }
86 return toEle;
87 }
88 function readDirSync(path){
89 var pa = fs.readdirSync(path);
90 pa.forEach(function(ele,index){
91 ele = reName(path, ele);
92 var info = fs.statSync(path+"/"+ele)
93 if(info.isDirectory()){
94 readDirSync(path+"/"+ele);
95 }else{
96 var text = fs.readFileSync(`${path}/${ele}` ,'utf-8')
97 .replace(/samplePage/g, nameC)
98 .replace(/SamplePage/g, nameU);
99 fs.writeFileSync(`${path}/${ele}`, text, { encoding:'utf-8', flag:'w' });
100 }
101 })
102 }
103 readDirSync(path.resolve('./src/routes/' + nameC));
104 }
105
106 return names;
107}
108module.exports = Page;