#!/usr/bin/perl
#
# Programmer:    Craig Stuart Sapp <craig.stanford.edu>
# Creation Date: Sun Dec 14 21:34:51 PST 2008
# Last Modified: Sun Dec 14 21:34:51 PST 2008
# Filename:      /disk/linux3/craigsites/mazurka/website/auto/scorealign/mazurka68-3/makemazurkamma
# Syntax:        perl 5
#
# Description:
#

use strict;

my @filelist = getFileList(".");

my $output = "data = {\n";
my $outtext;
my $file;
my $name;
my $i;

for ($i=0; $i<@filelist; $i++) {
   $file = $filelist[$i];
   $outtext = getInformation($file);
   $output .= "$outtext";
   if ($i < @filelist - 1) {
      $output .= ",";
   } else {
      $output .= "\n};";
   }
   $output .= "\n";
}

print "$output\n";



###########################################################################

##############################
##
## getInformation --
##

sub getInformation {
   my ($file) = @_;
   $name = $file;
   $name =~ s/-sadiff\.txt$//;
   #$name =~ s/-/_/g;
   my $outtext = "";
   my $i;

   open (FILE, $file) or die;
   my @contents = <FILE>;
   for ($i=0; $i<@contents; $i++) {
      $contents[$i] =~ s/\s*$//;
   }
   
   close FILE;

   my $date      = getDate(@contents);
   my $performer = getPerformer(@contents);
   my @fields;

   $outtext = "{{\"$name\", \"$performer\", \"$date\"}, ";

   for ($i=0; $i<@contents; $i++) {
      next if $contents[$i] !~ /^[\d\.\+\-]/;
      @fields = split(/\t/, $contents[$i]);
      die if @fields != 4;
      $outtext .= "{$fields[1], \"$fields[0]\", $fields[2], $fields[3]},";
   }

   $outtext =~ s/,$//;
   $outtext .= "}";

   return $outtext;
}



##############################
##
## getDate --
##
###performance-id:	pid1263b-19
###title:		Mazurka in F major, Op. 68, No. 3
###trial:		01/01
###date: 		2006/12/07/
###reverse-conductor:	Craig Stuart Sapp
###performer: 		Gabor Csalog
###performance-date:	1996
###label:		Hungaroton HCD 31755/6
###label-title:		Chopin Mazurkas
###scorealign-date:	Sun Dec 14 20:45:26 PST 2008
###scorealign-parameters:	-h 0.050 -w 0.100
#0.667981888	1:1	0
#1.352155888	1:2	-0.145
#2.059722888	1:3	-0.037
#2.791816888	2:1	0.034

sub getDate {
   my @contents = @_;
   my $i;
   for ($i=0; $i<@contents; $i++) {
      if ($contents[$i] =~ /performance-date:\s*(\d+)/) {
         return $1;
      }
   }

   return "";
}



##############################
##
## getPerformer --
##

sub getPerformer {
   my @contents = @_;
   my $i;
   for ($i=0; $i<@contents; $i++) {
      if ($contents[$i] =~ /performer:\s*(.*)/) {
         return $1;
      }
   }

   return "";
}



##############################
##
## getFileList --
##

sub getFileList {
   my ($dir) = @_;

   my @output;
   opendir(TDIR, $dir) or die;
   my $file;
   while ($file = readdir(TDIR)) {
      next if $file =~ /^\./;
      next if -d $file;
      next if $file !~ /-sadiff.txt$/;
      $output[@output] = $file;
   }
   closedir TDIR;
   return sort @output;

}
