#!/usr/bin/perl -w # $Id: workman,v 1.2 2002/07/27 20:07:47 tom Exp $ # # Initialize Cdk. # use Cdk; Cdk::init(); # Pop up the opening label. popupLabel (["Workman Database Editor.", "", "Written By Mike Glover"]); # Set a default name for the workman database. my $workmandb = $ENV{'HOME'} . "/.workmandb"; # Open up the database and read in the contents. my @cdList = readWorkmanDatabase ($workmandb); # Let the user play with the given information. playWithWorkManDatabase (@cdList); # # This allows the user to manipulate the workman database. # sub playWithWorkManDatabase { } # # This reads in the current contents of the workman database. # sub readWorkmanDatabase { my $filename = shift; my @contents = (); my $count = 0; my $x = 0; # Return if we can't open the file. return if !(open (FILE, $filename)); # Slurp in the file. my @workmandb = ; chomp @workmandb; # Strip out the contents of the database. for ($x=0; $x < $#workmandb; $x++) { # Remove comments and empty lines. next if $workmandb[$x] =~ /^#/; next if $workmandb[$x] =~ /^$/; # Is this a start of a CD listing. if ($workmandb[$x] =~ /^tracks (\d*)/) { my $trackCount = $1; my $trackLine = $workmandb[$x++]; my $cdName = $workmandb[$x++]; my $artist = $workmandb[$x++]; my @tracks = (); my $current = 0; # Get each track from the database. for ($current=0; $current < $trackCount; $current++) { push (@tracks, $workmandb[$x++]); } $x--; # Create the database object and put it onto the stack. my $object = new WorkManData ($trackLine, $cdName, $artist, @tracks); # Put it onto the stack. push (@contents, $object); } } return @contents; } # # This writes out a workman database. # sub writeWorkManData { } ######################################### package WorkManData; # # This creates a new object. # sub new { my ($type, $trackLine, $cdName, $artist, @tracks) = @_; my @trackInfo = (); my @indexInfo = (); my $self = {}; # Split the trackline apart. my ($junk, $trackCount, @index) = split (/\s+/, $trackLine); # Clean off the garbage from the track lines. for ($x=0; $x <= $#tracks; $x++) { # Strip out the track name. ($trackName = $1) if $tracks[$x] =~ /^track\s+(.*)/; # If there is no track name, then provide a default answer. if ($trackName ne "") { push (@trackInfo, $trackName); } else { push (@trackInfo, "No Track Name Given"); } } # Store the info in the object. ($self->{'Artist'} = $1) if $artist =~ /^artist\s+(.*)/; ($self->{'CDName'} = $1) if $cdName =~ /^cdname\s+(.*)/; $self->{'Tracks'} = \@trackInfo; $self->{'Index'} = \@indexInfo; return bless $self; }