Sha256: 57fc649fa7811226f8645d7cacb5504fbf392695ba51211543da8f47dadbb45e

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

# -*- coding: utf-8 -*-
module GrooveDl
  # Downloader Class
  class Displayer
    attr_reader :result, :type

    ##
    # Initialize Displayer
    #
    # @param [Array] result The result from the search
    # @param [String] type The search type
    #
    # @return [Nil]
    #
    def initialize(result, type)
      @result = result
      @type = type
    end

    ##
    # Display prompt to choose songs or playlists.
    #
    def render
      table = Terminal::Table.new(headings: headers, title: @type)
      @result.each do |data|
        add_row(table, data)
      end

      puts table.to_s
    end

    def headers
      return %w(Id Album Artist Song) if @type == 'Songs'
      return %w(Id Name Author NumSongs) if @type == 'Playlists'
    end

    ##
    # Add row into table
    #
    # @param [Terminal::Table] table Table in which row will be added
    # @param [Array] result The result from the search
    #
    # @return [Nil]
    #
    def add_row(table, data)
      table.add_row([data.id,
                     data.name,
                     data.username,
                     data.num_songs]) if @type == 'Playlists'
      table.add_row([data.id,
                     data.album,
                     data.artist,
                     data.name]) if @type == 'Songs'
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
groove-dl-0.4.0 lib/groove-dl/displayer.rb
groove-dl-0.3.1 lib/groove-dl/displayer.rb
groove-dl-0.3.0 lib/groove-dl/displayer.rb