From af82d46476e20be5639675368d6e64bd2c7c11e9 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 5 Aug 2025 16:23:47 +0100 Subject: [PATCH] lexicons: add sh.tangled.string Change-Id: novyxoznpmpvmuoqtxrnzmnskxmquszu Signed-off-by: oppiliappan --- api/tangled/cbor_gen.go | 232 +++++++++++++++++++++++++++++++++++ api/tangled/tangledstring.go | 25 ++++ cmd/gen.go | 1 + lexicons/string/string.json | 40 ++++++ 4 files changed, 298 insertions(+) create mode 100644 api/tangled/tangledstring.go create mode 100644 lexicons/string/string.json diff --git a/api/tangled/cbor_gen.go b/api/tangled/cbor_gen.go index a1117f4..eba0337 100644 --- a/api/tangled/cbor_gen.go +++ b/api/tangled/cbor_gen.go @@ -8423,3 +8423,235 @@ func (t *SpindleMember) UnmarshalCBOR(r io.Reader) (err error) { return nil } +func (t *String) MarshalCBOR(w io.Writer) error { + if t == nil { + _, err := w.Write(cbg.CborNull) + return err + } + + cw := cbg.NewCborWriter(w) + + if _, err := cw.Write([]byte{165}); err != nil { + return err + } + + // t.LexiconTypeID (string) (string) + if len("$type") > 1000000 { + return xerrors.Errorf("Value in field \"$type\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { + return err + } + if _, err := cw.WriteString(string("$type")); err != nil { + return err + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.string"))); err != nil { + return err + } + if _, err := cw.WriteString(string("sh.tangled.string")); err != nil { + return err + } + + // t.Contents (string) (string) + if len("contents") > 1000000 { + return xerrors.Errorf("Value in field \"contents\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("contents"))); err != nil { + return err + } + if _, err := cw.WriteString(string("contents")); err != nil { + return err + } + + if len(t.Contents) > 1000000 { + return xerrors.Errorf("Value in field t.Contents was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Contents))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Contents)); err != nil { + return err + } + + // t.Filename (string) (string) + if len("filename") > 1000000 { + return xerrors.Errorf("Value in field \"filename\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("filename"))); err != nil { + return err + } + if _, err := cw.WriteString(string("filename")); err != nil { + return err + } + + if len(t.Filename) > 1000000 { + return xerrors.Errorf("Value in field t.Filename was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Filename))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Filename)); err != nil { + return err + } + + // t.CreatedAt (string) (string) + if len("createdAt") > 1000000 { + return xerrors.Errorf("Value in field \"createdAt\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil { + return err + } + if _, err := cw.WriteString(string("createdAt")); err != nil { + return err + } + + if len(t.CreatedAt) > 1000000 { + return xerrors.Errorf("Value in field t.CreatedAt was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.CreatedAt)); err != nil { + return err + } + + // t.Description (string) (string) + if len("description") > 1000000 { + return xerrors.Errorf("Value in field \"description\" was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("description"))); err != nil { + return err + } + if _, err := cw.WriteString(string("description")); err != nil { + return err + } + + if len(t.Description) > 1000000 { + return xerrors.Errorf("Value in field t.Description was too long") + } + + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Description))); err != nil { + return err + } + if _, err := cw.WriteString(string(t.Description)); err != nil { + return err + } + return nil +} + +func (t *String) UnmarshalCBOR(r io.Reader) (err error) { + *t = String{} + + cr := cbg.NewCborReader(r) + + maj, extra, err := cr.ReadHeader() + if err != nil { + return err + } + defer func() { + if err == io.EOF { + err = io.ErrUnexpectedEOF + } + }() + + if maj != cbg.MajMap { + return fmt.Errorf("cbor input should be of type map") + } + + if extra > cbg.MaxLength { + return fmt.Errorf("String: map struct too large (%d)", extra) + } + + n := extra + + nameBuf := make([]byte, 11) + for i := uint64(0); i < n; i++ { + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) + if err != nil { + return err + } + + if !ok { + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { + return err + } + continue + } + + switch string(nameBuf[:nameLen]) { + // t.LexiconTypeID (string) (string) + case "$type": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.LexiconTypeID = string(sval) + } + // t.Contents (string) (string) + case "contents": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Contents = string(sval) + } + // t.Filename (string) (string) + case "filename": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Filename = string(sval) + } + // t.CreatedAt (string) (string) + case "createdAt": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.CreatedAt = string(sval) + } + // t.Description (string) (string) + case "description": + + { + sval, err := cbg.ReadStringWithMax(cr, 1000000) + if err != nil { + return err + } + + t.Description = string(sval) + } + + default: + // Field doesn't exist on this type, so ignore it + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { + return err + } + } + } + + return nil +} diff --git a/api/tangled/tangledstring.go b/api/tangled/tangledstring.go new file mode 100644 index 0000000..0644c71 --- /dev/null +++ b/api/tangled/tangledstring.go @@ -0,0 +1,25 @@ +// Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT. + +package tangled + +// schema: sh.tangled.string + +import ( + "github.com/bluesky-social/indigo/lex/util" +) + +const ( + StringNSID = "sh.tangled.string" +) + +func init() { + util.RegisterType("sh.tangled.string", &String{}) +} // +// RECORDTYPE: String +type String struct { + LexiconTypeID string `json:"$type,const=sh.tangled.string" cborgen:"$type,const=sh.tangled.string"` + Contents string `json:"contents" cborgen:"contents"` + CreatedAt string `json:"createdAt" cborgen:"createdAt"` + Description string `json:"description" cborgen:"description"` + Filename string `json:"filename" cborgen:"filename"` +} diff --git a/cmd/gen.go b/cmd/gen.go index b484de7..2e07c0e 100644 --- a/cmd/gen.go +++ b/cmd/gen.go @@ -50,6 +50,7 @@ func main() { tangled.RepoPullStatus{}, tangled.Spindle{}, tangled.SpindleMember{}, + tangled.String{}, ); err != nil { panic(err) } diff --git a/lexicons/string/string.json b/lexicons/string/string.json new file mode 100644 index 0000000..9ac59db --- /dev/null +++ b/lexicons/string/string.json @@ -0,0 +1,40 @@ +{ + "lexicon": 1, + "id": "sh.tangled.string", + "needsCbor": true, + "needsType": true, + "defs": { + "main": { + "type": "record", + "key": "tid", + "record": { + "type": "object", + "required": [ + "filename", + "description", + "createdAt", + "contents" + ], + "properties": { + "filename": { + "type": "string", + "maxGraphemes": 140, + "minGraphemes": 1 + }, + "description": { + "type": "string", + "maxGraphemes": 280 + }, + "createdAt": { + "type": "string", + "format": "datetime" + }, + "contents": { + "type": "string", + "minGraphemes": 1 + } + } + } + } + } +} -- 2.43.0