89 lines
1.7 KiB
Go
89 lines
1.7 KiB
Go
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
|
|
}
|