1.0.0 • Published 7 years ago

json-to-2d-table v1.0.0

Weekly downloads
2
License
LGPL-2.1
Repository
github
Last release
7 years ago

json-to-2d-table

一个将json转化为二维数据表格的通用工具。该工具使用Builder模式,可以任性地定制化表格的输出样式。其效果类似于下面这个网站:

http://www.convertcsv.com/csv-to-html.htm

这是一个nodejs工具,只支持nodejs的引用。

简单示例

const { jsonToTableBuilder } = require('json-to-2d-table')

const head = {
  order: ['a', 'b', 'c'],
  mappings: {
    a: {
      title: '日'
    },
    b: {
      title: '月'
    },
    c: {
      title: '星'
    }
  }
}

const data = [
  {
    a: '1',
    b: '2',
    c: '3'
  },
  {
    a: '6',
    b: '7',
    c: '8'
  }
]

function builder () {
  let indent = 0
  const write = function (line) {
    const spaces = Array(indent * 2).join(' ')
    console.log(spaces + line)
  }

  return {
    table (callback) {
      write('<table>')
      indent++
      callback(this)
      indent--
      write('</table>')
    },
    row (location, callback) {
      write(`<row ${location}>`)
      indent++
      callback(this)
      indent--
      write('</row>')
    },
    col (location, data) {
      write(`<col ${location}>` + data + '</col>')
    }
  }
}

jsonToTableBuilder(head, data, builder())

控制台将打印:

<table>
 <row 1>
   <col 1,1>日</col>
   <col 1,2>月</col>
   <col 1,3>星</col>
 </row>
 <row 2>
   <col 2,1>1</col>
   <col 2,2>2</col>
   <col 2,3>3</col>
 </row>
 <row 3>
   <col 3,1>6</col>
   <col 3,2>7</col>
   <col 3,3>8</col>
 </row>
</table>

更多完整的用法参见test中的各种测试代码。

模块

  • jsonToTableBuilder(head, data, builder, options): 使用Builder模式生成表格数据
  • jsonToHtmlTable(head, data): 使用HtmlBuilder生成HTML Table源码
  • buildHead(head): jsonToTableBuilder需要接受完整的head,可以从简写的head构造
  • buildHeadFromData(data): 从数据构造head

具体用法可参考源码或测试用例。

总结

该工具是返回二维的表格数据,对于跨单元格或者嵌套表格的需求无能为力。