aboutsummaryrefslogtreecommitdiff
path: root/object/tree_parse.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-25 14:49:17 +0000
committerGravatar Runxi Yu2026-03-25 15:02:22 +0000
commit7847657e0820af98120031f719b8ede635ad8c07 (patch)
tree8c4439c78f72f1382edc809b49be33115847b6e7 /object/tree_parse.go
parentobject: Remove type.go (diff)
signatureNo signature
object: Split each object type into its own package v0.1.108
Diffstat (limited to 'object/tree_parse.go')
-rw-r--r--object/tree_parse.go58
1 files changed, 0 insertions, 58 deletions
diff --git a/object/tree_parse.go b/object/tree_parse.go
deleted file mode 100644
index 944dc538..00000000
--- a/object/tree_parse.go
+++ /dev/null
@@ -1,58 +0,0 @@
-package object
-
-import (
- "bytes"
- "fmt"
- "strconv"
-
- objectid "codeberg.org/lindenii/furgit/object/id"
-)
-
-// ParseTree decodes a tree object body.
-func ParseTree(body []byte, algo objectid.Algorithm) (*Tree, error) {
- var entries []TreeEntry
-
- i := 0
- for i < len(body) {
- space := bytes.IndexByte(body[i:], ' ')
- if space < 0 {
- return nil, fmt.Errorf("object: tree: missing mode terminator")
- }
-
- modeBytes := body[i : i+space]
- i += space + 1
-
- nul := bytes.IndexByte(body[i:], 0)
- if nul < 0 {
- return nil, fmt.Errorf("object: tree: missing name terminator")
- }
-
- nameBytes := body[i : i+nul]
- i += nul + 1
-
- idEnd := i + algo.Size()
- if idEnd > len(body) {
- return nil, fmt.Errorf("object: tree: truncated child object id")
- }
-
- id, err := objectid.FromBytes(algo, body[i:idEnd])
- if err != nil {
- return nil, err
- }
-
- i = idEnd
-
- mode, err := strconv.ParseUint(string(modeBytes), 8, 32)
- if err != nil {
- return nil, fmt.Errorf("object: tree: parse mode: %w", err)
- }
-
- entries = append(entries, TreeEntry{
- Mode: FileMode(mode),
- Name: append([]byte(nil), nameBytes...),
- ID: id,
- })
- }
-
- return &Tree{Entries: entries}, nil
-}