diff --git a/index.html b/index.html index eb393d56..5e03237e 100644 --- a/index.html +++ b/index.html @@ -39,25 +39,25 @@

The powerful, in-browser CSV parser for big boys and girls

// Parse CSV string
-	var data = Papa.parse(csv);
-
-	// Convert back to CSV
-	var csv = Papa.unparse(data);
-
-	// Parse local CSV file
-	Papa.parse(file, {
-		complete: function(results) {
-			console.log("Finished:", results.data);
-		}
-	});
-
-	// Stream big file in worker thread
-	Papa.parse(bigFile, {
-		worker: true,
-		step: function(results) {
-			console.log("Row:", results.data);
-		}
-	});
+var data = Papa.parse(csv); + +// Convert back to CSV +var csv = Papa.unparse(data); + +// Parse local CSV file +Papa.parse(file, { + complete: function(results) { + console.log("Finished:", results.data); + } +}); + +// Stream big file in worker thread +Papa.parse(bigFile, { + worker: true, + step: function(results) { + console.log("Row:", results.data); + } +});
@@ -212,13 +212,13 @@
"Isn't parsing CSV just String.split(',')?"

Heavens, no. Papa does it right. Just pass in the CSV string with an optional configuration.

var results = Papa.parse(csvString, config);
-	/*
-		results = {
-			data: [ ... ],    // parsed data
-			errors: [ ... ],  // errors encountered
-			meta: {	... }     // extra parse info
-		}
-	*/
+/* + results = { + data: [ ... ], // parsed data + errors: [ ... ], // errors encountered + meta: { ... } // extra parse info + } +*/ @@ -234,8 +234,8 @@
"But I don't know the delimiter..."

That's okay. Papa will scan the first few rows to find the right delimiter.

var results = Papa.parse(csvString);
-	console.log(results.meta.delimiter);
-	// "\t"
+console.log(results.meta.delimiter); +// "\t" @@ -251,10 +251,10 @@
"Great, but I have a file to parse."

Then give Papa a File instead of a string. Since file parsing is asynchronous, don't forget a callback.

var results = Papa.parse(fileInput.files[0], {
-		complete: function(results) {
-			console.log(results);
-		}
-	});
+ complete: function(results) { + console.log(results); + } +}); @@ -272,11 +272,11 @@
"No—I mean, the file isn't on my computer."

Oh, well then just pass in the URL and—of course—a callback.

Papa.parse("http://example.com/file.csv", {
-		download: true,
-		complete: function(results) {
-			console.log(results);
-		}
-	});
+ download: true, + complete: function(results) { + console.log(results); + } +}); @@ -296,14 +296,14 @@
"Did I mention the file is huge?"

That's what streaming is for. Specify a step callback to receive the results row-by-row. This way, you won't load the whole file into memory and crash the browser.

Papa.parse("http://example.com/big.csv", {
-		download: true,
-		step: function(row) {
-			console.log("Row:", row.data);
-		},
-		complete: function() {
-			console.log("All done!");
-		}
-	});
+ download: true, + step: function(row) { + console.log("Row:", row.data); + }, + complete: function() { + console.log("All done!"); + } +}); @@ -319,14 +319,14 @@
"Lovely. Now my web page locked up."

That happens when a long-running script is executing in the same thread as the page. Use a Worker thread by specifying worker: true. It may take slightly longer, but your page will stay reactive.

Papa.parse(bigFile, {
-		worker: true,
-		step: function(row) {
-			console.log("Row:", row.data);
-		},
-		complete: function() {
-			console.log("All done!");
-		}
-	});
+ worker: true, + step: function(row) { + console.log("Row:", row.data); + }, + complete: function() { + console.log("All done!"); + } +}); @@ -343,9 +343,9 @@
"Great! Now I want data keyed by field name."

If you tell Papa there is a header row, each row will be organized by field name instead of index.

// Key data by field name instead of index/position
-	var results = Papa.parse(csv, {
-		header: true
-	});
+var results = Papa.parse(csv, { + header: true +}); @@ -362,9 +362,9 @@
"Hey, these numbers are parsed as strings."

Everything is parsed as strings. If you want numbers and booleans, you can enable dynamic typing to do the conversion for you.

// Converts numeric/boolean data
-	var results = Papa.parse(csv, {
-		dynamicTyping: true
-	});
+var results = Papa.parse(csv, { + dynamicTyping: true +}); @@ -383,10 +383,10 @@
"I forgot to mention: my CSV files have comments in them."

Okay, first off: that's really weird. But fortunately, you can skip those lines... just specify the comment string.

// Mostly found in academia, some CSV files
-	// may have commented lines in them
-	var results = Papa.parse(csv, {
-		comments: "#"
-	});
+// may have commented lines in them +var results = Papa.parse(csv, { + comments: "#" +}); @@ -404,12 +404,12 @@
"Aw, shoot. Errors."

Papa handles errors pretty well. The CSV standard is somewhat loose ambiguous, so Papa is designed for edge cases. For example, mismatched fields won't break parsing.

// Example error:
-	{
-		type: "FieldMismatch",
-		code: "TooManyFields",
-		message: "Expected 3 fields, but parsed 4",
-		row: 1
-	}
+{ + type: "FieldMismatch", + code: "TooManyFields", + message: "Expected 3 fields, but parsed 4", + row: 1 +} @@ -426,15 +426,15 @@
"Can I use Papa with jQuery?"

Sure, but it's not required. You can use jQuery to select file input elements and then parse their files. Papa exposes its file parsing API as a jQuery plugin only when jQuery is defined. Papa Parse has no dependencies.

$("input[type=file]").parse({
-		config: {
-			complete: function(results, file) {
-				console.log("This file done:", file, results);
-			}
-		},
-		complete: function() {
-			console.log("All files done!");
+	config: {
+		complete: function(results, file) {
+			console.log("This file done:", file, results);
 		}
-	});
+ }, + complete: function() { + console.log("All files done!"); + } +}); @@ -451,8 +451,8 @@
"Last thing: what about converting JSON to CSV?"

Call unparse() instead of parse(), passing in your array of arrays or array of objects. Papa will figure it out.

// Output is a properly-formatted CSV string.
-	// See the docs for more configurability.
-	var csv = Papa.unparse(yourData);
+// See the docs for more configurability. +var csv = Papa.unparse(yourData);