module Darcs.Patch.Format ( PatchListFormat(..), ListFormat(..) , FileNameFormat(..) ) where #include "gadts.h" -- |Showing and reading lists of patches This class allows us to control how -- lists of patches are formatted on disk. For legacy reasons V1 patches -- have their own special treatment (see 'ListFormat'). Other patch types -- use the default format which just puts them in a sequence without separators -- or any prelude/epilogue. -- -- This means that 'FL (FL p)' etc would be ambiguous, so there are -- no instances for 'FL p' or other list types. class PatchListFormat p where patchListFormat :: ListFormat p patchListFormat = ListFormatDefault -- | This type is used to tweak the way that lists of 'p' are shown for a -- given 'Patch' type 'p'. It is needed to maintain backwards compatibility -- for V1 and V2 patches. data ListFormat (p :: PATCHKIND) = ListFormatDefault -- ^Show and read lists without braces. | ListFormatV1 -- ^Show lists with a single layer of braces around the outside, -- except for singletons which have no braces. -- Read with arbitrary nested braces and parens and flatten them out. | ListFormatV2 -- ^Show lists without braces -- Read with arbitrary nested parens and flatten them out. data FileNameFormat = OldFormat | NewFormat