Skip to content

Commit

Permalink
load datasets async to support dbf
Browse files Browse the repository at this point in the history
  • Loading branch information
mhkeller committed Jan 2, 2017
1 parent a2f32d6 commit 2e2b157
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 21 deletions.
57 changes: 36 additions & 21 deletions bin/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
var io = require('indian-ocean')
var optimist = require('optimist')
var joiner = require('../src/index.js')
var queue = require('d3-queue').queue

var argv = optimist
.usage('Usage: joiner -a DATASET_A_PATH -k DATASET_A_KEY -b DATASET_B_PATH -l DATASET_B_KEY -m (json|geojson) -n NEST_ID -o OUT_FILE_PATH -d (summary|full)')
Expand Down Expand Up @@ -71,32 +72,46 @@ var path = argv.p || argv['path']
var outPath = argv.o || argv['out']
var reportDesc = argv.r || argv['report']

var aData = io.readDataSync(aPath)
var bData = io.readDataSync(bPath)
var q = queue()

var config = {
leftData: aData,
leftDataKey: aKey,
rightData: bData,
rightDataKey: bKey,
path: path
}
var loadFnA = geDbfOrDataParser(aPath)
var loadFnB = geDbfOrDataParser(bPath) === 'dbf' ? io.readDbf : io.readData

// Join data
if (format !== 'json' && format !== 'geojson') {
throw new Error('Format must be either json or geojson')
}
var jd = joiner[format](config)
q.defer(loadFnA, aPath)
q.defer(loadFnB, bPath)

q.await(function (err, aData, bData) {
if (err) {
throw new Error(err)
}
var config = {
leftData: aData,
leftDataKey: aKey,
rightData: bData,
rightDataKey: bKey,
path: path
}

if (outPath !== null) {
io.writeDataSync(outPath, jd.data)
io.writeDataSync(stripExtension(outPath) + 'report.json', jd.report)
} else {
if (reportDesc === 'summary') {
console.log(jd.report.prose.summary)
// Join data
if (format !== 'json' && format !== 'geojson') {
throw new Error('Format must be either json or geojson')
}
var jd = joiner[format](config)

if (outPath !== null) {
io.writeDataSync(outPath, jd.data)
io.writeDataSync(stripExtension(outPath) + 'report.json', jd.report)
} else {
console.log(jd.report.prose.full)
if (reportDesc === 'summary') {
console.log(jd.report.prose.summary)
} else {
console.log(jd.report.prose.full)
}
}
})

function geDbfOrDataParser (path) {
io.discernParser(path) === 'dbf' ? io.readDbf : io.readData
}

function stripExtension (fullPath) {
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
},
"homepage": "https://github.com/mhkeller/joiner",
"dependencies": {
"d3-queue": "^3.0.3",
"indian-ocean": "^2.0.1",
"optimist": "^0.6.1",
"standard": "^8.6.0",
Expand Down

0 comments on commit 2e2b157

Please sign in to comment.