The misfortune package

[ Tags: console, game, library, program, public-domain ] [ Propose Tags ]

fortune-mod clone, in library and executable form.


[Skip to Readme]

Properties

Versions 0.1, 0.1.1.1, 0.1.1.2
Dependencies base (>=3 && <5), bytestring, cereal, directory, filepath, knob, monad-loops, random-fu (>=0.2.2), regex-base, regex-pcre, semigroups, text, utf8-string, vector [details]
License PublicDomain
Author James Cook <mokus@deepbondi.net>
Maintainer James Cook <mokus@deepbondi.net>
Category Console, Game
Home page https://github.com/mokus0/misfortune
Source repository head: git clone https://github.com/mokus0/misfortune.git
Uploaded Thu Mar 22 01:48:31 UTC 2012 by JamesCook
Distributions Debian:0.1.1.2, NixOS:0.1.1.2, Tumbleweed:0.1.1.2
Executables misfortune-strfile, misfortune
Downloads 2222 total (23 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for misfortune-0.1

[back to package description]

misfortune

This is a fortune-mod clone. In addition to the features generally expected of a fortune program, this can be used as a Haskell library (import Data.Fortune) and also supports UTF-8 fortune files, configurable search paths, automatic merging of fortune databases with the same name (so you can have a local fortunes folder that just adds to existing fortune databases), filtering fortunes by line lengths, and a "print fortune matching regex" mode (instead of just "print all fortunes matching regex" mode).

Usage

Most of the command-line flags from fortune work with misfortune as well. To just print a fortune, run:

misfortune

To index a new fortune file (or update the index on an existing one), run:

misfortune-strfile path/to/file

Note that misfortune uses a different format for its index files than fortune does. If there is an existing fortune-mod index file, it will not be overwritten.

To use the fortune API in your Haskell programs:

import Data.Fortune
import qualified Data.Text as T

main = do
    f <- openFortuneFile "pangrams" '%' True
    
    appendFortune f (T.pack "The quick brown fox jumps over the lazy dog.")
    appendFortune f (T.pack "Quick blowing zephyrs vex daft Jim.")
    
    closeFortuneFile f
    
    putStrLn =<< randomFortune ["pangrams"]

This example will create or append to a file "pangrams" in the working directory, and create or update the corresponding index file "pangrams.dat". It then closes that file and requests a random fortune from all databases named "pangrams" in the search path - so it will either print one of the two just written or one found in another "pangrams" file. Every eligible fortune is equally likely.

Installation

Get the current release from Hackage:

cabal install misfortune

Or build the latest version from git:

git clone https://github.com/mokus0/misfortune.git
cd misfortune
cabal install