builder = $builder; } /** * @param Context $context * @param \Closure $next * @return mixed * @throws \Enzyme\Axiom\Exceptions\AtomException */ public function handle(Context $context, Closure $next) { $line = $context->current(); // list($key, $data) = $this->getKeyDataFromLine($line); if ($this->isEndOfFile($context) || $this->isEndOfMusic($context, $line)) { $this->builder->handleEndOfMusic(); } return $next($context); } protected function isEndOfFile(Context $context) { $key = $context->key(); return $context->count() <= $key+1; } private function isEndOfMusic(Context $context, string $line) { return $context->isState(Context::MODE_TUNE_BODY) && preg_match('/^\s*$/', $line); } }