Skip to content

Commit

Permalink
Added Code, Test and updated Readme
Browse files Browse the repository at this point in the history
Signed-off-by: Muhammad Yousuf Fazal <[email protected]>
  • Loading branch information
myousuffazal committed Oct 24, 2023
1 parent bb31df2 commit a51ea4b
Show file tree
Hide file tree
Showing 9 changed files with 46 additions and 22 deletions.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ Example:
Parameters:
* `lang`: One of the [supported languages]
* `line`: (Optional) show line numbers
* `render`: (Optional) render as Markdown

Examples:

Expand All @@ -74,6 +75,11 @@ Render PHP file with line numbers:
{{#embed:https://example.com/fluffy/kittens.php|lang=php|line}}
```

Render file as Markdown:
```
{{#embed:https://example.com/fluffy/kittens.php|render}}
```

### Refreshing external content

To refresh all the pages containing one of the parser functions added by this extension, run
Expand Down Expand Up @@ -113,6 +119,16 @@ You can verify the extension was enabled successfully by opening your wikis Spec

Configuration can be changed via [LocalSettings.php].

### Render markdown by default

Render markdown files rather than showing the markdown in a codeblock, unless the file is explicitly marked as code.

Variable: `$wgExternalContentRenderMarkdownByDefault`

Default: `true`

Example: `false` - disables the default markdown render

### Domain whitelist

List of allowed domains to embed content from. Leave empty to have no restriction.
Expand Down
3 changes: 2 additions & 1 deletion src/Domain/ContentRenderer/RendererConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class RendererConfig {
public function __construct(
public string $fileExtension,
public string $language,
public bool $showLineNumbers
public bool $showLineNumbers,
public bool $render
) {
}

Expand Down
17 changes: 5 additions & 12 deletions src/Domain/WikiContentRendererFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,15 @@
class WikiContentRendererFactory implements ContentRendererFactory {

public function createContentRenderer( RendererConfig $config ): ContentRenderer {
if ( $config->language !== '' ) {
if ( $config->render ) {
return new MarkdownRenderer();
}
else {
return new CodeRenderer(
language: $config->language,
language: ( $config->language !== '' ) ? $config->language : $config->fileExtension, // TODO: Use an extension-to-language map, although common extensions already work.
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
);
}

}
1 change: 1 addition & 0 deletions src/EmbedExtensionFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class EmbedExtensionFactory {

public const DEFAULT_CONFIG = [
'wgLanguageCode' => 'en',
'wgExternalContentRenderMarkdownByDefault' => true,
'wgExternalContentDomainWhitelist' => [],
'wgExternalContentFileExtensionWhitelist' => [ 'md' ],
'wgExternalContentEnableEmbedFunction' => true,
Expand Down
3 changes: 2 additions & 1 deletion src/UseCases/Embed/EmbedRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ class EmbedRequest {
public function __construct(
public string $fileUrl,
public ?string $language,
public ?bool $showLineNumbers
public ?bool $showLineNumbers,
public ?bool $render
) {
}

Expand Down
7 changes: 6 additions & 1 deletion src/UseCases/Embed/EmbedRequestBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

namespace ProfessionalWiki\ExternalContent\UseCases\Embed;

use MediaWiki\MediaWikiServices;
class EmbedRequestBuilder {

/**
Expand All @@ -14,11 +15,15 @@ public static function argumentsToRequest( array $arguments ): EmbedRequest {

$language = $normalizedArguments['lang'] ?? null;
$line = $normalizedArguments['line'] ?? null;
$render = $normalizedArguments['render'] ?? null;

$markdownByDefault = MediaWikiServices::getInstance()->getMainConfig()->get( 'ExternalContentRenderMarkdownByDefault' );

return new EmbedRequest(
fileUrl: $arguments[0],
language: is_string( $language ) ? $language : null,
showLineNumbers: is_bool( $line ) ? $line : null
showLineNumbers: is_bool( $line ) ? $line : null,
render: is_bool( $markdownByDefault ) ? $markdownByDefault : ( is_bool( $render ) ? $render : null ),
);
}

Expand Down
3 changes: 2 additions & 1 deletion src/UseCases/Embed/EmbedUseCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ private function createRendererConfig( EmbedRequest $request ): RendererConfig {
return new RendererConfig(
fileExtension: $this->extractFileExtension( $this->urlNormalizer->fullNormalize( $request->fileUrl ) ),
language: $request->language ?? '',
showLineNumbers: $request->showLineNumbers ?? false
showLineNumbers: $request->showLineNumbers ?? false,
render: $request->render ?? false
);
}

Expand Down
15 changes: 10 additions & 5 deletions tests/Unit/Domain/WikiContentRendererFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ public function testMarkdownFileAndConfigWithoutLanguageCreatesMarkdownRenderer(
new RendererConfig(
fileExtension: 'md',
language: '',
showLineNumbers: false
showLineNumbers: false,
render: true
)
)
);
Expand All @@ -33,7 +34,8 @@ public function testConfigWithoutLanguageCreatesCodeRenderer(): void {
new RendererConfig(
fileExtension: 'php',
language: '',
showLineNumbers: false
showLineNumbers: false,
render: false
)
)
);
Expand All @@ -46,7 +48,8 @@ public function testConfigWithLanguageCreatesCodeRenderer(): void {
new RendererConfig(
fileExtension: 'php',
language: 'php',
showLineNumbers: false
showLineNumbers: false,
render: false
)
)
);
Expand All @@ -59,7 +62,8 @@ public function testConfigWithLanguageAndLineNumbersCreatesCodeRenderer(): void
new RendererConfig(
fileExtension: 'php',
language: 'php',
showLineNumbers: true
showLineNumbers: true,
render: false
)
)
);
Expand All @@ -72,7 +76,8 @@ public function testConfigWithMarkdownLanguageCreatesCodeRenderer(): void {
new RendererConfig(
fileExtension: 'md',
language: 'md',
showLineNumbers: false
showLineNumbers: false,
render: false
)
)
);
Expand Down
3 changes: 2 additions & 1 deletion tests/Unit/UseCases/Embed/EmbedUseCaseTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ private function createRequest( string $fileUrl ): EmbedRequest {
return new EmbedRequest(
fileUrl: $fileUrl,
language: '',
showLineNumbers: false
showLineNumbers: false,
render: false
);
}

Expand Down

0 comments on commit a51ea4b

Please sign in to comment.