start to add ability to merge tunes

started refactoring tune builders to use string type hint instead of StringAtom
This commit is contained in:
2018-05-06 10:01:16 -04:00
parent 655a04a501
commit 82dc3de079
34 changed files with 505 additions and 87 deletions

View File

@@ -2,6 +2,7 @@
namespace XaiCorp\AbcParser\Domain\Modules\Interpreter;
use Enzyme\Axiom\Atoms\StringAtom;
use Webpatser\Uuid\Uuid;
use XaiCorp\AbcParser\Domain\Atoms\EmailAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\Author;
@@ -9,10 +10,11 @@ use XaiCorp\AbcParser\Domain\Core\Composer;
use XaiCorp\AbcParser\Domain\Core\Setting;
use XaiCorp\AbcParser\Domain\Core\Transcriber;
use XaiCorp\AbcParser\Domain\Core\Tune;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Core\TuneCollection;
use XaiCorp\AbcParser\Models\Laravel5\TuneSetting;
//use XaiCorp\AbcParser\Models\Laravel5\TuneSetting;
class Builder
class Builder implements TuneBuilder
{
/**
* @var Tune
@@ -50,7 +52,7 @@ class Builder
$this->tune->addSetting($this->setting);
}
public function getTune()
public function getTune(Uuid $identity = null): \XaiCorp\AbcParser\Domain\Core\Tune
{
return $this->tune;
}
@@ -64,7 +66,7 @@ class Builder
}
/**
* @return $this
* @return TuneBuilder
*/
public function handleEndOfMusic()
{
@@ -82,26 +84,26 @@ class Builder
}
/**
* @param UnsignedIntegerAtom $index
* @return $this
* @param UnsignedIntegerAtom $param
* @return TuneBuilder
*/
public function setIndex(UnsignedIntegerAtom $index)
public function setIndex(UnsignedIntegerAtom $param): \XaiCorp\AbcParser\Domain\Core\TuneBuilder
{
$this->tune->setIndex($index);
$this->tune->setIndex($param);
return $this;
}
public function appendMusic(StringAtom $musicLine)
public function appendMusic(StringAtom $param): \XaiCorp\AbcParser\Domain\Core\TuneBuilder
{
$this->setting->addMusicLine($musicLine->getValue());
$this->setting->addMusicLine($param->getValue());
return $this;
}
public function addTitle(StringAtom $title)
public function addTitle(string $title): \XaiCorp\AbcParser\Domain\Core\TuneBuilder
{
$this->tune->addTitle($title->getValue());
$this->tune->addTitle($title);
return $this;
}
@@ -120,9 +122,9 @@ class Builder
return $this;
}
public function addAuthor(StringAtom $name)
public function addAuthor(string $name): \XaiCorp\AbcParser\Domain\Core\TuneBuilder
{
$author = new Author($name, new EmailAtom(''));
$author = Author::create($name, new EmailAtom(''));
$this->tune->addAuthor($author);
return $this;

View File

@@ -94,7 +94,6 @@ class DefaultInterpreter extends Interpreter
$context->next();
} while ($context->count() > $context->key());
// return $this->builder->getTune();
return $this;
}

View File

@@ -2,6 +2,7 @@
namespace XaiCorp\AbcParser\Domain\Modules\Interpreter;
use XaiCorp\AbcParser\Domain\Core\Tune;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Core\TuneCollection;
abstract class Interpreter
@@ -11,14 +12,14 @@ abstract class Interpreter
const LN_FIELD = '/^\w:(.+)$/';
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
/**
* Interpreter constructor.
*/
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Author implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}
@@ -32,7 +33,7 @@ class Author implements Lex
list($key, $data) = $this->getKeyDataFromLine($line);
if ($key === 'A') {
$this->builder->addAuthor(new StringAtom($data));
$this->builder->addAuthor($data);
}
return $next($context);

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Book implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Composer implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Discography implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class EndOfTune implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Filename implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Group implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class History implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Index implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class KeySignature implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Meter implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class MusicLine implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class NoteLength implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Notes implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Origin implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Parts implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Rhythm implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Source implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Tempo implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Title implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}
@@ -32,7 +33,7 @@ class Title implements Lex
list($key, $data) = $this->getKeyDataFromLine($line);
if ($key === 'T') {
$this->builder->addTitle(new StringAtom($data));
$this->builder->addTitle($data);
}
return $next($context);

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Transcriber implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}

View File

@@ -3,6 +3,7 @@ namespace XaiCorp\AbcParser\Domain\Modules\Interpreter\Lexicon;
use Enzyme\Axiom\Atoms\StringAtom;
use XaiCorp\AbcParser\Domain\Atoms\UnsignedIntegerAtom;
use XaiCorp\AbcParser\Domain\Core\TuneBuilder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Builder;
use XaiCorp\AbcParser\Domain\Modules\Interpreter\Context;
@@ -11,11 +12,11 @@ class Words implements Lex
use LineKeyDataTrait;
/**
* @var Builder
* @var TuneBuilder
*/
protected $builder;
public function __construct(Builder $builder)
public function __construct(TuneBuilder $builder)
{
$this->builder = $builder;
}