forked from haskell-hvr/missingh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
245 lines (161 loc) · 8.44 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
-------------------------
What is MissingH?
-------------------------
It's a collection of Haskell-related utilities. It is an extension of my
earlier work developing MissingLib for OCaml. You can download
MissingH from http://software.complete.org/missingh. There is a mirror, with
a few days' lag, at http://ftp.debian.org/debian/pool/main/m/missingh.
-------------------------
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.
** THIS IS CURRENTLY BETA-QUALITY CODE; MAJOR API FLUCTUATIONS MAY YET OCCUR.
-------------------------
Quick Start
-------------------------
See the file INSTALL (Linux/Unix/BSD/Posix) or INSTALL-win.txt (Windows).
-------------------------
Usage in programs
-------------------------
You can simply use -package MissingH in most compilers to enable
this library.
Hugs users will need to use -98 +o to use certain modules.
GHC users will need to use this for certain modules:
-fallow-overlapping-instances -fallow-undecidable-instances \
-fglasgow-exts
The API docs can be built with "make doc", or you can find them at:
http://quux.org/devel/missingh
-------------------------
Author & Homepage
-------------------------
MissingH was written by John Goerzen <[email protected]>.
The latest version may be obtained at:
http://software.complete.org/missingh
Documentation is also available on that page.
This program is copyrighted under the terms of the GNU General Public License.
See the COPYRIGHT and COPYING files for more details.
If the GPL is unacceptable for your uses, please e-mail me; alternative
terms can be negotiated for your project.
Certain code in MissingH was written by third parties. Licenses of
these components may vary and are stated in COPYRIGHT. All code in
MissingH is GPL-compatible, and the work as a whole may be distributed
as a GPL'd work.
arch-tag: general information