/** * @param File $file * @param Report $report */ public function process(File $file, Report $report) { $collection = Collection::createFromString($file->getContent()->get()); (new PatternMatcher($collection))->apply(function (QuerySequence $q) { $any = Strict::create()->valueLike('!.+!'); $q->strict('function'); $q->strict(T_WHITESPACE); $q->strict($any); $q->possible(T_WHITESPACE); $q->section('(', ')'); // return type $beforeSpace = $q->possible(T_WHITESPACE); $identifier = $q->strict(':'); $afterSpace = $q->possible(T_WHITESPACE); $q->strict($any); $q->search(Search::create()->valueLike('!^\\{|\\;$!')); if ($q->isValid()) { $beforeSpace->remove(); $identifier->prependToValue($this->before); // add symbol before $identifier->appendToValue($this->after); // add symbol after $afterSpace->remove(); } }); $file->getContent()->set((string) $collection); }
/** * By default we search forward * * @param int|string|Search $condition * @param null $direction * @return Token */ public function search($condition, $direction = null) { $strategy = Search::create(); if ($direction !== null) { $strategy->setDirection($direction); } $query = $this->buildStrategyCondition($condition, $strategy); return $this->process($query); }