(.using
  [library
   [lux "*"
    ["$" documentation {"+" documentation:}]
    [data
     ["[0]" text
      ["%" format {"+" format}]]]
    [macro
     ["[0]" template]]
    [math
     [number
      ["[0]" nat ("hex#[0]" hex)]]]]]
  [\\library
   ["[0]" /]])

(documentation: /.Block
  "A block of valid unicode characters.")

(documentation: /.block
  ""
  [(block start additional)])

(documentation: /.within?
  ""
  [(within? block char)])

(template [<name>]
  [(documentation: <name>
     (let [[_ name] (symbol <name>)]
       (format (hex#encoded (/.start <name>))
               "-" (hex#encoded (/.end <name>))
               " | " (text.replaced "_" " " name))))]

  [/.basic_latin]
  [/.latin_1_supplement]
  [/.latin_extended_a]
  [/.latin_extended_b]
  [/.ipa_extensions]
  [/.spacing_modifier_letters]
  [/.combining_diacritical_marks]
  [/.greek_and_coptic]
  [/.cyrillic]
  [/.cyrillic_supplementary]
  [/.armenian]
  [/.hebrew]
  [/.arabic]
  [/.syriac]
  [/.thaana]
  [/.devanagari]
  [/.bengali]
  [/.gurmukhi]
  [/.gujarati]
  [/.oriya]
  [/.tamil]
  [/.telugu]
  [/.kannada]
  [/.malayalam]
  [/.sinhala]
  [/.thai]
  [/.lao]
  [/.tibetan]
  [/.myanmar]
  [/.georgian]
  [/.hangul_jamo]
  [/.ethiopic]
  [/.cherokee]
  [/.unified_canadian_aboriginal_syllabics]
  [/.ogham]
  [/.runic]
  [/.tagalog]
  [/.hanunoo]
  [/.buhid]
  [/.tagbanwa]
  [/.khmer]
  [/.mongolian]
  [/.limbu]
  [/.tai_le]
  [/.khmer_symbols]
  [/.phonetic_extensions]
  [/.latin_extended_additional]
  [/.greek_extended]
  [/.general_punctuation]
  [/.superscripts_and_subscripts]
  [/.currency_symbols]
  [/.combining_diacritical_marks_for_symbols]
  [/.letterlike_symbols]
  [/.number_forms]
  [/.arrows]
  [/.mathematical_operators]
  [/.miscellaneous_technical]
  [/.control_pictures]
  [/.optical_character_recognition]
  [/.enclosed_alphanumerics]
  [/.box_drawing]
  [/.block_elements]
  [/.geometric_shapes]
  [/.miscellaneous_symbols]
  [/.dingbats]
  [/.miscellaneous_mathematical_symbols_a]
  [/.supplemental_arrows_a]
  [/.braille_patterns]
  [/.supplemental_arrows_b]
  [/.miscellaneous_mathematical_symbols_b]
  [/.supplemental_mathematical_operators]
  [/.miscellaneous_symbols_and_arrows]
  [/.cjk_radicals_supplement]
  [/.kangxi_radicals]
  [/.ideographic_description_characters]
  [/.cjk_symbols_and_punctuation]
  [/.hiragana]
  [/.katakana]
  [/.bopomofo]
  [/.hangul_compatibility_jamo]
  [/.kanbun]
  [/.bopomofo_extended]
  [/.katakana_phonetic_extensions]
  [/.enclosed_cjk_letters_and_months]
  [/.cjk_compatibility]
  [/.cjk_unified_ideographs_extension_a]
  [/.yijing_hexagram_symbols]
  [/.cjk_unified_ideographs]
  [/.yi_syllables]
  [/.yi_radicals]
  [/.hangul_syllables]
  [/.high_surrogates]
  [/.high_private_use_surrogates]
  [/.low_surrogates]
  [/.private_use_area]
  [/.cjk_compatibility_ideographs]
  [/.alphabetic_presentation_forms]
  [/.arabic_presentation_forms_a]
  [/.variation_selectors]
  [/.combining_half_marks]
  [/.cjk_compatibility_forms]
  [/.small_form_variants]
  [/.arabic_presentation_forms_b]
  [/.halfwidth_and_fullwidth_forms]
  [/.specials]
  [/.basic_latin/decimal]
  [/.basic_latin/upper]
  [/.basic_latin/lower]
  )

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [..Block
             ..block
             ..within?
             ..basic_latin
             ..latin_1_supplement
             ..latin_extended_a
             ..latin_extended_b
             ..ipa_extensions
             ..spacing_modifier_letters
             ..combining_diacritical_marks
             ..greek_and_coptic
             ..cyrillic
             ..cyrillic_supplementary
             ..armenian
             ..hebrew
             ..arabic
             ..syriac
             ..thaana
             ..devanagari
             ..bengali
             ..gurmukhi
             ..gujarati
             ..oriya
             ..tamil
             ..telugu
             ..kannada
             ..malayalam
             ..sinhala
             ..thai
             ..lao
             ..tibetan
             ..myanmar
             ..georgian
             ..hangul_jamo
             ..ethiopic
             ..cherokee
             ..unified_canadian_aboriginal_syllabics
             ..ogham
             ..runic
             ..tagalog
             ..hanunoo
             ..buhid
             ..tagbanwa
             ..khmer
             ..mongolian
             ..limbu
             ..tai_le
             ..khmer_symbols
             ..phonetic_extensions
             ..latin_extended_additional
             ..greek_extended
             ..general_punctuation
             ..superscripts_and_subscripts
             ..currency_symbols
             ..combining_diacritical_marks_for_symbols
             ..letterlike_symbols
             ..number_forms
             ..arrows
             ..mathematical_operators
             ..miscellaneous_technical
             ..control_pictures
             ..optical_character_recognition
             ..enclosed_alphanumerics
             ..box_drawing
             ..block_elements
             ..geometric_shapes
             ..miscellaneous_symbols
             ..dingbats
             ..miscellaneous_mathematical_symbols_a
             ..supplemental_arrows_a
             ..braille_patterns
             ..supplemental_arrows_b
             ..miscellaneous_mathematical_symbols_b
             ..supplemental_mathematical_operators
             ..miscellaneous_symbols_and_arrows
             ..cjk_radicals_supplement
             ..kangxi_radicals
             ..ideographic_description_characters
             ..cjk_symbols_and_punctuation
             ..hiragana
             ..katakana
             ..bopomofo
             ..hangul_compatibility_jamo
             ..kanbun
             ..bopomofo_extended
             ..katakana_phonetic_extensions
             ..enclosed_cjk_letters_and_months
             ..cjk_compatibility
             ..cjk_unified_ideographs_extension_a
             ..yijing_hexagram_symbols
             ..cjk_unified_ideographs
             ..yi_syllables
             ..yi_radicals
             ..hangul_syllables
             ..high_surrogates
             ..high_private_use_surrogates
             ..low_surrogates
             ..private_use_area
             ..cjk_compatibility_ideographs
             ..alphabetic_presentation_forms
             ..arabic_presentation_forms_a
             ..variation_selectors
             ..combining_half_marks
             ..cjk_compatibility_forms
             ..small_form_variants
             ..arabic_presentation_forms_b
             ..halfwidth_and_fullwidth_forms
             ..specials
             ..basic_latin/decimal
             ..basic_latin/upper
             ..basic_latin/lower
             ($.default /.monoid)
             ($.default /.start)
             ($.default /.end)
             ($.default /.size)
             ($.default /.equivalence)
             ($.default /.hash)]
            []))
