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::Eventobjects (or a subclass of them).