0.0.6 • Published 6 years ago

ptsv-csv-parser v0.0.6

Weekly downloads
7
License
ISC
Repository
github
Last release
6 years ago

ptsv-csv-parser

A CSV parser created as an exercise for applying JavaScript concepts.

This package is used for parsing a .csv file to a JSON structure specified by a class which must extend the CsvDataObject class. Both the Parser class and the CsvDataObject class are provided by this package. It is possible for each row parsed from the .csv to be an instance of a provided class. The provided class will have to:

  • Be passed in to the parser's constructor,
  • Extend from the CsvDataObject class,
  • and implement its getPropertyNames function.

Please refer to the Morning Train Challenge repository for an example of this package in action.

Examples

Handling request from client receiving the CSV file:

  require('dotenv').config()
  const express = require('express')
  const cors = require('cors')
  const fileUpload = require('express-fileupload')
  const config = require('./config')
  const PtsvCsv = require('ptsv-csv-parser')
  const Parser = PtsvCsv.Parser
  const Person = require('./classes/person')

  const app = express()

  app.use(cors())
  app.use(fileUpload());
  app.use('/uploads', express.static(__dirname + '/uploads'));

  app.post('/upload', (req, res) => {
    const csvFile = req.files.file
    const filePath = `${__dirname}\\uploads\\${csvFile.name}`

    //Downloading the file to the server 
    //so that the parser can have acess to it.
    csvFile.mv(filePath, error => {
      if (error)
        return res.status(500).send(error)

      const parser = new Parser(filePath, Person)
      parser.parseCsv()
        .then(response => {
          res.send(response)
        })
        .catch(response => {
          console.log(response)
          res.status(500).send(response)				
        })
    })
  })

  app.listen(config.port, () => {
    console.log('Server listening on port %s, Ctrl+C to stop', config.port)
  })

Class extending the CsvDataObject class:

  const PtsvCsvParser = require('ptsv-csv-parser')
  const CsvDataObject = PtsvCsvParser.CsvDataObject

  module.exports = class Person extends CsvDataObject {
    constructor(firstName = null, lastName = null, age = null, email = null) {
      super()
      this.firstName = firstName
      this.lastName = lastName
      this.age = age
      this.email = email
    }

    //Implementing the method 'required' by the CsvDataObject class
    static getPropertyNames () {
      return ['firstName', 'lastName', 'age', 'email']
    }
  }
0.0.6

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago