 
 (defn str->tuples
   "Given a delimited text, where each token is again a delimited text, tokenize it and return a vector of maps. By
-  default, the outer delimiter is a comma and the inner delimiter is a colon."
+  default, the outer delimiter is a comma and the inner delimiter is a colon.
+  Example:
+  => (str->tuples [:name :age :gender] :foo \"joe: 30: male, sue: 35: female, max: 40: male\")
+  [{:name \"joe\" :age \"30\" :gender \"male\"}
+   {:name \"sue\" :age \"35\" :gender \"female\"}
+   {:name \"max\" :age \"40\" :gender \"male\"}]"
   ([outer-tokenizer inner-tokenizer ks the-key text]
     (->> (str->nested outer-tokenizer inner-tokenizer the-key text)
       (mapv #(zipmap ks %))))


(defn str->nested
  "Given a delimited text, where each token is again a delimited text, tokenize it and return a vector of nested
  vectors of tokens. By default, the outer delimiter is a comma and the inner delimiter is a colon."
  ([outer-tokenizer inner-tokenizer the-key text]
    (str->coll
      outer-tokenizer



(defn str->vec
  "Given a delimited text, tokenize it and return a vector of tokens. By default, the delimiter is a comma.
  Example:
  => (str-vec :foo \"a, b, c\")
  [\"a\" \"b\" \"c\"]"
  ([tokenizer the-key text]
    (str->coll tokenizer identity the-key text))
  ([the-key text]
