Skip to content

Instantly share code, notes, and snippets.

@agreen757
Created February 5, 2015 20:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agreen757/8f167ce30f0d239f8539 to your computer and use it in GitHub Desktop.
Save agreen757/8f167ce30f0d239f8539 to your computer and use it in GitHub Desktop.
CSV Parse Using Prototype-oriented Javascript
//THE REASON THAT I UNCLUDED OLD CODE COMMENTED OUT IS TO SHOW THE DISTINCTION BETWEEN MY OLD METHOD AND THE NEW OO WAY.
//DEVELOPED AFTER READING https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
var csv = require("ya-csv")
exports.check = function(filename,cb){
//in the check
var pusher = function(filename){
this.filename = filename;
}
pusher.prototype.push = function(c){
var reader = csv.createCsvFileReader(__dirname+'/../upload/'+filename, {columnsFromHeader:true,'separator': ','});
var silo = [];
reader.addListener('data', function(data){
console.log(data)
//silo[0].type will equal the type
silo.push({album_artist:data.album_artist,
album_title:data.album_title,
album_grid:data.album_grid,
album_ean:data.album_ean,
album_upc:data.album_upc,
album_release_date:data.album_release_date,
album_label:data.album_label,
album_art_filename:data.album_art_filename,
track_number:data.track_number,
track_title:data.track_title,
track_filename:data.track_filename,
track_custom_id:data.track_custom_id,
track_artist:data.track_artist,
track_genres:data.track_genres,
track_isrc:data.track_isrc,
track_pline:data.track_pline,
track_territory_start_dates:data.track_territory_start_dates,
track_explicit_lyrics:data.track_explicit_lyrics,
filename:data.filename,
custom_id:data.custom_id,
isrc:data.isrc,
upc:data.upc,
grid:data.grid,
song_title:data.song_title,
artist:data.artist,
album:data.album,
genre:data.genre,
label:data.label,
original_release_date:data.original_release_date,
match_policy:data.match_policy,
ownership:data.ownership,
admin_sync_rights:data.admin_sync_rights,
comp_writers:data.comp_writers,
comp_sync_ownership:data.comp_sync_ownership,
type:data.type
})
})
reader.addListener('end',function(){
var type1 = new checker(silo[0].type)
type1.typeswitch(silo,function(err,data){
if(err) throw err;
return c(null,'something')
})
})
}
//************************************************************
//********************ENTRY POINT***************************
var woo = new pusher(filename)
woo.push(function(err,data){
if(err) throw err;
return cb(null,'something')
})
//************************************************************
//OLD CODE BLOCK - WE NOW CREATE A NEW INSTANCE OF THE PUSHER FUNCTION EVERY TIME
/*var reader = csv.createCsvFileReader(__dirname+'/../upload/'+filename, {columnsFromHeader:true,'separator': ','});
var silo = [];
reader.addListener('data', function(data){
console.log(data)
//silo[0].type will equal the type
silo.push({album_artist:data.album_artist,
album_title:data.album_title,
album_grid:data.album_grid,
album_ean:data.album_ean,
album_upc:data.album_upc,
album_release_date:data.album_release_date,
album_label:data.album_label,
album_art_filename:data.album_art_filename,
track_number:data.track_number,
track_title:data.track_title,
track_filename:data.track_filename,
track_custom_id:data.track_custom_id,
track_artist:data.track_artist,
track_genres:data.track_genres,
track_isrc:data.track_isrc,
track_pline:data.track_pline,
track_territory_start_dates:data.track_territory_start_dates,
track_explicit_lyrics:data.track_explicit_lyrics,
filename:data.filename,
custom_id:data.custom_id,
isrc:data.isrc,
upc:data.upc,
grid:data.grid,
song_title:data.song_title,
artist:data.artist,
album:data.album,
genre:data.genre,
label:data.label,
original_release_date:data.original_release_date,
match_policy:data.match_policy,
ownership:data.ownership,
admin_sync_rights:data.admin_sync_rights,
comp_writers:data.comp_writers,
comp_sync_ownership:data.comp_sync_ownership,
type:data.type
})
})
reader.addListener('end',function(){
/*typecheck(silo,function(err,data){
if(err) throw err;
return cb(null,'something');
})*/
/*
var type1 = new checker(silo[0].type)
type1.typeswitch(silo,function(err,data){
if(err) throw err;
return cb(null,'something')
})
})*/
}
var checker = function(type){
this.type = type;
}
checker.prototype.artcheck = function(c){
console.log('in proto artcheck')
return c(null,'good')
}
checker.prototype.contentcheck = function(c){
console.log('in proto contentcheck')
return c(null,'good')
}
checker.prototype.typeswitch = function(silo,c){
switch(this.type){
case "art_track":
this.artcheck(function(err,data){
if(err) throw err;
return c(null,'good')
})
break;
case "content_id":
this.contentcheck(function(err,data){
if(err) throw err;
return c(null,'good')
})
break;
}
}
//OLD CODE BLOCK
/*function typecheck(silo,c){
switch (silo[0].type) {
case "art_track":
artcheck(function(err,data){
if(err) throw err
return c(null,'good')
})
break;
case "content_id":
contentcheck(function(err,data){
if(err) throw err
return c(null,'good')
})
break;
}
function artcheck(c){
console.log('in artcheck')
return c(null,'good')
}
function contentcheck(c){
console.log('in contentcheck')
return c(null,'good')
}
}*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment