README.md in hasherize_csv-0.0.7 vs README.md in hasherize_csv-0.1.0
- old
+ new
@@ -1,10 +1,11 @@
# HasherizeCsv
[![Build Status](https://travis-ci.org/bbradbury/hasherize_csv.png)](https://travis-ci.org/bbradbury/hasherize_csv)
Dead simple CSV parsing, with configurable regex selectors if required.
Reads line-by-line, so you can parse big CSV files without running out of memory.
+The first line is always assumed to be column headers, and thus keys in the corresponding hash.
### Simple case
Given sample_csv.csv
```csv
Col1,Col2,Col3
@@ -26,5 +27,35 @@
The output will be
```
{'Col1' => 'Val1', 'Col2' => 'Val2', 'Col3' => 'Val3'}
{'Col1' => 'Val4', 'Col2' => 'Val5', 'Col3' => 'Val6'}
```
+
+### Complex case: parse strange line endings and elegantly select quoted fields
+Given complex_sample.csv
+```csv
+"Col1";"Col2";"Col3"\r
+"Val1";"Val2";"Val3"\r
+"Val4";"Val5
+
+Oh my, newlines in the record!";"Val6"\r
+```
+
+and
+```ruby
+require 'hasherize_csv'
+@f = File.new("complex_sample.csv")
+
+#HasherizeCsv yields the value of the first match group in the :value_pattern regex
+@csv = HasherizeCsv::Csv.new(@f, :separator => "\r", :value_pattern => /\"(.*?)\"/m)
+
+@csv.each do |hash|
+ puts hash.inspect
+end
+```
+
+The output will be
+```
+{'Col1' => 'Val1', 'Col2' => 'Val2', 'Col3' => 'Val3'}
+{'Col1' => 'Val4', 'Col2' => 'Val5\n\nOh my, newlines in the record!', 'Col3' => 'Val6'}
+```
+