-- |A Sexpr is an S-expressionin the style of Rivest's Canonical
-- S-expressions.  Atoms may be of any type, but String and
-- ByteString have special support.  Rivest's implementation of
-- S-expressions is unusual in supporting MIME type hints for each
-- atom.  See http://people.csail.mit.edu/rivest/Sexp.txt

module Codec.Sexpr (-- * Basics
                             Sexpr,
                             isAtom,
                             isList,
                             atom,
                             list,
                             unAtom,
                             unList,
                             -- * Hinted Atoms
                             hintedAtom,
                             hint,
                             defaultHint,
                             -- * Character predicates to support encoding
                             isTokenChar,isInitialTokenChar,isQuoteableChar,
                             -- * Transformations
                             fold,
                             -- * String printers
                             canonicalString,
                             basicString,
                             advancedString,
                             -- * ShowS printers
                             canonical,
                             -- * Doc pretty printers
                             basic,
                             advanced,
                             -- * Put binary printers
                             putCanonical, putCanonicalBS,
                             -- * Parsers
                             readSexpr,
                             readSexprString,
                             readCanonicalSexprString,
                             advancedSexpr,
                             canonicalSexpr
                             ) where

import Codec.Sexpr.Internal
import Codec.Sexpr.Parser
import Codec.Sexpr.Printer