Liaison-Package.md.php
<?php
/** @var \Lia $lia */
$lia = $args['lia'];
/** @var string $base_dir */
$base_dir = realpath($args['base_dir']);
/** @var \Lia\Package $package */
$package = $args['package'];
/** @var \Tlf\Scrawl $scrawl */
$scrawl = $this;
/** @var \Lia\Ext\Scrawl $ext */
$ext = $args['scrawl_ext'];
$abs_dir = realpath($package->dir);
$rel_dir = null;
if (substr($abs_dir,0,strlen($base_dir))!=$base_dir){
$rel_dir = '(error)';
} else {
$rel_dir = substr($abs_dir, strlen($base_dir));
}
$class_path = $ext->get_rel_class_file($package, $base_dir);
?># Package `<?=$package->fqn?>`
- Class: `<?=get_class($package)?>`
- Class File: <?=$class_path?>
- FQN: `<?=$package->fqn?>`
- Package Directory: <?=$rel_dir?>
### Addons
Addons are loaded by calling `Addon\\ClassName::from(\Lia $lia)`
Configurable properties are set by calling `$lia->configure(array $configs)` before instantiating any packages. See [Liaison Documentation](https://taeluf.com/docs/Liaison) for more information.
<?php
if (count($package->addons)==0){
echo "This Package contains no addons";
goto end_of_addons;
}
echo "This package contains the following addons. ";
foreach($package->addons as $name=>$addon):
ob_start();
$ast = $scrawl->get_class_ast(get_class($addon));
$output = ob_get_clean();
if ($ast==null){
echo "\n".get_class($addon).": AST not available. Cannot generate documentation. ";
continue;
}
?>
#### `<?=get_class($addon)?>`
<?=$ast['docblock']['description']??'--no description--'?>
Addon Name: <?=$name?>
Class File: <?=$ext->get_rel_class_file($addon, $base_dir);?>
**Configurable Properties:**<?php
foreach ($ast['properties'] as $property){
if (!in_array('public', $property['modifiers'])){
continue;
}
$attributes = $property['docblock']['attribute'] ?? [];
foreach ($attributes as $attr){
if ($attr['name'] == 'configurable'){
echo "\n- `$".$property['name']."`: ".$attr['description'];
break;
}
}
}
echo "\n\n**Public Methods:**";
foreach ($ast['methods'] as $method){
if (!in_array('public', $property['modifiers'])){
continue;
}
$description = trim($method['docblock']['description']??'');
if ($description=='')$description = 'no-description';
$pos = strpos($description,"\n");
if ($pos!==false)$description = substr($description,0,$pos).'...';
echo "\n- `".$method['declaration']."`: ".$description;
}
//print_r($ast);
endforeach; // foreach package->addons
end_of_addons: