Introduction:
SCCSVParser is a simple framework for reading CSV (Comma Separated Values) data files into arbitrary high-level objects.  It is based on a design which uses a user-provided factory to create and connect objects representing the data fields and records in the file.  As examples of how to do this and to cover many common uses of the framework, a factory which populates an array with dictionaries and a factory which builds an XML tree of the data are provided as part of the framework.  The included test program "CSV Viewer" uses these two factories to provide basic viewing and CSV-to-XML transcoding.

The full source code for both the SCCSVParser.framework and CSV Viewer.app are provided in the included "Source Code" directory.  For additional convenience, the Doxygen-generated documentation for the SCCSVParser framework is included in the "Documentation" directory.  The source for both projects is provided under the MIT License and is copyright 2007 Spectral Class (author:  Jeff Disher).


Limitations:
-testing with damaged input has been minimal so, although we would expect damage input to be identified, it will simply abort the parser without using any heuristic to re-attempt future records in the file
-the parser works with an assumption that the incoming data is in an ASCII encoding.  Changing this would require expanding the API to allow the user code to specify the encoding of incoming data and would also require building a complicated encoding-aware buffering mechanism on top of the NSInputStream which seemed like more trouble than it was worth (and very time consuming to test), given the rare nature of non-ASCII CSV (or CSV in general)


Contacting Spectral Class:
Company web site:  http://www.spectralclass.com/
Contact E-Mail:  contact@spectralclass.com


MIT License:
 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 
 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 License available:  http://www.opensource.org/licenses/mit-license.html
