... This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
... If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.

(.require
 [library
  [lux (.except)
   ["$" documentation]
   [meta
    [macro
     ["[0]" template]]]]]
 [\\library
  ["[0]" /]])

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

            ($.definition /./1)
            ($.definition /./2)
            ($.definition /./4)
            ($.definition /./8)
            ($.definition /./16)
            ($.definition /./32)
            ($.definition /./64)
            ($.definition /./128)
            ($.definition /./256)
            ($.definition /./512)
            ($.definition /./1024)
            ($.definition /./2048)
            ($.definition /./4096)
            ($.definition /./%)
            ($.definition /.decimal)
            ($.definition /.equivalence)
            ($.definition /.hash)
            ($.definition /.order)
            ($.definition /.enum)
            ($.definition /.interval)
            ($.definition /.addition)
            ($.definition /.maximum)
            ($.definition /.minimum)
            ($.definition /.binary)
            ($.definition /.octal)
            ($.definition /.hex)
            ($.definition /.base_10)

            ($.definition /.=
              "Revolution equivalence."
              ($.example (' (= expected actual))))

            ($.definition /.<
              "Revolution less-than."
              ($.example (' (< reference it))))

            ($.definition /.<=
              "Revolution less-than or equal."
              ($.example (' (<= reference it))))

            ($.definition /.>
              "Revolution greater-than."
              ($.example (' (> reference it))))

            ($.definition /.>=
              "Revolution greater-than or equal."
              ($.example (' (>= reference it))))

            (,, (template.with [<name> <doc>]
                  [($.definition <name>
                     <doc>)]

                  [/.min "Revolution minimum."]
                  [/.max "Revolution maximum."]
                  ))

            (,, (template.with [<name> <doc>]
                  [($.definition <name>
                     <doc>)]

                  [/.+ "Revolution addition."]
                  [/.- "Revolution substraction."]
                  [/.* "Revolution multiplication."]
                  [/./ "Revolution division."]
                  [/.% "Revolution remainder."]
                  [/.ratio "Ratio between two revolutions."]
                  ))

            ($.definition /.up
              ""
              ($.example (' (up scale subject))))

            ($.definition /.down
              ""
              ($.example (' (down scale subject))))

            ($.definition /.reciprocal
              "Revolution reciprocal of a Natural."
              ($.example (' (reciprocal numerator))))
            )))
