Skip to content

haskell-hvr/missingh

Folders and files

NameName
Last commit message
Last commit date
Mar 2, 2025
Feb 16, 2010
Feb 16, 2010
Feb 12, 2022
Feb 12, 2022
Sep 11, 2023
Aug 2, 2023
May 14, 2019
Sep 11, 2023
Mar 2, 2025
May 29, 2016
Mar 2, 2025
Feb 12, 2022
Feb 16, 2010
May 3, 2024
May 19, 2019
Feb 16, 2010
Aug 10, 2011

Repository files navigation

-------------------------
What is MissingH?
-------------------------

It's a collection of Haskell-related utilities.  It is an extension of my
earlier work developing MissingLib for OCaml.

-------------------------
Major Features
-------------------------

 * Powerful Logging Framework for Haskell
   This framework provides a system of hierarchical loggers and
   modular handlers permitting fine-grained logging with a great deal
   of control and yet a simple and fast interface.  It's based on
   log4j for Java and logging for Python.

   Also included is a native-Haskell Syslog client.

 * Versatile modules to simplify everyday tasks:
   + FTP client library
   + E-mail client library
   + MIME types library to determine MIME types from files or URLs
   + Configuration file parser/generator

 * IO utilities make it easier to work with line-based text files
   and binary files

 * IO object virtualization so you can use one set of code to work
   on files of many different types

 * Filesystem virtualization so you can access various items with the
   same ease as your system's filesystem

 * Network utilities to streamline connections

 * List utilities including association list tools,
   list splitting, truncation, and delimiter joining

 * String utilities including removal of leading or trailing
   whitespace, joining, splitting, and truncation

 * Other utilities for threads, parsers, filenames, etc.

 * Printf utilities for formatting strings

 * GZip decompression

 * Hundreds of unit tests to verify proper functionality

 * DBM module abstraction

The following modules are are provided at this time, and more are
likely to follow:

MissingH.AnyDBM           * Generic DBM-like database infrastructure

MissingH.AnyDBM.          * Use a Map in the AnyDBM interface
 MapDBM

MissingH.AnyDBM.          * Simple persistent mapping storage
 StringDBM

MissingH.Bits             * Obtain individual bytes from a bitfield

MissingH.Cmd              * Trap errors during calls to external programs

MissingH.Checksum.*       * Utilities for calculating checksums over strings

MissingH.Compression.*    * Compression/decompression algorithms

MissingH.Compression.     * The Inflate algorithm from unzip and
  Inflate                   gunzip

MissingH.ConfigParser     * Configuration file parser
                          * Interpolation supported
                          * Compatible with Python and OCaml ConfigParsers

MissingH.Daemon           * Support for detaching from a terminal

MissingH.Debian           * Compare two Debian version numbers
                            [ does not require Debian to compile ]

MissingH.Debian.          * Parse debian/control files or output from
 ControlParser              various Debian commands that use the same format
                            [ does not require Debian to compile run ]

MissingH.Either           * Utilities for the Either type/Error monad

MissingH.Email.Parser     * Parse a flat string into component parts
                          * Walk through the components of a message

MissingH.Email.Sendmail   * Send a message via a locally-installed Sendmail
                            program

MisssingH.FileArchive.    * Support for analyzing and extracting
  GZip                      GZip archives

MissingH.Hsemail          * E-mail parsers

MissingH.HUnit            * Utilities for writing HUnit unit tests

MissingH.IO               * Copying data between files or handles
                          * Lazy operations on line input

MissingH.IO.Binary        * Binary I/O with Haskell Strings or [Word8]
                          * Lazy operations on binary blocks
                          * Binary file copy

MissingH.IO.HVFS          * Haskell Virtual File System
                          * Lets you emulate real filesystems and work
                            with multiple filesystems

MissingH.IO.StatCompat    * Utilities for simulating stat(2) structures
                            on home-grown filesystems or Windows

MissingH.IO.WindowsCompat * Provides POSIX-like functions on Windows

MissingH.List             * Association list manipulation
                          * List splitting and delimiter joining
                          * Truncation

MissingH.Logging          * Base logging types

MissingH.Logging.Handler  * Base handler types

MissingH.Logging.         * Logging to a stream
 Handler.Simple           * Logging to a file

MissingH.Logging.         * Logging to local or remote syslog
 Handler.Syslog           * No C library implementation required

MissingH.Logging.Logger   * Primary user interface to logging
                          * Documentation for the logging system

MissingH.Map              * Flip a Map and other utilities

MissingH.Maybe            * forceMaybe utility function

MissingH.MIMETypes        * Determine the MIME type of a file
                          * Guess an extension based on MIME type

MissingH.Network          * Establish TCP connections easily
                          * Trap SIGPIPE to prevent odd crashes

MissingH.Network.         * Versatile FTP client module
 FTP.Client               * Full support for uploads and downloads
                          * Passive or standard mode
                          * Lazy uploads and downloads
                          * Also provides low-level interface to issue
                            advanced server commands

MissingH.Network.         * Parse FTP protocol replies
 FTP.Parser

MissingH.Parsec           * Invert the sense of a parser

MissingH.Path             * Split apart filename components
                          * Recursive directory scanning
                          * Recursive file/directory removal (rm -r)

MissingH.Path.Glob        * Expand wildcards to obtain a list of files

MissingH.Path.WildPath    * Evaluate filenames or strings against wildcards
                          * Convert wildcards to regular expressions

MissingH.Regex.Pesco      * Perl-like regular expression operations and
                            operators

MissingH.Str              * Leading/trailing whitespace removal
                          * Beginning/ending tests
                          * Joining, splitting, and truncation

MissingH.Str.CSV          * Parsing of comma-separated value (CSV) files

MissingH.Threads          * Threaded callbacks

MissingH.Time             * Utilities for working with times and dates

MissingH.Time.            * Parsing of dates, similar to strptime() in C
 ParseDate

Wash.Mail.*               * Generate or parse e-mail messages
                          * Full support for headers and MIME

Wash.Utility.*            * Base64 codec
                          * Various Internet-related parsers

The entire library has no prerequisites save the Haskell standard
library and is designed to install without complexity on a variety of
systems.  It could also easily be embedded within your own source
trees so that users need not have it installed beforehand.

-------------------------
Author
-------------------------

MissingH was written by John Goerzen <jgoerzen@complete.org>.

arch-tag: general information