介紹一個CSV轉Markdown Table的工具與函式庫
因為寫作上需要,常常會有要撰寫Markdown Table的需求,這邊分享一下最近找到的一個函式庫 - CSV To Markdown Table
General Using
原先都是使用Markdown Tables Generator幫我產出Table後在一筆筆的放入資料,而今天介紹的CSV To Markdown Table則是可以幫我們直接將既有的CSV資料直接匯出markdown table格式,簡化我們的人工編輯時間.
從Live Demo 可以簡單地看到我們可以將CSV貼入網站後轉出對應的markdown語法後我們就可以貼入文章內做使用.

Source Code and Library Reference
這個函式庫的使用很簡單,只需要載入後使用下面這一行呼叫即可以轉出我們要的markdown語法結果
而我們進一步地看他的原始碼(.js),其實就是幫我們把語法做parsing後進行分割處理
"use strict";
/**
* Converts CSV to Markdown Table
*
* @param {string} csvContent - The string content of the CSV
* @param {string} delimiter - The character(s) to use as the CSV column delimiter
* @param {boolean} hasHeader - Whether to use the first row of Data as headers
* @returns {string}
*/
function csvToMarkdown( csvContent, delimiter, hasHeader ) {
    if( delimiter != "\t" ) {
        csvContent = csvContent.replace(/\t/g, "    ");
    }
    var columns = csvContent.split("\n");
    var tabularData = [];
    var maxRowLen = [];
    columns.forEach(function( e, i ) {
        if( typeof tabularData[i] == "undefined" ) {
            tabularData[i] = [];
        }
        var row = e.split(delimiter);
        row.forEach(function( ee, ii ) {
            if( typeof maxRowLen[ii] == "undefined" ) {
                maxRowLen[ii] = 0;
            }
            maxRowLen[ii] = Math.max(maxRowLen[ii], ee.length);
            tabularData[i][ii] = ee;
        });
    });
    var headerOutput = "";
    var seperatorOutput = "";
    maxRowLen.forEach(function( len ) {
        var spacer;
        spacer = Array(len + 1 + 2).join("-");
        seperatorOutput += "|" + spacer;
        spacer = Array(len + 1 + 2).join(" ");
        headerOutput += "|" + spacer;
    });
    headerOutput += "| \n";
    seperatorOutput += "| \n";
    if( hasHeader ) {
        headerOutput = "";
    }
    var rowOutput = "";
    var initHeader = true;
    tabularData.forEach(function( col ) {
        maxRowLen.forEach(function( len, y ) {
            var row = typeof col[y] == "undefined" ? "" : col[y];
            var spacing = Array((len - row.length) + 1).join(" ");
            if( hasHeader && initHeader ) {
                headerOutput += "| " + row + spacing + " ";
            } else {
                rowOutput += "| " + row + spacing + " ";
            }
        });
        if( hasHeader && initHeader ) {
            headerOutput += "| \n";
        } else {
            rowOutput += "| \n";
        }
        initHeader = false;
    });
    return headerOutput + seperatorOutput + rowOutput;
}
if(typeof module != "undefined") {
    module.exports = csvToMarkdown;
}這樣短小精幹的程式碼真是太棒了!有興趣的朋友請關注作者並給予肯定!