module Playlist::Format::SimpleText
Module to parse and generate playlists with one line per track
Public Class Methods
generate(playlist)
click to toggle source
Generate a human readable list of tracks from a Playlist
@param playlist [Playlist] the playlist @return [String] the playlist with one line per track
# File lib/playlist/format/simple_text.rb, line 38 def generate(playlist) playlist.tracks.map { |t| "#{t.artist} - #{t.title}" }.join("\n") + "\n" end
parse(input)
click to toggle source
Parse a human readable list of tracks into a Playlist
@param input any object that responds to each_line
(either a String or a IO object)
@return [Playlist] a new Playlist
object
# File lib/playlist/format/simple_text.rb, line 8 def parse(input) Playlist.new do |playlist| input.each_line do |line| next if line =~ /^#/ track = parse_line(line.strip) playlist.tracks << track unless track.nil? end end end
parse_line(line)
click to toggle source
Parse a single line from a playlist into a Track
obect @param line [String] any object that responds to each_line @return [Track] a new Track
object
# File lib/playlist/format/simple_text.rb, line 22 def parse_line(line) matches = line.match( /^(\d{1,2}[:.]\d{1,2}([:.]\d{1,2})?)?\s*(.+?) - (.+?)$/ ) unless matches.nil? Playlist::Track.new( :start_time => matches[1], :creator => matches[3].strip, :title => matches[4].strip ) end end