Sha256: ea01161daf546faa03f41e74528b3026a2adea5037676eab16f4f6023217edb3
Contents?: true
Size: 1.1 KB
Versions: 3
Compression:
Stored size: 1.1 KB
Contents
class Radiodan class PlaylistSync class SyncError < Exception; end attr_accessor :expected, :current attr_reader :errors def initialize(expected = nil, current = nil) @expected = expected @current = current @errors = [] end def sync? prerequisites_check compare_playback_state & compare_playback_mode & compare_playlist end private def prerequisites_check raise SyncError, 'No expected playlist to compare to' if expected.nil? raise SyncError, 'No current playlist to compare to' if current.nil? end def compare_playback_state # add rules about when this is ok to be out of sync # e.g. sequential expected runs out of tracks and stops compare(:state) { @expected.state == @current.state } end def compare_playback_mode compare(:mode) { @expected.mode == @current.mode } end def compare_playlist compare(:playlist) do @expected.size == @current.size && \ @expected.tracks == @current.tracks end end def compare(type, &blk) result = blk.call errors << type unless result result end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
radiodan-0.0.4 | lib/radiodan/playlist_sync.rb |
radiodan-0.0.3 | lib/radiodan/playlist_sync.rb |
radiodan-0.0.2 | lib/radiodan/playlist_sync.rb |