4 changed files with 79 additions and 50 deletions
			
			
		@ -1,50 +0,0 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Dataclasses; | 
				
			|||
 | 
				
			|||
class ABCWrapper | 
				
			|||
{ | 
				
			|||
    public string $ID; | 
				
			|||
    public string $Title; | 
				
			|||
 | 
				
			|||
    public string $Source; | 
				
			|||
 | 
				
			|||
    public string $TimeSignature; | 
				
			|||
    public string $KeySignature; | 
				
			|||
 | 
				
			|||
    public string $DefaultNoteLength = "1/8"; | 
				
			|||
 | 
				
			|||
    public array $Parts; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    public function __construct(array $assocArray) | 
				
			|||
    { | 
				
			|||
        $this->ID = $assocArray['ID']; | 
				
			|||
        $this->Title = $assocArray['Title']; | 
				
			|||
        $this->Source = $assocArray['Copyright']; | 
				
			|||
        $this->TimeSignature = $assocArray['TimeSignature']; | 
				
			|||
        $this->KeySignature = $assocArray['KeySignature']; | 
				
			|||
        $this->Parts = json_decode($assocArray['Parts'], true); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    public function Build(): string | 
				
			|||
    { | 
				
			|||
        $builder = "X: {$this->ID} | 
				
			|||
T: {$this->Title} | 
				
			|||
S: {$this->Source} | 
				
			|||
M: {$this->TimeSignature} | 
				
			|||
K: {$this->KeySignature} | 
				
			|||
L: {$this->DefaultNoteLength}"; | 
				
			|||
        $counter = 0; | 
				
			|||
        $letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; | 
				
			|||
        foreach($this->Parts as $part) | 
				
			|||
        { | 
				
			|||
            $builder .= " | 
				
			|||
P: {$letters[$counter]} Part | 
				
			|||
{$part}"; | 
				
			|||
            $counter = $counter + 1; | 
				
			|||
        } | 
				
			|||
        return $builder; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,21 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Dataclasses; | 
				
			|||
 | 
				
			|||
class DatabaseFolkTuneDetails | 
				
			|||
{ | 
				
			|||
    public string $ID; | 
				
			|||
    public string $Title; | 
				
			|||
 | 
				
			|||
    public string $Copyright; | 
				
			|||
 | 
				
			|||
    public array $Variants; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    public function __construct(array $assocArray) | 
				
			|||
    { | 
				
			|||
        $this->ID = $assocArray['ID']; | 
				
			|||
        $this->Title = $assocArray['Title']; | 
				
			|||
        $this->Copyright = $assocArray['Copyright']; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,41 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Dataclasses; | 
				
			|||
 | 
				
			|||
class TuneVariant | 
				
			|||
{ | 
				
			|||
    private DatabaseFolkTuneDetails $Tune; | 
				
			|||
    public string $ID; | 
				
			|||
    public array $Parts; | 
				
			|||
 | 
				
			|||
    public function __construct(DatabaseFolkTuneDetails $tuneDetails, array $assocArray) | 
				
			|||
    { | 
				
			|||
        $this->ID = $assocArray['ID']; | 
				
			|||
        $this->Tune = $tuneDetails; | 
				
			|||
 | 
				
			|||
        $temp = json_decode($assocArray['Parts'], associative: true, flags: JSON_THROW_ON_ERROR); | 
				
			|||
        foreach($temp as $part) | 
				
			|||
            $this->Parts[] = new TuneVariantPart($part); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
 | 
				
			|||
    public function Build(): string | 
				
			|||
    { | 
				
			|||
        $builder = "X: {$this->Tune->ID}.{$this->ID} | 
				
			|||
T: {$this->Tune->Title} | 
				
			|||
S: {$this->Tune->Copyright} | 
				
			|||
M: {$this->Parts[0]->TimeSignature} | 
				
			|||
K: {$this->Parts[0]->KeySignature} | 
				
			|||
L: 1/8"; | 
				
			|||
        $counter = 0; | 
				
			|||
        $letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; | 
				
			|||
        foreach($this->Parts as $part) | 
				
			|||
        { | 
				
			|||
            $builder .= " | 
				
			|||
P: {$letters[$counter]} Part | 
				
			|||
{$part->ABCNotation}"; | 
				
			|||
            $counter = $counter + 1; | 
				
			|||
        } | 
				
			|||
        return $builder; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,17 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Dataclasses; | 
				
			|||
 | 
				
			|||
class TuneVariantPart | 
				
			|||
{ | 
				
			|||
    public string $TimeSignature; | 
				
			|||
    public string $KeySignature; | 
				
			|||
    public string $ABCNotation; | 
				
			|||
 | 
				
			|||
    public function __construct(array $assocArray) | 
				
			|||
    { | 
				
			|||
        $this->TimeSignature = $assocArray['TimeSignature']; | 
				
			|||
        $this->KeySignature = $assocArray['KeySignature']; | 
				
			|||
        $this->ABCNotation = $assocArray['ABCNotation']; | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
					Loading…
					
					
				
		Reference in new issue