Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hapytex/unicode-tricks

Functions to work with unicode characters.
https://github.com/hapytex/unicode-tricks

characters haskell string unicode unicode-characters

Last synced: 2 months ago
JSON representation

Functions to work with unicode characters.

Awesome Lists containing this project

README

        

# unicode-tricks

[![Build Status of the package by GitHub actions](https://github.com/hapytex/unicode-tricks/actions/workflows/build-ci.yml/badge.svg)](https://github.com/hapytex/unicode-tricks/actions/workflows/build-ci.yml)
[![Build Status of the package by Hackage](https://matrix.hackage.haskell.org/api/v2/packages/unicode-tricks/badge)](https://matrix.hackage.haskell.org/#/package/unicode-tricks)
[![Hackage version badge](https://img.shields.io/hackage/v/unicode-tricks.svg)](https://hackage.haskell.org/package/unicode-tricks)

Based on the [**`unicode`** package](https://hackage.haskell.org/package/unicode) 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 `Bool`s;
- **`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](https://en.wikipedia.org/wiki/Duodecimal);
- **`Data.Char.Number.Egyptian`**: a module to render [ancient Egyptian numerals](https://en.wikipedia.org/wiki/Egyptian_numerals);
- **`Data.Char.Number.Mayan`**: a module to render [Mayan numerals](https://en.wikipedia.org/wiki/Maya_numerals);
- **`Data.Char.Number.Roman`**: a module to render [Roman numerals](https://en.wikipedia.org/wiki/Roman_numerals);
- **`Data.Char.Number.Segmented`**: a module to render numbers on a [seven-segment display](https://en.wikipedia.org/wiki/Seven-segment_display);
- **`Data.Char.Number.Tally`**: a module to render [(Western) tally marks](https://en.wikipedia.org/wiki/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`](https://begriffs.com/posts/2015-05-24-safe-haskell.html).

## Contribute

You can contribute by making a pull request on the [*GitHub
repository*](https://github.com/hapytex/unicode-tricks).

You can contact the package maintainer by sending a mail to
[`[email protected]`](mailto:[email protected]).

Contributors:

- [`@wismill`](https://github.com/wismill) found a bug and added tests for the
`Data.Char.Math` as well as the `Data.Char.Number.Segmented` module.