Hi everyone

I’m pleased to announce the release of semantic-csv 
<https://github.com/metasoarous/semantic-csv>, a humble library for working 
with CSV data.

Existing Clojure libraries for working with CSV data (clojure.data.csv 
<https://github.com/clojure/data.csv> and clojure-csv 
<https://github.com/davidsantiago/clojure-csv> being the most notable), 
only concern themselves with the *syntax* of CSV; They take CSV text, 
transform it into a collection of vectors of string values (or when 
writing, write from a sequence of string vectors), and that’s it. Semantic 
CSV takes the next step by giving you tools for addressing the *semantics* 
of your data, helping you put it into the form that better reflects what it 
means, and make it easier to work with.
Features 
   
   - Absorb header row as a vector of column names, and return remaining 
   rows as maps of column-name -> row-val 
   - Write from a collection of maps, given a header 
   - Apply casting/formatting functions by column name, while reading or 
   writing 
   - Remove commented out lines (by default, those starting with #) 
   - Compatible with any CSV parsing library returning/writing a sequence 
   of row vectors 
   - (SOON) A “sniffer” that reads in N lines, and uses them to guess 
   column types 

Structure 

Semantic CSV is structured around a number of composable processing 
functions for transforming data as it comes out of or goes into a CSV file. 
This leaves room for you to use whatever parsing/formatting tools you like, 
reflecting a nice decoupling of grammar and semantics. However, a couple of 
convenience functions are also provided which wrap these individual steps 
in an opinionated but customizable manner, helping you move quickly while 
prototyping or working at the REPL.
Where you come in 

Semantic CSV is still in alpha, but I’m excited to start getting people 
using it and providing feedback. I’m particularly interested at this phase 
in hearing what people think of the overall structure, what pain points 
come up, and what features would be nice. And bugs of course. Feel free to 
submit feedback via Github issues 
<https://github.com/metasoarous/semantic-csv/issues> or the project chat 
room <https://gitter.im/metasoarous/semantic-csv>.

https://github.com/metasoarous/semantic-csv


Thanks for your time; I hope you find this useful.

Chris Small 
​

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to