namespace mdref;
-class Tree implements \RecursiveIterator {
+use Iterator;
+use RecursiveIterator;
+use function array_filter;
+use function array_search;
+use function basename;
+use function current;
+use function dirname;
+use function glob;
+use function is_dir;
+use function key;
+use function next;
+use function pathinfo;
+use function preg_match;
+use function reset;
+use function strcmp;
+use function usort;
+
+class Tree implements RecursiveIterator {
/**
* The repository
* @var \mdref\Repo
* @param string $path
* @param \mdref\Repo $repo
*/
- public function __construct($path, Repo $repo) {
+ public function __construct(string $path, Repo $repo) {
if (realpath($path)."/" === $repo->getPath()) {
$list = [$path ."/". $repo->getName() .".md"];
} elseif (!($list = glob("$path/*.md"))) {
* @param array $list
* @return callable
*/
- private function generateFilter(array $list) {
+ private function generateFilter(array $list) : \Closure {
return function($v) use($list) {
- if ($v{0} === ".") {
+ if ($v[0] === ".") {
return false;
}
if (false !== array_search("$v.md", $list, true)) {
/**
* @return callable
*/
- private function generateSorter() {
+ private function generateSorter() : \Closure {
return function($a, $b) {
$ab = basename($a, ".md");
$bb = basename($b, ".md");
- if ($ab{0} === ":" && $bb{0} === ":") {
+ if ($ab[0] === ":" && $bb[0] === ":") {
return strcmp($ab, $bb);
- } elseif ($ab{0} === ":") {
+ } elseif ($ab[0] === ":") {
return -1;
- } elseif ($bb{0} === ":") {
+ } elseif ($bb[0] === ":") {
return 1;
}
-
+/*
$ad = is_dir(dirname($a)."/$ab");
$bd = is_dir(dirname($b)."/$bb");
} elseif ($bd) {
return 1;
}
-
+*/
$au = preg_match("/^\p{Lu}/", $ab);
$bu = preg_match("/^\p{Lu}/", $bb);
* Implements \Iterator
* @return \mdref\Entry
*/
- public function current() {
+ public function current() : Entry {
return $this->repo->getEntry($this->repo->hasFile(current($this->iter)));
}
/**
* Implements \Iterator
*/
- public function next() {
+ public function next() : void {
next($this->iter);
}
* Implements \Iterator
* @return int
*/
- public function key() {
+ public function key() : int {
return key($this->iter);
}
/**
* Implements \Iterator
*/
- public function rewind() {
+ public function rewind() : void {
$this->iter = $this->list;
reset($this->iter);
}
* Implements \Iterator
* @return bool
*/
- public function valid() {
+ public function valid() : bool {
return null !== key($this->iter);
}
* Implements \RecursiveIterator
* @return bool
*/
- public function hasChildren() {
+ public function hasChildren() : bool {
return $this->current()->hasIterator();
}
* Implements \RecursiveIterator
* @return \mdref\Tree
*/
- public function getChildren() {
+ public function getChildren() : Tree {
return $this->current()->getIterator();
}
}