Example #1
0
 public function test_each()
 {
     $array = [1, 2, 3, 4];
     $result = [];
     F\each(function ($item) use(&$result) {
         $result[] = $item;
     }, $array);
     $this->assertEquals($array, $result);
 }
Example #2
0
{
    $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']);