/** * Creates a value from a given iteration * * @param util.address.Iteration $iteration * @return var */ public function create($iteration) { if (null !== $this->path && $this->path !== $iteration->path()) { throw new IllegalStateException('Enclosing element mismatch, expecting "' . $this->path . '", have "' . $iteration->path() . '"'); } $iteration->next(); return $iteration->input(); }
/** * Creates a value from a given iteration * * @param util.address.Iteration $iteration * @return var */ public function create($iteration) { if ($this->match) { $match = array_map(function ($path) use($iteration) { return $iteration->base() . $path; }, $this->match); } else { $match = [$iteration->path()]; } $r = []; while (in_array($iteration->path(), $match, true)) { $r[] = $iteration->next($this->component); } return $r; }
/** * Creates a value from a given iteration * * @param util.address.Iteration $iteration * @return var */ public function create($iteration) { $return = clone $this->creation; $base = $iteration->path() . '/'; $length = strlen($base); $this->next($return, '.', $iteration); while (0 === strncmp($iteration->path(), $base, $length)) { $this->next($return, substr($iteration->path(), $length), $iteration); } return $return->create(); }