package rfc // import "yapperbot-frs/src/rfc"
CONSTANTS
const noRfCIDYetErrorText string = "An identified RfC does not yet have an assigned RfC ID from Legobot."
const requestType string = "request for comment"
VARIABLES
var doneRfcs map[string]bool = map[string]bool{}
doneRfcs maps found this session and completed/already-completed RfCs IDs to
true (again, only used for o(n) lookups)
var loadedRfcs map[string]bool = map[string]bool{}
loadedRfcs maps *already-completed* RfC IDs to true. It only contains RfCs
that were in the JSON at the start. We need this to be separate so we can
keep ones out of doneRfcs that aren't in the category anymore
var rfcPrefixRegex *regexp.Regexp
rfcPrefixRegex is a regex that matches the comments at the start of each RfC
line; these are in the form <!--rfc:categoryname-->, and mean the bot can
match it.
FUNCTIONS
func AlreadyDone(rfcID string) bool
AlreadyDone takes an RfC ID and returns whether it's already included in
either loadedRfcs or doneRfcs.
func LoadRfcsDone(w *mwclient.Client)
LoadRfcsDone loads the RFCs that have already been marked as done into
loadedRfcs. It needs to be called before the start of each session that
includes an RfC lookup.
func MarkRfcsDone(rfcsDone []RfC)
MarkRfcsDone takes a series of RfC objects, and adds the RfCs to the list of
completed RfCs.
func SaveRfcsDone(w *mwclient.Client)
SaveRfcsDone takes an mwclient, and serializes the doneRfcs map, before
saving it on-wiki.
func init()
TYPES
type NoRfCIDYetError struct{}
NoRfCIDYetError is an error used when an RfC detected does not yet have an
ID assigned.
func (e NoRfCIDYetError) Error() string
type RfC struct {
ID string
Categories map[string]bool
FeedbackDone bool
PageHolding string
}
An RfC has an id, a categories map and a setting for whether feedback has
been given for it. The map should be map[string]bool, with bool as true for
every element This is so membership verification is o(1) rather than o(n)
func (r RfC) IncludeHeader(header string) (bool, bool)
IncludeHeader determines if a given FRS header corresponds to this item
correctly Takes a string of the entire header (minus the === bits) and
returns a bool for if the header is included, and separately a bool
indicating whether the header is the all header or not
func (r RfC) PageTitle() string
PageTitle is a simple getter for the HoldingPage in order to make the
interface work
func (r RfC) RequestType() string
RequestType returns the type this is - an RfC - so that it can be used in a
template