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

(`` (def .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 /.frac)
            ($.definition /.equivalence)
            ($.definition /.hash)
            ($.definition /.order)
            ($.definition /.enum)
            ($.definition /.interval)
            ($.definition /.addition)
            ($.definition /.maximum)
            ($.definition /.minimum)
            ($.definition /.binary)
            ($.definition /.octal)
            ($.definition /.hex)
            ($.definition /.decimal)

            ($.definition /.=
              "Rev(olution) equivalence."
              [(= reference sample)])

            ($.definition /.<
              "Rev(olution) less-than."
              [(< reference sample)])

            ($.definition /.<=
              "Rev(olution) less-than or equal."
              [(<= reference sample)])

            ($.definition /.>
              "Rev(olution) greater-than."
              [(> reference sample)])

            ($.definition /.>=
              "Rev(olution) greater-than or equal."
              [(>= reference sample)])

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

                  [/.min "Rev(olution) minimum."]
                  [/.max "Rev(olution) maximum."]
                  ))

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

                  [/.+ "Rev(olution) addition."]
                  [/.- "Rev(olution) substraction."]
                  [/.* "Rev(olution) multiplication."]
                  [/./ "Rev(olution) division."]
                  [/.% "Rev(olution) remainder."]
                  [/.ratio "Ratio between two rev(olution)s."]
                  ))

            ($.definition /.up
              ""
              [(up scale subject)])

            ($.definition /.down
              ""
              [(down scale subject)])

            ($.definition /.reciprocal
              "Rev(olution) reciprocal of a Nat(ural)."
              [(reciprocal numerator)])
            )))
