Copyright | Copyright (C) 2009 John MacFarlane Gwern Branwen Sebastiaan Visser |
---|---|
License | BSD 3 |
Maintainer | John MacFarlane <jgm@berkeley.edu> |
Stability | alpha |
Portability | GHC 6.10 required |
Safe Haskell | Safe |
Language | Haskell98 |
Generic utility functions for working with filestores.
Synopsis
- modify :: Contents a => FileStore -> FilePath -> RevisionId -> Author -> Description -> a -> IO (Either MergeInfo ())
- create :: Contents a => FileStore -> FilePath -> Author -> Description -> a -> IO ()
- type Diff a = PolyDiff a a
- data PolyDiff a b
- diff :: FileStore -> FilePath -> Maybe RevisionId -> Maybe RevisionId -> IO [Diff [String]]
- searchRevisions :: FileStore -> Bool -> FilePath -> Description -> IO [Revision]
- smartRetrieve :: Contents a => FileStore -> Bool -> FilePath -> Maybe String -> IO a
- richDirectory :: FileStore -> FilePath -> IO [(Resource, Either String Revision)]
Documentation
:: Contents a | |
=> FileStore | |
-> FilePath | Resource to create. |
-> RevisionId | ID of previous revision that is being modified. |
-> Author | Author of change. |
-> Description | Description of change. |
-> a | Contents of resource. |
-> IO (Either MergeInfo ()) |
Modify a named resource in the filestore. Like save, except that a revision ID
must be specified. If the resource has been modified since the specified revision,
Left
merge information is returned. Otherwise, Right
the new contents are saved.
:: Contents a | |
=> FileStore | |
-> FilePath | Resource to create. |
-> Author | Author of change. |
-> Description | Description of change. |
-> a | Contents of resource. |
-> IO () |
Like save, but first verify that the resource name is new. If not, throws a ResourceExists
error.
A value is either from the First
list, the Second
or from Both
.
Both
contains both the left and right values, in case you are using a form
of equality that doesn't check all data (for example, if you are using a
newtype to only perform equality on side of a tuple).
:: FileStore | |
-> FilePath | Resource name to get diff for. |
-> Maybe RevisionId |
|
-> Maybe RevisionId |
|
-> IO [Diff [String]] |
Return a unified diff of two revisions of a named resource.
Format of the diff is a list [(Diff, [String])]
, where
DI
is F
(in first document only), S
(in second only),
or B
(in both), and the list is a list of lines (without
newlines at the end).
:: FileStore | |
-> Bool | When true the description must match exactly, when false partial hits are allowed. |
-> FilePath | The resource to search history for. |
-> Description | Revision description to search for. |
-> IO [Revision] |
Return a list of all revisions that are saved with the given description or with a part of this description.
:: Contents a | |
=> FileStore | |
-> Bool |
|
-> FilePath | Resource name to retrieve. |
-> Maybe String |
|
-> IO a |
Try to retrieve a resource from the repository by name and possibly a revision identifier. When retrieving a resource by revision identifier fails this function will try to fetch the latest revision for which the description matches the given string.