Skip to content
Snippets Groups Projects
Commit e1a10fa9 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

course block type changes rector

parent 80aeb934
No related branches found
No related tags found
1 merge request!18Draft: add rector and provide initial set of rectors for stud.ip 6.0
......@@ -8,7 +8,8 @@ use Studip\Rectors\Studip60\RemoveIncludesRector;
return RectorConfig::configure()
->withRules([
Studip\Rectors\Studip60\RemoveGetConfigRector::class,
Studip\Rectors\Studip60\RemoveSidebarMethodsRector::class
Studip\Rectors\Studip60\RemoveSidebarMethodsRector::class,
Studip\Rectors\Studip60\RewriteCoursewareBlockTypesRector::class,
])
->withConfiguredRule(RenameFunctionRector::class, [
'studip_json_decode' => 'json_decode',
......
<?php
declare(strict_types=1);
namespace Studip\Rectors\Studip60;
use PhpParser\Node;
use PhpParser\Node\Expr\StaticCall;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
use Rector\Rector\AbstractRector;
final class RewriteCoursewareBlockTypesRector extends AbstractRector
{
public function getNodeTypes(): array
{
return [StaticCall::class, Class_::class];
}
/**
* @param StaticCall|Class_ $node
*/
public function refactor(Node $node)
{
if ($this->shouldSkip($node)) {
return null;
}
if ($node instanceof Class_) {
$this->traverseNodesWithCallable(
$node->getMethods(),
[$this, 'refactor']
);
return null;
} elseif ($node instanceof ClassMethod) {
$node->returnType = new Node\Identifier('string');
return $node;
} elseif ($node instanceof StaticCall) {
return $node->args[0]->value;
}
}
public function shouldSkip(Node $node): bool
{
return !(
$node instanceof Class_
&& $this->isName($node->extends, 'Courseware\BlockTypes\BlockType')
) && !(
$node instanceof ClassMethod
&& $this->isName($node->name, 'getJsonSchema')
&& $this->isName($node->returnType, 'Opis\JsonSchema\Schema')
) && !(
$node instanceof StaticCall
&& $this->isName($node->class, 'Opis\JsonSchema\Schema')
&& $this->isName($node->name, 'fromJsonString')
);
}
}
......@@ -51,3 +51,45 @@ try {
echo 'some exception';
}
class TestBlockType extends \Courseware\BlockTypes\BlockType
{
public static function getType(): string
{
return '';
}
public static function getTitle(): string
{
return '';
}
public static function getDescription(): string
{
return '';
}
public function initialPayload(): array
{
return [];
}
public static function getCategories(): array
{
return [];
}
public static function getContentTypes(): array
{
return [];
}
public static function getFileTypes(): array
{
return [];
}
public static function getJsonSchema(): \Opis\JsonSchema\Schema
{
return \Opis\JsonSchema\Schema::fromJsonString(file_get_contents(__FILE__));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment