-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path_tables.js
68 lines (59 loc) · 1.84 KB
/
_tables.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
define(["_tag-builders", "_dom-writers"], function(tagBuilders, writers){
return {
writeAdjacentTable: writeAdjacentTable,
wrapMapContentsInCodeTag: wrapMapContentsInCodeTag
};
function writeAdjacentTable(data){
var table = buildDataTable(data);
writers.appendToFirstArticle(table);
}
function buildDataTable(data) {
var table = tagBuilders.buildTable();
insertTableClass(table, data.tableClass);
insertTableCaption(table, data.caption);
insertTableHeader(table, data.header);
insertTableData(table, data.tableData);
return table;
}
function insertTableClass(table, tableClass){
if (tableClass) {
table.className = tableClass;
}
}
function insertTableCaption(table, caption){
if (caption) {
var captionTag = tagBuilders.createCaptionTag(caption);
table.appendChild(captionTag);
}
}
function insertTableHeader(table, header){
var headerRow = table.insertRow(0);
headerRow.insertCell(0);
fillOutTableRow(headerRow, header, tagBuilders.buildTableHeader);
}
function insertTableData(table, tableData){
Object.keys(tableData).forEach(function(rowName){
var row = table.insertRow(-1);
var th = tagBuilders.buildTableHeader(rowName);
row.appendChild(th);
var rowData = tableData[rowName];
fillOutTableRow(row, rowData, tagBuilders.buildTableData);
});
}
function fillOutTableRow(row, data, builder){
for (var colNum in data){
var cellData = data[colNum];
var cell = builder(cellData);
row.appendChild(cell);
}
}
function wrapMapContentsInCodeTag(dataMap){
return Object.keys(dataMap).reduce(function(funcMap, func){
funcMap[func] = dataMap[func].map(wrapInCodeTag);
return funcMap;
}, {});
}
function wrapInCodeTag(code){
return ["<code>", code, "</code>"].join("");
}
});