aboutsummaryrefslogtreecommitdiff
path: root/objecttype/name.go
diff options
context:
space:
mode:
Diffstat (limited to 'objecttype/name.go')
-rw-r--r--objecttype/name.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/objecttype/name.go b/objecttype/name.go
new file mode 100644
index 00000000..870ac1e4
--- /dev/null
+++ b/objecttype/name.go
@@ -0,0 +1,42 @@
+package objecttype
+
+const (
+ typeNameBlob = "blob"
+ typeNameTree = "tree"
+ typeNameCommit = "commit"
+ typeNameTag = "tag"
+)
+
+// ParseName parses a canonical Git object type name.
+func ParseName(name string) (Type, bool) {
+ switch name {
+ case typeNameBlob:
+ return TypeBlob, true
+ case typeNameTree:
+ return TypeTree, true
+ case typeNameCommit:
+ return TypeCommit, true
+ case typeNameTag:
+ return TypeTag, true
+ default:
+ return TypeInvalid, false
+ }
+}
+
+// Name returns the canonical Git object type name.
+func Name(ty Type) (string, bool) {
+ switch ty {
+ case TypeBlob:
+ return typeNameBlob, true
+ case TypeTree:
+ return typeNameTree, true
+ case TypeCommit:
+ return typeNameCommit, true
+ case TypeTag:
+ return typeNameTag, true
+ case TypeInvalid, TypeFuture, TypeOfsDelta, TypeRefDelta:
+ return "", false
+ default:
+ return "", false
+ }
+}