miss-0: src/Data/Git/Object.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
{-|
Description: Manipulate git objects.
-}
module Data.Git.Object
(
ObjectType(..)
, Object(..)
, Blob(..)
, Tree(..)
, Commit(..)
, Tag(..)
, TreeEntry(..)
, asBlob
, asTree
, asCommit
, asTag
, buildObject
, buildLooseObject
, emptyTree
, emptyTreeSha
) where
import Data.Git.Internal.Object
-- | Try to view an 'Object' as a 'Blob'
asBlob :: Object -> Maybe Blob
asBlob (BlobObj b) = Just b
asBlob _ = Nothing
-- | Try to view an 'Object' as a 'Tree'
asTree :: Object -> Maybe Tree
asTree (TreeObj t) = Just t
asTree _ = Nothing
-- | Try to view an 'Object' as a 'Commit'
asCommit :: Object -> Maybe Commit
asCommit (CommitObj c) = Just c
asCommit _ = Nothing
-- | Try to view an 'Object' as a 'Tag'
asTag :: Object -> Maybe Tag
asTag (TagObj t) = Just t
asTag _ = Nothing
{-
-- | The type of an 'Object'.
objectType :: Object -> ObjectType
objectType BlobObj {} = BlobType
objectType TreeObj {} = TreeType
objectType CommitObj {} = CommitType
objectType TagObj {} = TagType
-}