Class: VkMusic::Playlist

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/vk_music/playlist.rb

Overview

VK playlist.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(list, options = {}) ⇒ Playlist

Initialize new playlist.

Parameters:

  • list (Array)

    list of audios in playlist.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • :id (Integer, nil)
  • :owner_id (Integer, nil)
  • :access_hash (String, nil)
  • :title (String)
  • :subtitle (String, nil)
  • :real_size (Integer, nil)

Raises:

  • (ArgumentError)


92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/vk_music/playlist.rb', line 92

def initialize(list, options = {})
  raise ArgumentError, "Bad arguments", caller unless list.class == Array      
  # Saving list
  @list = list.dup
  
  # Setting up attributes
  @id          = Utility.unless_nil_to Integer, options[:id]
  @owner_id    = Utility.unless_nil_to Integer, options[:owner_id]
  @access_hash = Utility.unless_nil_to String, options[:access_hash]
  @title       = options[:title].to_s
  @subtitle    = Utility.unless_nil_to String, options[:subtitle]
  @real_size   = Utility.unless_nil_to Integer, options[:real_size]
end

Instance Attribute Details

#access_hashString? (readonly)

Returns access hash which should be part of link for some playlists.

Returns:

  • (String, nil)

    access hash which should be part of link for some playlists.



18
19
20
# File 'lib/vk_music/playlist.rb', line 18

def access_hash
  @access_hash
end

#idInteger? (readonly)

Returns playlist ID.

Returns:

  • (Integer, nil)

    playlist ID.



10
11
12
# File 'lib/vk_music/playlist.rb', line 10

def id
  @id
end

#owner_idInteger? (readonly)

Returns owner of playlist ID.

Returns:

  • (Integer, nil)

    owner of playlist ID.



14
15
16
# File 'lib/vk_music/playlist.rb', line 14

def owner_id
  @owner_id
end

#real_sizeInteger? (readonly)

Returns real size of playlist or nil if unknown.

Returns:

  • (Integer, nil)

    real size of playlist or nil if unknown.



30
31
32
# File 'lib/vk_music/playlist.rb', line 30

def real_size
  @real_size
end

#subtitleString? (readonly)

Returns playlist subtitle. May be empty.

Returns:

  • (String, nil)

    playlist subtitle. May be empty.



26
27
28
# File 'lib/vk_music/playlist.rb', line 26

def subtitle
  @subtitle
end

#titleString (readonly)

Returns playlist title.

Returns:

  • (String)

    playlist title.



22
23
24
# File 'lib/vk_music/playlist.rb', line 22

def title
  @title
end

Instance Method Details

#[](index) ⇒ Audio?

Access audios from playlist.

Parameters:

  • index (Integer)

    index of audio (starting from 0).

Returns:

  • (Audio, nil)

    audio or nil if out of range.



77
78
79
# File 'lib/vk_music/playlist.rb', line 77

def [](index)
  @list[index]
end

#each(&block) ⇒ Object

See Also:

  • Array#each


54
55
56
# File 'lib/vk_music/playlist.rb', line 54

def each(&block)
  @list.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)

See Also:

  • Array#empty?


67
68
69
# File 'lib/vk_music/playlist.rb', line 67

def empty?
  @list.empty?
end

#lengthObject Also known as: size

See Also:

  • Array#length


60
61
62
# File 'lib/vk_music/playlist.rb', line 60

def length
  @list.length
end

#ppString

Returns Same to #to_s, but also outputs list of audios.

Returns:

  • (String)

    Same to #to_s, but also outputs list of audios.



42
43
44
# File 'lib/vk_music/playlist.rb', line 42

def pp
  "#{to_s}:\n#{@list.map(&:pp).join("\n")}"
end

#to_aArray<Audio>

Returns duplicate of array of playlist audios.

Returns:

  • (Array<Audio>)

    Returns duplicate of array of playlist audios.



48
49
50
# File 'lib/vk_music/playlist.rb', line 48

def to_a
  @list.dup
end

#to_sString

Returns playlist description in Russian.

Returns:

  • (String)

    playlist description in Russian.



34
35
36
37
38
# File 'lib/vk_music/playlist.rb', line 34

def to_s
  (@subtitle && !@subtitle.empty? ? "#{@subtitle} - " : "") +
  @title +
  (@real_size ? "(#{self.length} из #{@real_size} аудиозаписей загружено)" : " (#{self.length} аудиозаписей)")
end