feat: initial commit
This commit is contained in:
commit
a161b86c9a
705 changed files with 288162 additions and 0 deletions
207
vendor/sourcery.dny.nu/pana/question.go
vendored
Normal file
207
vendor/sourcery.dny.nu/pana/question.go
vendored
Normal file
|
|
@ -0,0 +1,207 @@
|
|||
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"
|
||||
)
|
||||
|
||||
// Question is the ActivityStreams Question object.
|
||||
type Question IntransitiveActivity
|
||||
|
||||
// NewQuestion initialises a new Question.
|
||||
func NewQuestion() *Question {
|
||||
return &Question{
|
||||
Properties: make(ld.Properties),
|
||||
Type: []string{as.TypeQuestion},
|
||||
}
|
||||
}
|
||||
|
||||
// Build finalises the Question.
|
||||
//
|
||||
// This returns [Any] since that's what [Activity.SetObject] expects.
|
||||
func (q *Question) Build() Any {
|
||||
return Any(*q)
|
||||
}
|
||||
|
||||
// IsMultipleChoice checks if this is a multiple-choice question.
|
||||
func (q *Question) IsMultipleChoice() bool {
|
||||
if q == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
return Has((*Any)(q), as.AnyOf)
|
||||
}
|
||||
|
||||
// See [Object.GetType].
|
||||
func (q *Question) GetType() string {
|
||||
return (*Object)(q).GetType()
|
||||
}
|
||||
|
||||
// SetType sets the type to [as.TypeQuestion].
|
||||
func (q *Question) SetType() {
|
||||
q.Type = []string{as.TypeQuestion}
|
||||
}
|
||||
|
||||
// GetVotersCount returns the value in [mastodon.VotersCount].
|
||||
//
|
||||
// See https://docs.joinmastodon.org/spec/activitypub/#toot.
|
||||
func (q *Question) GetVotersCount() json.RawMessage {
|
||||
if nodes := (*ld.Node)(q).GetNodes(mastodon.VotersCount); len(nodes) == 1 {
|
||||
return nodes[0].Value
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetVotersCount sets the value in [mastodon.VotersCount].
|
||||
func (q *Question) SetVotersCount(v json.RawMessage) *Question {
|
||||
(*ld.Node)(q).SetNodes(mastodon.VotersCount, ld.Node{Value: v})
|
||||
return q
|
||||
}
|
||||
|
||||
// GetEndTime returns the value in [as.EndTime].
|
||||
//
|
||||
// See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-endtime.
|
||||
func (q *Question) GetEndTime() json.RawMessage {
|
||||
if nodes := (*ld.Node)(q).GetNodes(as.EndTime); len(nodes) == 1 {
|
||||
return nodes[0].Value
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetEndTime sets the value in [as.EndTime].
|
||||
func (q *Question) SetEndTime(v json.RawMessage) *Question {
|
||||
(*ld.Node)(q).SetNodes(as.EndTime, ld.Node{Value: v})
|
||||
return q
|
||||
}
|
||||
|
||||
// See [Object.GetSensitive].
|
||||
func (q *Question) GetSensitive() json.RawMessage {
|
||||
return (*Object)(q).GetSensitive()
|
||||
}
|
||||
|
||||
// See [Object.SetSensitive].
|
||||
func (q *Question) SetSensitive(v json.RawMessage) *Question {
|
||||
(*Object)(q).SetSensitive(v)
|
||||
return q
|
||||
}
|
||||
|
||||
// See [Object.GetUpdated].
|
||||
func (q *Question) GetUpdated() json.RawMessage {
|
||||
return (*Object)(q).GetUpdated()
|
||||
}
|
||||
|
||||
// See [Object.SetUpdated].
|
||||
func (q *Question) SetUpdated(v json.RawMessage) *Question {
|
||||
(*Object)(q).SetUpdated(v)
|
||||
return q
|
||||
}
|
||||
|
||||
// GetAnyOf gets the [Choice] in [as.AnyOf].
|
||||
//
|
||||
// See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-oneof.
|
||||
func (q *Question) GetAnyOf() iter.Seq[Choice] {
|
||||
return func(yield func(Choice) bool) {
|
||||
for _, n := range (*ld.Node)(q).GetNodes(as.AnyOf) {
|
||||
if !yield(Choice(n)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// AddAnyOf appends [Choice] to [as.AnyOf].
|
||||
func (q *Question) AddAnyOf(chs ...Choice) *Question {
|
||||
(*ld.Node)(q).AddNodes(as.AnyOf, toLDNodes(chs...)...)
|
||||
return q
|
||||
}
|
||||
|
||||
// GetOneOf gets the [Choice] in [as.OneOf].
|
||||
//
|
||||
// See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-oneof.
|
||||
func (q *Question) GetOneOf() iter.Seq[Choice] {
|
||||
return func(yield func(Choice) bool) {
|
||||
for _, n := range (*ld.Node)(q).GetNodes(as.OneOf) {
|
||||
if !yield(Choice(n)) {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// AddOneOf appends [Choice] to [as.OneOf].
|
||||
func (q *Question) AddOneOf(chs ...Choice) *Question {
|
||||
(*ld.Node)(q).AddNodes(as.OneOf, toLDNodes(chs...)...)
|
||||
return q
|
||||
}
|
||||
|
||||
// GetClosed returns the value in [as.Closed].
|
||||
//
|
||||
// See https://www.w3.org/TR/activitystreams-vocabulary/#dfn-closed.
|
||||
func (q *Question) GetClosed() json.RawMessage {
|
||||
if nodes := (*ld.Node)(q).GetNodes(as.Closed); len(nodes) == 1 {
|
||||
return nodes[0].Value
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetClosed sets the value in [as.Closed].
|
||||
func (q *Question) SetClosed(v json.RawMessage) *Question {
|
||||
(*ld.Node)(q).SetNodes(as.Closed, ld.Node{Value: v})
|
||||
return q
|
||||
}
|
||||
|
||||
// See [Object.GetName].
|
||||
func (q *Question) GetName() iter.Seq[*Localised] {
|
||||
return (*Object)(q).GetName()
|
||||
}
|
||||
|
||||
// See [Object.AddName].
|
||||
func (q *Question) AddName(ls ...Localised) *Question {
|
||||
(*Object)(q).AddName(ls...)
|
||||
return q
|
||||
}
|
||||
|
||||
// Choice represents a choice in a poll. It is a much more limited [Note].
|
||||
type Choice Note
|
||||
|
||||
// NewChoice initialises a new Choice.
|
||||
func NewChoice() *Choice {
|
||||
return &Choice{
|
||||
Properties: make(ld.Properties),
|
||||
Type: []string{as.TypeNote},
|
||||
}
|
||||
}
|
||||
|
||||
// Build finalises the Choice.
|
||||
func (c *Choice) Build() Choice {
|
||||
return *c
|
||||
}
|
||||
|
||||
// See [Object.GetName].
|
||||
func (c *Choice) GetName() iter.Seq[*Localised] {
|
||||
return (*Object)(c).GetName()
|
||||
}
|
||||
|
||||
// See [Object.AddName].
|
||||
func (c *Choice) AddName(ls ...Localised) *Choice {
|
||||
(*Object)(c).AddName(ls...)
|
||||
return c
|
||||
}
|
||||
|
||||
// See [Object.GetReplies].
|
||||
func (c *Choice) GetReplies() *Collection {
|
||||
return (*Object)(c).GetReplies()
|
||||
}
|
||||
|
||||
// See [Object.SetReplies].
|
||||
func (c *Choice) SetReplies(cl Collection) *Choice {
|
||||
(*Object)(c).SetReplies(cl)
|
||||
return c
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue