| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- const fs = require('fs');
- const path = './swagger.txt';
- // 截取两个字符串之间的子字符串,返回所有
- function subStringMulti(text, begin, end) {
- let regex;
- if (end == '\\n') regex = new RegExp(begin + '(.+)', 'g');
- else regex = new RegExp(begin + '([\\s\\S]+?)' + end, 'g');
- try {
- let result;
- const blocks = [];
- while ((result = regex.exec(text)) != null) {
- blocks.push(result[1].trim());
- }
- return blocks;
- // return text.match(regex);
- } catch (err) {
- return null;
- }
- }
- fs.readFile(path, (err, data) => {
- if (err) {
- console.log('文件不存在!');
- } else {
- const oldValue = data.toString();
- let newValue;
- if (oldValue.indexOf('optional') === -1) {
- newValue =
- // 'interface HttpRespone {code: number;msg: string;page: number;pagesize: number;total: number;}' +
- 'export interface Name' +
- oldValue
- .replace(/\*/g, '')
- .replace(/number/g, ':number;\n//')
- .replace(/0/g, 'number;\n//')
- .replace(/integer/g, ':number;\n//')
- .replace(/string/g, ':string;\n//')
- .replace(/boolean/g, ':boolean;\n//')
- .replace(/"/g, '')
- .replace(/"/g, '')
- .replace(/\n\/\/\n/g, '//')
- .replace(/\n(\n)*( )*(\n)*\n/g, '\n')
- .trim() +
- '\n';
- } else {
- const before = oldValue.split('{')[0].replace('message', 'export interface ') + '{';
- const between = subStringMulti(oldValue, '{', '}')[0];
- const semicolonAry = between.split(';');
- const newSemicolonAry = [];
- semicolonAry.forEach((item) => {
- if (item.indexOf('optional uint') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', '?:');
- } else if (item.indexOf('optional string') !== -1) {
- item = item.replace(item.split('=')[1], 'String').replace('=', '?:');
- } else if (item.indexOf('optional double') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', '?:');
- } else if (item.indexOf('optional int32') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', '?:');
- } else if (item.indexOf('required int32') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', ':');
- } else if (item.indexOf('required uint') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', ':');
- } else if (item.indexOf('required string') !== -1) {
- item = item.replace(item.split('=')[1], 'String').replace('=', ':');
- } else if (item.indexOf('required double') !== -1) {
- item = item.replace(item.split('=')[1], 'Number').replace('=', ':');
- }
- newSemicolonAry.push(item + ';');
- });
- const changeValue = newSemicolonAry.join(' ');
- newValue =
- before +
- changeValue
- .replace(/optional MessageHead Header = 1;/g, '')
- .replace(/required/g, 'optional')
- .replace(/optional int32/g, '')
- .replace(/optional uint32/g, '')
- .replace(/optional uint64/g, '')
- .replace(/optional string/g, '')
- .replace(/optional double/g, '')
- .replace(/=/g, ':')
- .trim() +
- '\n }';
- }
- console.log(newValue);
- fs.unlink('./swagger.ts', (err) => {
- !err && console.log('文件删除成功!');
- });
- fs.writeFile('./swagger.ts', newValue, { flag: 'a' }, (err) => {
- !err && console.log('写入文件成功!');
- });
- }
- });
|