class Kagu::Track
Constants
- MANDATORY_ATTRIBUTES
Attributes
added_at[R]
album[R]
artist[R]
bpm[R]
genre[R]
id[R]
length[R]
path[R]
title[R]
year[R]
Public Instance Methods
<=>(other)
click to toggle source
# File lib/kagu/track.rb, line 12 def <=>(other) return nil unless other.is_a?(self.class) length <=> other.length end
==(other)
click to toggle source
# File lib/kagu/track.rb, line 17 def ==(other) other.is_a?(self.class) && artist == other.artist && title == other.title end
eql?(other)
click to toggle source
Calls superclass method
# File lib/kagu/track.rb, line 21 def eql?(other) super || self == other end
exists_on_disk?()
click to toggle source
# File lib/kagu/track.rb, line 25 def exists_on_disk? path.present? && path.file? end
hash()
click to toggle source
# File lib/kagu/track.rb, line 29 def hash [artist, title].hash end
to_s()
click to toggle source
# File lib/kagu/track.rb, line 33 def to_s "#{artist} - #{title}" end
Private Instance Methods
added_at=(value)
click to toggle source
# File lib/kagu/track.rb, line 39 def added_at=(value) case value when String value = Time.parse(value) when Integer value = Time.at(value) end @added_at = value.is_a?(Time) ? value.utc : nil end
album=(value)
click to toggle source
# File lib/kagu/track.rb, line 49 def album=(value) @album = value.to_s.squish.presence end
artist=(value)
click to toggle source
# File lib/kagu/track.rb, line 53 def artist=(value) @artist = value.to_s.squish.presence end
bpm=(value)
click to toggle source
# File lib/kagu/track.rb, line 57 def bpm=(value) value = value.to_s =~ /\A[0-9]+\z/ ? value.to_i : nil @bpm = value && value > 0 ? value : nil end
genre=(value)
click to toggle source
# File lib/kagu/track.rb, line 62 def genre=(value) @genre = value.to_s.squish.presence end
id=(value)
click to toggle source
# File lib/kagu/track.rb, line 66 def id=(value) @id = value.to_s.presence end
length=(value)
click to toggle source
# File lib/kagu/track.rb, line 70 def length=(value) @length = value.to_s =~ /\A[0-9]+\z/ ? value.to_i : nil end
path=(value)
click to toggle source
# File lib/kagu/track.rb, line 74 def path=(value) value = value.to_s.presence value = Addressable::URI.unescape(Addressable::URI.parse(value).path).presence if value.is_a?(String) && value.starts_with?('file://') value = value.encode('UTF-8', 'UTF-8-MAC') if value.present? && Kagu::IS_MAC_OS @path = value.present? ? Pathname.new(value) : nil end
title=(value)
click to toggle source
# File lib/kagu/track.rb, line 81 def title=(value) @title = value.to_s.squish.presence end
year=(value)
click to toggle source
# File lib/kagu/track.rb, line 85 def year=(value) @year = value.to_s =~ /\A\d{,4}\z/ ? value.to_i : nil end