(.require
 [library
  [lux (.except)
   ["$" documentation]
   [data
    ["[0]" text (.only \n)
     ["%" \\format (.only format)]]]
   [meta
    ["@" target]]]]
 [\\library
  ["[0]" /]])

(def .public documentation
  (List $.Documentation)
  (`` (`` (list ($.module /._
                          "")

                ($.definition /.creation)
                ($.definition /.creation?)
                ($.definition /.modification)
                ($.definition /.modification?)
                ($.definition /.deletion)
                ($.definition /.deletion?)
                ($.definition /.all)
                ($.definition /.not_being_watched)
                ($.definition /.cannot_poll_a_non_existent_directory)
                
                ($.definition /.Concern
                  "A particular concern to watch-out for.")

                ($.definition /.and
                  ""
                  [(and left right)])

                ($.definition (/.Watcher !)
                  "Machinery for watching a file-system for changes to files and directories.")

                ($.definition /.polling
                  (format "A simple watcher that works for any file-system."
                          "Polls files and directories to detect changes.")
                  [(polling fs)])

                ($.definition /.mock
                  (format "A fake/emulated watcher."
                          \n "Must be given a path separator for the file-system.")
                  [(mock separator)])

                (,, (for @.jvm (,, (these ($.definition /.default
                                            "The default watcher for the default file-system.")))
                         (,, (these))))
                ))))
