<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Home</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>Recent changes to Home</description><atom:link href="https://sourceforge.net/p/csvscalpar/wiki/Home/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 14 Jun 2016 12:26:52 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/csvscalpar/wiki/Home/feed" rel="self" type="application/rss+xml"/><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v12
+++ v13
@@ -5,6 +5,8 @@
 New features in version 2.0.1
 ========================
 Version 2.0.1 fixes a potential file resource leak.
+
+

 New features in version 2.0.0
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Tue, 14 Jun 2016 12:26:52 -0000</pubDate><guid>https://sourceforge.net13571e5f31a3b3de7876570306daafc282b8bdce</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v11
+++ v12
@@ -1,6 +1,11 @@
 csvscalpar (A CSV-file Scala parser)
 ========================
 The csvscalpar api is a Scala parser for CSV files targeted for Scala programmers.  The api was written to support [RFC-4180](https://tools.ietf.org/html/rfc4180) and offers the Scala programmer an alternative to using parsers written for other languages in the Java runtime.  
+
+New features in version 2.0.1
+========================
+Version 2.0.1 fixes a potential file resource leak.
+

 New features in version 2.0.0
 --------------------------------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Tue, 14 Jun 2016 12:26:33 -0000</pubDate><guid>https://sourceforge.net636acce927f16ae282d03a948b9ddd0412b60afe</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v10
+++ v11
@@ -73,12 +73,13 @@

   val lines = emitter.emit(fieldList, file_path_and_name.csv, delim, lineEnd)

+-------------

 If you find bugs in this software or have a suggestion for an enhancement,
 please email me and attach sample files that exhibit the behavior you observe.
 Please be specific and clear in your wording.  English is full of ambiguity.

-
+-------------

 This software is released under the Apache 2 license, version 2.0.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 15:50:02 -0000</pubDate><guid>https://sourceforge.net305c16ecfc689d8439b2dc34c9d0c1976ba4fb85</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v9
+++ v10
@@ -32,7 +32,6 @@

 Using these classes is as simple as this :

-:::scala
   val reader = new CsvFileReader
   // The call below returns  Vector[Vector[String]]  or throws an exception on
   // failure.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 15:46:36 -0000</pubDate><guid>https://sourceforge.netb940b5c0d49f913ec1ea998481bec4bdca2e3686</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v8
+++ v9
@@ -31,6 +31,7 @@
    as a csv file while handling embedded quotes and embedded field delimiters.

 Using these classes is as simple as this :
+
 :::scala
   val reader = new CsvFileReader
   // The call below returns  Vector[Vector[String]]  or throws an exception on
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 15:45:02 -0000</pubDate><guid>https://sourceforge.net63511fd0822a7a3db59c123101995a0b215df072</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -31,7 +31,7 @@
    as a csv file while handling embedded quotes and embedded field delimiters.

 Using these classes is as simple as this :
-
+:::scala
   val reader = new CsvFileReader
   // The call below returns  Vector[Vector[String]]  or throws an exception on
   // failure.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 15:44:36 -0000</pubDate><guid>https://sourceforge.net41325f65ce96ff7c1f57e38a2c27e5190f402400</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -3,6 +3,7 @@
 The csvscalpar api is a Scala parser for CSV files targeted for Scala programmers.  The api was written to support [RFC-4180](https://tools.ietf.org/html/rfc4180) and offers the Scala programmer an alternative to using parsers written for other languages in the Java runtime.

 New features in version 2.0.0
+--------------------------------------

 CsvFileReader and CsvLineReader have been augmented with methods that return
 results in a Vector[Vector[String]] so that the user can benefit from that
@@ -81,6 +82,19 @@

 This software is released under the Apache 2 license, version 2.0.

+   Copyright 2016 Clark Allen
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 14:34:24 -0000</pubDate><guid>https://sourceforge.net445031bc1f4166c76796dccaa2d10dace3854e8a</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -1,32 +1,83 @@
 csvscalpar (A CSV-file Scala parser)
 ========================
-The csvscalpar api is a Scala parser for CSV files targeted for Scala programmers.  The api was written to support [RFC-4180](https://tools.ietf.org/html/rfc4180) and offers the Scala programmer an alternative to using parsers written for other languages in the Java runtime.  The api is simple to use and offer two classes of interest to the programmer : 
+The csvscalpar api is a Scala parser for CSV files targeted for Scala programmers.  The api was written to support [RFC-4180](https://tools.ietf.org/html/rfc4180) and offers the Scala programmer an alternative to using parsers written for other languages in the Java runtime.  
+
+New features in version 2.0.0
+
+CsvFileReader and CsvLineReader have been augmented with methods that return
+results in a Vector[Vector[String]] so that the user can benefit from that
+immutable container with random access to its elements.  I have also added
+flavors of the parsing methods that produce Option[List[List[String]]] and
+Option[Vector[Vector[String]]] so that the user can chose to check for results
+instead of catching exceptions.  The user now has a choice how to handle error
+conditions when parsing a CSV file; Exceptions or Options.
+
+I have added an emitter to the library so that the user can start with either
+List[List[String]] or Vector[Vector[String]] and generate a CSV file from
+either of those types of containers.
+
+
+There are three classes of interest for the Scala programmer.

 1. CsvFileReader reads an input file into memory all at once and then
-   parses the file.  The path and filename are the only required
-   arguments to CsvFileReader's  readCsvFile() method.  The second argument
-   is a boolean specifying whether you want to preserve embedded line feeds
-   in text fields (the default is false; don't keep embedded line feeds).
-   The third argument is a character argument specifying an alternate
-   delimiter used in the file if the comma is not used as the delimiter.
+   parses the file.

-2. CsvLineReader reads an input file in chunks of 512 characters and processes
-   the buffered input.  The readCsvFile() method has the same signature as
-   its counterpart in the CsvFileReader class and fulfills the same goals.
+2. CsvLineReader reads an input file in chunks and proesses the buffered input.
    CsvLineReader is slower, but is intended to be easier on memory than
    CsvFileReader.
+
+3. CsvEmitter writes either a  Vector[Vector[String]]  or a  List[List[String]]
+   as a csv file while handling embedded quotes and embedded field delimiters.

 Using these classes is as simple as this :

   val reader = new CsvFileReader
-  // The call below returns  List[List[String]]
-  val result = reader.readCsvFile("path-and-file-name.csv")
+  // The call below returns  Vector[Vector[String]]  or throws an exception on
+  // failure.
+  val result = reader.readCsvFileRand("path-and-file-name.csv", false, ",")
+
+  // The call below returns  Option[Vector[Vector[String]]]
+  val result = reader.readCsvFileROpt("path-and-file-name.csv", false, ",")

 or use the line reader class...

   val reader = new CsvLineReader
-  // The call below returns  List[List[String]]
-  val result = reader.readCsvFile("path-and-file-name.csv")
+  // The call below returns  Vector[Vector[String]]  or throws an exception on
+  // failure.
+  val result = reader.readCsvFile("path-and-file-name.csv", false, ",")
+
+  // The call below returns  Option[Vector[Vector[String]]]
+  val result = reader.readCsvFileROpt("path-and-file-name.csv", false, ",")
+
+
+The principle methods of interest for the two reader classes have the same
+signature.
+
+
+The CsvEmitter class is similarly easy to use.
+
+  val emitter = new CsvEmitter
+  // call emit with :
+  //    1. fieldList  is  either Vector[Vector[String]]  or List[List[String]]
+  //    2. file_path_and_name.csv  is a String
+  //    3. delim  is a String representation of the field delimiter you want to
+  //       use.  You can use Defs.delim (it is just ",") as your default
+  //       choice if you like.
+  //    4. lineEnd  is a String representing the line ending sequence you would
+  //       like to use.  You can use constants defined in the Defs class to
+  //       help.
+  //           Defs.ls  is a unix/linux line ending character
+  //           Defs.crlf  is a Window line ending sequence
+  //           Defs.lineEnd  is the line ending sequence used on your current platform
+
+  val lines = emitter.emit(fieldList, file_path_and_name.csv, delim, lineEnd)
+
+
+If you find bugs in this software or have a suggestion for an enhancement,
+please email me and attach sample files that exhibit the behavior you observe.
+Please be specific and clear in your wording.  English is full of ambiguity.
+
+

 This software is released under the Apache 2 license, version 2.0.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 13:09:57 -0000</pubDate><guid>https://sourceforge.net4c9f34844ca687621f5bff615b711dfcde7be51c</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -33,14 +33,6 @@

-
-
-
-
-
-
-This is the default page, edit it as you see fit. To add a new page simply reference it within brackets, e.g.: [SamplePage].
-
 The wiki uses [Markdown](/p/csvscalpar/wiki/markdown_syntax/) syntax.

 [[members limit=20]]
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Fri, 20 May 2016 13:04:29 -0000</pubDate><guid>https://sourceforge.netec57b7448cce42adb92f1c9ffadb30e94cd641e3</guid></item><item><title>Home modified by Clark</title><link>https://sourceforge.net/p/csvscalpar/wiki/Home/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -10,7 +10,7 @@
    The third argument is a character argument specifying an alternate
    delimiter used in the file if the comma is not used as the delimiter.

-2. CsvLineReader reads an input file in chunks of 512 characters and proesses
+2. CsvLineReader reads an input file in chunks of 512 characters and processes
    the buffered input.  The readCsvFile() method has the same signature as
    its counterpart in the CsvFileReader class and fulfills the same goals.
    CsvLineReader is slower, but is intended to be easier on memory than
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Clark</dc:creator><pubDate>Tue, 08 Mar 2016 13:21:34 -0000</pubDate><guid>https://sourceforge.netebddcfa7fe42509fe3d1fc5af862dc500e262da0</guid></item></channel></rss>