Skip to content

hapytex/unicode-tricks

Repository files navigation

unicode-tricks

Build Status of the package by GitHub actions Build Status of the package by Hackage Hackage version badge

Based on the unicode package by Henning Thielemann.

This library aims to provide functionality to make working with certain blocks of unicode characters more effective.

Currently the package contains the following modules:

  • Data.Char.Core: a module that defines common data structures;
  • Data.Char.BallotBox: rendering boxes that are empty, with a checkmark, or a cross;
  • Data.Char.Block: rendering a 2-by-2 block by a matrix of Bools;
  • Data.Char.Block.Sextant: render blocks that consists out of a 3 × 2 raster;
  • Data.Char.Brackets: determine if a character is a bracket, and find the corresponding bracket;
  • Data.Char.Braille: a module to render Braille characters with six or eight dot cells;
  • Data.Char.Card: a module to work with playing cards;
  • Data.Char.Chess: a module to render chess pieces (and some variants) in unicode;
  • Data.Char.Control: a module that visualizes control characters;
  • Data.Char.Combining: combine a character with a (sequence of) combining characters (diacritics, geometrical shapes, etc.);
  • Data.Char.Currency: translate currencies to Unicode characters and vice versa;
  • Data.Char.Dice: a module to render die unicode characters;
  • Data.Char.Domino: a module to render domino unicode characters;
  • Data.Char.Egyptian: a module that defines pattern synonyms for ancient Egyptian hieroglyphs;
  • Data.Char.Emoji.*: modules that provide functions to render emoji characters (flags, objects, persons, etc.);
  • Data.Char.Enclosed: functions to convert alphanumerical characters to characters where these are enclosed by circles, squares, parenthesis, etc.;
  • Data.Char.Frame: typesetting frame elements. Lines of the frames can be Light or Heavy, and there are additional options to use arcs for corners;
  • Data.Char.Math.*: a set of modules to render mathematical symbols and text, for example in Fraktur, Blackboard bold, etc.
  • Data.Char.Number.Duodecimal: a module to work with duodecimal numbers;
  • Data.Char.Number.Egyptian: a module to render ancient Egyptian numerals;
  • Data.Char.Number.Mayan: a module to render Mayan numerals;
  • Data.Char.Number.Roman: a module to render Roman numerals;
  • Data.Char.Number.Segmented: a module to render numbers on a seven-segment display;
  • Data.Char.Number.Tally: a module to render (Western) tally marks;
  • Data.Char.Number.VulgarFraction: a module to use vulgar fractions defined in the Unicode standard;
  • Data.Char.Private: characters belonging to the private usage area;
  • Data.Char.Private.Klingon: Klingon script characters;
  • Data.Char.Small: making use of subscript and superscript in unicode, and for example formatting Ratio objects; and
  • Data.Char.Tag: a unicode block that is used as emoji modifiers for regional flags.

unicode-tricks is safe Haskell

The modules are marked with the {-# LANGUAGE Safe #-} pragma, it thus provides guarantees, for example about not using unsafePerformIO.

Contribute

You can contribute by making a pull request on the GitHub repository.

You can contact the package maintainer by sending a mail to [email protected].

Contributors:

  • @wismill found a bug and added tests for the Data.Char.Math as well as the Data.Char.Number.Segmented module.