aboutsummaryrefslogtreecommitdiff
path: root/objecttype/name.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-06 10:44:22 +0800
committerGravatar Runxi Yu2026-03-06 10:44:22 +0800
commitbf70c5552d9c00b59ed271d0c8237c1c944ed074 (patch)
tree673be570705ca1f7bf71c307c6f0486a0bbc967d /objecttype/name.go
parentref: Split files (diff)
signatureNo signature
objecttype: Split files
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
+ }
+}