From 30f747bcaf41c48af20a96ac15c0fc62db6316a2 Mon Sep 17 00:00:00 2001 From: Lachlan Kermode Date: Thu, 17 Jan 2019 16:02:21 +0000 Subject: [PATCH] add blueprinter --- src/blueprinters/columns.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/blueprinters/columns.js diff --git a/src/blueprinters/columns.js b/src/blueprinters/columns.js new file mode 100644 index 0000000..879e399 --- /dev/null +++ b/src/blueprinters/columns.js @@ -0,0 +1,27 @@ +/** + * Each resource item is an object with values labelled according + * to column names specified in the sheet's first row. If two or more + * column names are the same except for a different integer at the end + * (e.g. 'tag1', and 'tag2'), then the values of those two columns are + * aggregated into a list, which is the value of the prefix's key ('tag'). + * Any values in those columns that are empty will NOT be added to the list. + * + * @param {type} data list of lists representing sheet data. + * @return {type} Array the structured data. + */ +export default (data) => { + const columnNames = data[0] + const columns = columnNames.map(name => ([])) + + data.forEach((row, idx) => { + if (idx === 0) return + row.forEach((item, idx) => { + columns[idx].push(item) + }) + }) + + return columns.map((column, idx) => ({ + name: columnNames[idx], + items: column + })) +}