NAME

SReview::Schedule::Base

DESCRIPTION

Base class for all schedule parsers.

The SReview::Schedule API is used by sreview-import in order to parse schedules. sreview-import will load the desired schedule parsing class, and ask it for a list of events and talks within those events.

SReview::Schedule is a pull-through API; that is, you get a toplevel class, which you can ask for a list of events. Each event must be a subclass of the SReview::Schedule::Base::Event, which can be asked for a list of talks (as SReview::Schedule::Base::Talk or subclasses of that). These can then in turn be asked for the room, the speakers, the start time, etc.

All attributes of a schedule or a talk are implemented as lazy attributes; that is, they don't have a value until a request is made for their data. The method that implements fetching the data for a method should usually be defined the subclass, as a method called _load_attribute; e.g., to load the events attribute in the SReview::Schedule::Base class, the _load_events method should be overridden in the subclass.

Most attributes have a default implementation of the _load_* method that returns undef or an empty array, so if your schedule format does not implement fetching the requested data, you can leave out the relevant _load_* method and everything will work just fine.

ATTRIBUTES

url

Required at class construction time; the only attribute so required. The URL where the schedule can be found.

timezone

Not a lazy attribute by default (can be overridden by a subclass though). The timezone in which the event takes place. Can optionally be set at construction time.

_raw

Internal attribute. If read, transparently downloads (and caches), then returns, the raw schedule data from the given "url".

speaker_type

The class name of the subclass to be used when creating an object to hold a speaker. Default load implementation returns SReview::Schedule::Base::Speaker, but can be overridden to anything.

room_type

The class name of the subclass to be used when creating an object to hold a room. Default load implementation returns SReview::Schedule::Base::Room, but can be overridden to anything.

track_type

The class name of the subclass to be used when creating an object to hold a track. Default load implementation returns SReview::Schedule::Base::Track, but can be overridden to anything.

talk_type

The class name of the subclass to be used when creating an object to hold a talk. Default load implementation returns SReview::Schedule::Base::Talk, but can be overridden to anything.

event_type

The class name of the subclass to be used when creating an object to hold an event. Default load implementation returns SReview::Schedule::Base::Event, but can be overridden to anything.

events

Must return the events found in the schedule. For the purpose of SReview, an "event" is a set of "talks" that should be grouped together. For instance, "FOSDEM 2025" is an event; the "FOSDEM 2025 opening talk" is a talk.

Should return an array of SReview::Schedule::Base::Event objects (or a subclass of them).