feat: initial commit

This commit is contained in:
l.weber 2025-12-05 12:20:05 +01:00
commit a161b86c9a
705 changed files with 288162 additions and 0 deletions

89
vendor/sourcery.dny.nu/pana/emoji.go vendored Normal file
View file

@ -0,0 +1,89 @@
package pana
import (
"encoding/json"
"iter"
ld "sourcery.dny.nu/longdistance"
"sourcery.dny.nu/pana/vocab/mastodon"
as "sourcery.dny.nu/pana/vocab/w3/activitystreams"
)
type Emoji Object
// NewEmoji initialises a new Emoji.
func NewEmoji() *Emoji {
return &Emoji{
Properties: make(ld.Properties),
Type: []string{mastodon.TypeEmoji},
}
}
// Build finalises the Emoji.
func (e *Emoji) Build() Emoji {
return *e
}
// See [Object.GetID].
//
// Beware that Emoji's might not have an ID. This is used for instance-local
// emoji.
func (e *Emoji) GetID() string {
return (*Object)(e).GetID()
}
// See [Object.SetID].
func (e *Emoji) SetID(id string) *Emoji {
(*Object)(e).SetID(id)
return e
}
// See [Object.GetType].
func (e *Emoji) GetType() string {
return (*Object)(e).GetType()
}
// See [Object.SetType].
func (e *Emoji) SetType() *Emoji {
(*Object)(e).SetType(mastodon.TypeEmoji)
return e
}
// See [Object.GetName].
func (e *Emoji) GetName() iter.Seq[*Localised] {
return (*Object)(e).GetName()
}
// See [Object.SetName].
func (e *Emoji) AddName(ls ...Localised) *Emoji {
(*Object)(e).AddName(ls...)
return e
}
// See [Object.GetUpdated].
func (e *Emoji) GetUpdated() json.RawMessage {
return (*Object)(e).GetUpdated()
}
// See [Object.SetUpdated].
func (e *Emoji) SetUpdated(v json.RawMessage) *Emoji {
(*Object)(e).SetUpdated(v)
return e
}
// GetIcon returns the [Image] in [as.Icon].
//
// See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon.
func (e *Emoji) GetIcon() *Icon {
if nodes := (*ld.Node)(e).GetNodes(as.Icon); len(nodes) == 1 {
return (*Icon)(&nodes[0])
}
return nil
}
// SetIcon sets the [Image] in [as.Icon].
func (e *Emoji) SetIcon(img Icon) *Emoji {
(*ld.Node)(e).SetNodes(as.Icon, ld.Node(img))
return e
}