Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
edgrosvenor committed Jun 17, 2024
1 parent 7c466a7 commit 44fcd4b
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 8 deletions.
43 changes: 36 additions & 7 deletions src/Actions/AddNavigationToAllRenderedFiles.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,54 @@
namespace ArtisanBuild\Docsidian\Actions;

use ArtisanBuild\Docsidian\DocumentationSite;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;

// TODO: I really want to find a better solution for this. Perhaps run it through view() and have
// a template defined in the config, with a good default set.
class AddNavigationToAllRenderedFiles
{
public Collection $content;

public function __construct()
{
$this->content = collect();
}
public function __invoke(DocumentationSite $site, \Closure $next)
{
$navigation = json_decode(file_get_contents($site->configuration['folio_path'].'/navigation.json'), true, 512, JSON_THROW_ON_ERROR);
$navigation = collect(json_decode(file_get_contents($site->configuration['folio_path'].'/navigation.json'), true, 512, JSON_THROW_ON_ERROR));

$this->content->push('<x-slot name="navigation"><ul><li><a href="/'.$site->configuration['folio_uri'].'">' . $site->configuration['name'] . '</a></li>');

$navigation->where('parent', '')->each(function($item) use ($navigation) {
$this->content->push('<li><a href="'.$item['uri'].'">'.$item['title'].'</a>');
$uri = explode('/', $item['uri']);
$parent = '/'.last($uri);
$navigation->where('parent', $parent)->each(function($child) {
$this->content->push('<li><a class="ml-4" href="'.$child['uri'].'">&raquo; '.$child['title'].'</a>');
});
});
/* $navigation->each(function($item) {
$parent = Str::uuid();
if ($item['parent'] === '') {
$uri = explode('/', $item['uri']);
array_pop($uri);
$parent = '/'.last($uri);
dump($parent);
}
if ($item['parent'] === $parent) {
$this->content->push('<li><a class="ml-4" href="'.$item['uri'].'">'.$item['title'].'</a>');
}
});*/

$content = '<x-slot name="navigation"><ul><li><a href="/'.$site->configuration['folio_uri'].'">Documentation Home</a></li>';

foreach ($navigation as $item) {
$content .= '<li><a href="'.$item['uri'].'">'.$item['title'].'</a>';
}

$content .= '</ul></x-slot>';
$this->content->push('</ul></x-slot>');

$site->blade_files->map(fn ($page) => $page->lines->push([
'content' => $content,
'content' => $this->content->implode("\n"),
]));

return $next($site);
Expand Down
10 changes: 9 additions & 1 deletion src/Actions/BuildNavigation.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,24 @@ public function __invoke(DocumentationSite $site, Closure $next)
'title' => $page->title,
'uri' => $page->uri,
'weight' => $weight,
'parent' => $page->parent,
]);

$site->blade_files->each(fn ($page) => $page->lines->each(fn ($line) => $line->stripTag((string) $weight)));
});

File::put($site->configuration['folio_path'].'/navigation.json', $navigation->sortBy('weight')->filter(fn ($item) => $item['weight'] !== null)->toJson());
File::put($site->configuration['folio_path'].'/navigation.json', $navigation->sortBy('weight')->filter(fn ($item) => $item['weight'] !== null)->toJson(JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));

return $next($site);
}

public function getParent($page, $site)
{
$uri = explode('/', $page->uri);
array_pop($uri);
return ltrim('/', str_replace($site->configuration['folio_uri'], '', implode('/', $uri)));
}

protected function getWeight(DocumentationPage $page)
{
$weight = (int) $page->lines->map(function ($line) {

Check failure on line 44 in src/Actions/BuildNavigation.php

View workflow job for this annotation

GitHub Actions / phpstan

Parameter #1 $callback of method Illuminate\Support\Collection<(int|string),mixed>::map() expects callable(mixed, int|string): Illuminate\Support\Collection<int|string, float|int|string>, Closure(mixed): Illuminate\Support\Collection<int|string, float|int|numeric-string> given.
Expand Down
22 changes: 22 additions & 0 deletions src/Actions/TranformInternalLinks.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace ArtisanBuild\Docsidian\Actions;

use ArtisanBuild\Docsidian\DocumentationSite;
use Closure;

class TranformInternalLinks
{
public function __invoke(DocumentationSite $site, Closure $next)
{
$site->blade_files->each(function ($page) {
$page->lines = $page->lines->map(function ($line) {
$line->content = str_replace('index.md"', '"', $line->content);
$line->content = str_replace('.md"', '"', $line->content);
return $line;
});
});

return $next($site);
}
}
2 changes: 2 additions & 0 deletions src/Commands/GenerateCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use ArtisanBuild\Docsidian\Actions\RemoveEmptyParagraphs;
use ArtisanBuild\Docsidian\Actions\SetBlockVisibility;
use ArtisanBuild\Docsidian\Actions\SetPageVisibility;
use ArtisanBuild\Docsidian\Actions\TranformInternalLinks;
use ArtisanBuild\Docsidian\Actions\WrapEachFileInTheLayoutComponent;
use ArtisanBuild\Docsidian\Actions\WriteEachBladeFileToTheFolioPath;
use ArtisanBuild\Docsidian\Contracts\HighlightsCodeBlocks;
Expand Down Expand Up @@ -52,6 +53,7 @@ public function handle(): int
EnableMermaid::class,
HighlightsCodeBlocks::class,
DecorateRemainingHashTags::class,
TranformInternalLinks::class,
EnsureAllHeadingsHaveAnId::class,
GenerateOnPageNavigation::class, //todo
RemoveEmptyParagraphs::class,
Expand Down
2 changes: 2 additions & 0 deletions src/DocumentationPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ public function __construct(
$this->title = data_get($this->lines->where('token', 'h1')->first(), 'text', 'Untitled Page');

$this->uri = str_replace('.blade.php', '', '/'.implode('/', array_filter([$this->site->configuration['folio_uri'], $this->parent, $this->file_name])));
// I shouldn't have to do this
$this->uri = str_replace('//', '/', $this->uri);
}

public function toHtml()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,17 @@

use ArtisanBuild\Docsidian\Filament\Resources\DocsidianSiteResource;
use Filament\Resources\Pages\CreateRecord;
use Illuminate\Support\Facades\Artisan;

class CreateDocsidianSite extends CreateRecord
{
protected static string $resource = DocsidianSiteResource::class;

public function mount(): void
{
Artisan::call('docsidian:discover');
Artisan::call('docsidian:generate');

$this->redirect(url()->previous());
}
}

0 comments on commit 44fcd4b

Please sign in to comment.