public function test_each() { $array = [1, 2, 3, 4]; $result = []; F\each(function ($item) use(&$result) { $result[] = $item; }, $array); $this->assertEquals($array, $result); }
{ $content = F\pipe(F\map('Demo\\block'), F\filter(function ($block) { return $block->type == 'function' && !$block->is_internal; }), F\map(function ($block) { return ['name' => $block->name, 'md' => markdown($block)]; }), addContents(F\replace(['src/', '.php'], '', $file)), F\join("\n\n")); file_put_contents(F\replace(['src', '.php'], ['docs', '.md'], $file), $content(json_decode(shell_exec("dox -r < {$file}")))); } // Generates documentation for a class // String -> IO function generateClass($name) { $content = F\pipe(F\map('Demo\\block'), F\filter(function ($block) { return in_array($block->type, ['method', 'class']) && !$block->is_internal; }), f\map(function ($block) use($name) { if ($block->type == 'method') { $block->name = ($block->is_static ? $name . '::' : '') . $block->name; } return $block; }), F\map(function ($block) { return ['name' => $block->name, 'md' => markdown($block)]; }), addContents($name), F\join("\n\n")); file_put_contents("docs/{$name}.md", $content(json_decode(shell_exec("dox -r < src/{$name}.php")))); } // The entry point file_put_contents('docs/README.md', "# Reference Documentation \n\n"); file_put_contents("docs/README.md", "# Function Modules\n\n", FILE_APPEND); F\each('Demo\\generateModule', modules()); file_put_contents("docs/README.md", "# Containers\n\n", FILE_APPEND); F\each('Demo\\generateClass', ['Stream', 'Error']);