User:Yapperbot/FRS/Documentation/godoc/rfc

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