Skip to content

Commit

Permalink
- restore sitemap middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
horuskol committed Aug 14, 2023
1 parent d539e66 commit f6dc1fd
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 45 deletions.
1 change: 1 addition & 0 deletions caxton
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ $middlewares = [
Middleware\ScanFiles::class,
Middleware\CopyStaticFiles::class,
Middleware\BuildContentFiles::class,
Middleware\GenerateSiteMap::class,
];

$action = fn (Site $site): Site => $site;
Expand Down
63 changes: 63 additions & 0 deletions src/File.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

namespace SavvyWombat\Caxton;

use Illuminate\Support\Carbon;

class File
{
public function __construct(
protected string $sourcePath,
protected string $outputPath,
protected ?array $data = [],
) {
$this->extensions = str_replace('.', '\.', Config::instance()->get('blade.extensions'));
}

public function sourcePath(): string
{
return $this->sourcePath;
}

public function outputPath(): string
{
foreach (Site::instance()->maps() as $map) {
if (str_starts_with($this->outputPath, $map['path'])) {
return str_replace($map['path'], $map['url'], $this->outputPath);
}
}

return $this->outputPath;
}

public function url(): string
{
foreach (Site::instance()->maps() as $map) {
if (str_starts_with($this->outputPath, $map['path'])) {
return str_replace($map['path'], $map['url'], $this->outputPath);
}
}

return $this->outputPath;
}

public function fullUrl(): string
{
return Config::instance()->get('base_url') . '/' . $this->url();
}

public function data(): array
{
return $this->data;
}

public function type(): string
{
return mime_content_type(Config::instance()->get('paths.output') . '/' . $this->outputPath());
}

public function lastModified(): ?Carbon
{
return Carbon::createFromTimestamp(filemtime(Config::instance()->get('paths.output') . '/' . $this->outputPath()));
}
}
4 changes: 2 additions & 2 deletions src/Middleware/BuildContentFiles.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use SavvyWombat\Caxton\Config;
use SavvyWombat\Caxton\Markdown\MarkdownConverter;
use SavvyWombat\Caxton\Site;
use SavvyWombat\Caxton\SourceFile;
use SavvyWombat\Caxton\File;

class BuildContentFiles implements Middleware
{
Expand All @@ -29,7 +29,7 @@ public function run(Site $site, callable $next): Site
return $next($site);
}

protected function buildFromTemplate(SourceFile $sourceFile, string $outputPath)
protected function buildFromTemplate(File $sourceFile, string $outputPath)
{
$extensions = str_replace('.', '\.', Config::instance()->get('blade.extensions'));

Expand Down
10 changes: 5 additions & 5 deletions src/Middleware/GenerateSiteMap.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
use SavvyWombat\Caxton\Blade\ViewFactory;
use SavvyWombat\Caxton\Config;
use SavvyWombat\Caxton\File;
use SavvyWombat\Caxton\FileList;
use SavvyWombat\Caxton\Site;

/**
* Builds a sitemap file to assist search engine discovery.
Expand All @@ -14,19 +14,19 @@
*/
class GenerateSiteMap implements Middleware
{
public function run (FileList $files, $next): FileList
public function run (Site $site, $next): Site
{
$sitemap = ViewFactory::instance()->make(
'sitemap',
[
'files' => $files,
'files' => $site->sourceFiles(),
]
)->render();

file_put_contents(Config::instance()->get('paths.output') . '/sitemap.xml', $sitemap);

$files->add(new File('/sitemap.xml'));
$site->addFile(new File('/sitemap.xml', '/sitemap.xml'));

return $next($files);
return $next($site);
}
}
6 changes: 3 additions & 3 deletions src/Middleware/ScanFiles.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
use SavvyWombat\Caxton\ContentFileFilter;
use SavvyWombat\Caxton\Markdown\MarkdownConverter;
use SavvyWombat\Caxton\Site;
use SavvyWombat\Caxton\SourceFile;
use SavvyWombat\Caxton\File;

class ScanFiles implements Middleware
{
Expand Down Expand Up @@ -48,7 +48,7 @@ protected function scanPublicFiles(): void
);

$this->site->addFile(
new SourceFile($sourcePath, $outputPath)
new File($sourcePath, $outputPath)
);
}
}
Expand Down Expand Up @@ -91,7 +91,7 @@ protected function scanContentFiles(): void
}

$this->site->addFile(
new SourceFile($sourcePath, $outputPath, $data)
new File($sourcePath, $outputPath, $data)
);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Site.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public static function instance(): Site
return self::$instance;
}

public function addFile(SourceFile $file): void
public function addFile(File $file): void
{
$this->sourceFiles[] = $file;
}
Expand Down
34 changes: 0 additions & 34 deletions src/SourceFile.php

This file was deleted.

0 comments on commit f6dc1fd

Please sign in to comment.