-(ns clj-pail.partitioner)
+(ns clj-pail.partitioner
+  "Utilties for defining vertically partitioned Pail structures.")
+
+;; ## Protocol
 
 (defprotocol VerticalPartitioner
   "A protocol for vertically partitioning a PailStructure. Partitioners can be composed to build

           (rest dirs)])                      ; return remaining directories"))


(defn make-partition*
  "Calls the underlying protocol implementation. This can be used as a mocking point to unit test
  implementations of `make-partition` that compose other partitioners."

  [partitioner dirs]
  (validate partitioner dirs))


;; ## Facade Interface
;;
;; The facade interface should be used when consuming a `VerticalPartitioner`. It handles the
;; necessary data conversions between the protocol functions and what is needed for public
;; consumption.

(defn vertical-partition
  "Returns the vertical partitions for an object as a list of strings."
