xref: /aosp_15_r20/external/timezone-boundary-builder/util/featureWriterStream.js (revision f0df97945b4fdddd066170b120f192941b8d7fbf)
1*f0df9794SNeil Fullerconst fs = require('fs')
2*f0df9794SNeil Fuller
3*f0df9794SNeil Fullerclass FeatureWriterStream {
4*f0df9794SNeil Fuller  constructor (file) {
5*f0df9794SNeil Fuller    this.file = file
6*f0df9794SNeil Fuller    this.stream = fs.createWriteStream(file)
7*f0df9794SNeil Fuller    this.stream.write('{"type":"FeatureCollection","features":[')
8*f0df9794SNeil Fuller    this.numFeatures = 0
9*f0df9794SNeil Fuller  }
10*f0df9794SNeil Fuller
11*f0df9794SNeil Fuller  add (stringifiedFeature) {
12*f0df9794SNeil Fuller    if (this.numFeatures > 0) {
13*f0df9794SNeil Fuller      this.stream.write(',')
14*f0df9794SNeil Fuller    }
15*f0df9794SNeil Fuller    this.stream.write(stringifiedFeature)
16*f0df9794SNeil Fuller    this.numFeatures++
17*f0df9794SNeil Fuller  }
18*f0df9794SNeil Fuller
19*f0df9794SNeil Fuller  end (cb) {
20*f0df9794SNeil Fuller    console.log(`Closing out file ${this.file}`)
21*f0df9794SNeil Fuller    this.stream.end(']}', cb)
22*f0df9794SNeil Fuller  }
23*f0df9794SNeil Fuller}
24*f0df9794SNeil Fuller
25*f0df9794SNeil Fullermodule.exports = FeatureWriterStream
26