-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
300 additions
and
159 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?php | ||
|
||
declare( strict_types = 1 ); | ||
|
||
namespace ProfessionalWiki\ExternalContent\Domain\ContentRenderer; | ||
|
||
class RendererConfig { | ||
|
||
public function __construct( | ||
public string $fileExtension, | ||
public string $language, | ||
public bool $showLineNumbers | ||
) { | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
declare( strict_types = 1 ); | ||
|
||
namespace ProfessionalWiki\ExternalContent\Domain; | ||
|
||
use ProfessionalWiki\ExternalContent\Domain\ContentRenderer\CodeRenderer; | ||
use ProfessionalWiki\ExternalContent\Domain\ContentRenderer\MarkdownRenderer; | ||
use ProfessionalWiki\ExternalContent\Domain\ContentRenderer\RendererConfig; | ||
|
||
class WikiContentRendererFactory implements ContentRendererFactory { | ||
|
||
public function createContentRenderer( RendererConfig $config ): ContentRenderer { | ||
if ( $config->language !== '' ) { | ||
return new CodeRenderer( | ||
language: $config->language, | ||
showLineNumbers: $config->showLineNumbers | ||
); | ||
} | ||
|
||
// TODO: check config if this should be default behavior | ||
if ( $config->fileExtension === 'md' ) { | ||
return new MarkdownRenderer(); | ||
} | ||
|
||
return new CodeRenderer( | ||
language: $config->fileExtension, // TODO: Use an extension-to-language map, although common extensions already work. | ||
showLineNumbers: $config->showLineNumbers | ||
); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?php | ||
|
||
declare( strict_types = 1 ); | ||
|
||
namespace ProfessionalWiki\ExternalContent\UseCases\Embed; | ||
|
||
class EmbedRequest { | ||
|
||
public function __construct( | ||
public string $fileUrl, | ||
public ?string $language, | ||
public ?bool $showLineNumbers | ||
) { | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
<?php | ||
|
||
declare( strict_types = 1 ); | ||
|
||
namespace ProfessionalWiki\ExternalContent\UseCases\Embed; | ||
|
||
class EmbedRequestBuilder { | ||
|
||
/** | ||
* @param string[] $arguments | ||
*/ | ||
public static function argumentsToRequest( array $arguments ): EmbedRequest { | ||
$normalizedArguments = self::normalizeArguments( array_slice( $arguments, 1 ) ); | ||
|
||
$language = $normalizedArguments['lang'] ?? null; | ||
$line = $normalizedArguments['line'] ?? null; | ||
|
||
return new EmbedRequest( | ||
fileUrl: $arguments[0], | ||
language: is_string( $language ) ? $language : null, | ||
showLineNumbers: is_bool( $line ) ? $line : null | ||
); | ||
} | ||
|
||
/** | ||
* @param string[] $arguments | ||
* @return array<string,string|boolean> $results | ||
*/ | ||
private static function normalizeArguments( array $arguments ): array { | ||
$results = []; | ||
|
||
foreach ( $arguments as $argument ) { | ||
$pair = array_map( 'trim', explode( '=', $argument, 2 ) ); | ||
if ( count( $pair ) === 2 ) { | ||
$results[ $pair[0] ] = $pair[1]; | ||
} | ||
if ( count( $pair ) === 1 ) { | ||
$results[ $pair[0] ] = true; | ||
} | ||
} | ||
|
||
return $results; | ||
} | ||
|
||
} |
Oops, something went wrong.