js格式化文件内容的格式

 

var fs = require('fs');

function readDir() {
    var tableList = fs.readdirSync('.');
    tableList.splice(0, 1);
    for (var i in tableList) {
        formatterTable(tableList[i]);
    }
}

function formatterTable(tblName) {
    var colLen = 0,
        typeLen = 0,
        nullLen = 'nullable'.length,
        defLen = 0,
        uniqLen = 'unique'.length,
        descLen = 0;
    var tblJson = require('./' + tblName);
    var colArr = tblJson.columnArray;
    for (var i in colArr) {
        var arr = colArr[i].split('|');
        var len1 = arr[0].trim().length;
        var len2 = arr[1].trim().length;
        var len3 = arr[3].trim().length;
        var bufLen = new Buffer(arr[5].trim()).length;
        var strLen = arr[5].trim().length;
        var len4 = strLen + Math.floor((bufLen - strLen) / 2) - Math.floor((bufLen - strLen) / 7);
        colLen = len1  > colLen  ? len1 : colLen;
        typeLen = len2 > typeLen ? len2 : typeLen;
        defLen = len3  > defLen  ? len3 : defLen;
        descLen = len4 > descLen ? len4 : descLen;
    }
    colLen = colLen > 'column'.length ? colLen : 'column'.length;
    defLen = defLen > 'default'.length ? defLen : 'default'.length;
    descLen = descLen > 'description'.length ? descLen : 'description'.length;

    var tableStr = '{\r\n  "tableName": "' + tblJson.tableName + '",\r\n\r\n  ' +
        '"columnFiled": [ "' + header() + '",' + '\r\n                   ' + '"' + delimiter() + '"],\r\n  ' +
        '"columnArray": [ ';
    var colArrLen = colArr.length - 1;
    for (var i in colArr) {
        tableStr += '"' + columnStr(colArr[i]) + '"';
        if (i < colArrLen) {
            tableStr += ',\r\n                   ';
        } else {
            tableStr += '\r\n  ';
        }
    }
    tableStr += '],\r\n  ';
    tableStr += '"pkey": "' + tblJson.pkey + '"\r\n';
    tableStr += '}';
    
    function header() {
        var arr1 = ['Column', 'Type', 'Nullable', 'Default', 'Unique'];
        var arr2 = [colLen, typeLen, nullLen, defLen, uniqLen];
        var str = '';
        for (var i in arr1) {
            str += fillIntoSpecifiedLength(arr1[i], arr2[i]) + '|';
        }
        str += fillIntoSpecifiedLength('Description', descLen);
        return str;
    }
    function delimiter() {
        var arr = [colLen, typeLen, nullLen, defLen, uniqLen];
        var str = '';
        for (var i in arr) {
            str += fillIntoSpecifiedLength('-', arr[i], '-') + '+';
        }
        str += fillIntoSpecifiedLength('-', descLen, '-');
        return str;
    }
    function columnStr(colInfo) {
        var str = '';
        var arr = colInfo.split('|');
        var lenArr = [colLen, typeLen, nullLen, defLen, uniqLen, descLen];
        for (var i = 0; i < arr.length - 1; i++) {
            str += fillIntoSpecifiedLength(arr[i].trim(), lenArr[i]) + '|';
        }
        str += fillIntoSpecifiedLength(arr[5].trim(), descLen);
        return str;
    }

    console.log(tableStr);
    fs.writeFileSync(tblJson.tableName + '.json', tableStr);
}

function fillIntoSpecifiedLength(str, num, fill) {
    var filler = fill || ' ';
    var strLen = str.length;
    var bufLen = new Buffer(str).length;
    if (bufLen > strLen) {
        strLen = strLen + ((bufLen - strLen) / 2) - Math.floor((bufLen - strLen) / 7);
    } else {

    }
    str = filler + str;
    do {
        num--;
        str += filler;
    } while (num >= strLen);

    return str;
}

readDir();

格式化之后的效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

password-u

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值