forked from MarcusSchwarz/lesserphp
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Added object block Blocks were handed around as \stdClass, this new class Block solves this. All fields are public for now, so nothing breaks. * Diversified Block by all its types and introduced type hints to methods handling a Block * Code style * Code style
- Loading branch information
1 parent
b38731e
commit 5d7e298
Showing
8 changed files
with
525 additions
and
49 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
<?php | ||
namespace LesserPhp; | ||
|
||
/** | ||
* lesserphp | ||
* https://www.maswaba.de/lesserphp | ||
* | ||
* LESS CSS compiler, adapted from http://lesscss.org | ||
* | ||
* Copyright 2013, Leaf Corcoran <leafot@gmail.com> | ||
* Copyright 2016, Marcus Schwarz <github@maswaba.de> | ||
* Copyright 2017, Stefan Pöhner <github@poe-php.de> | ||
* Licensed under MIT or GPLv3, see LICENSE | ||
* | ||
* @package LesserPhp | ||
*/ | ||
|
||
class Block | ||
{ | ||
/** | ||
* @var Block|null | ||
*/ | ||
public $parent; | ||
|
||
/** | ||
* @var string|null | ||
*/ | ||
public $type; | ||
|
||
/** | ||
* @var int | ||
*/ | ||
public $id; | ||
|
||
/** | ||
* @var bool | ||
*/ | ||
public $isVararg = false; | ||
|
||
/** | ||
* @var array|null | ||
*/ | ||
public $tags; | ||
|
||
/** | ||
* @var array | ||
*/ | ||
public $props = []; | ||
|
||
/** | ||
* @var Block[] | ||
*/ | ||
public $children = []; | ||
|
||
/** | ||
* Position of this block. | ||
* | ||
* @var int | ||
*/ | ||
public $count; | ||
|
||
/** | ||
* Add a reference to the parser so | ||
* we can access the parser to throw errors | ||
* or retrieve the sourceName of this block. | ||
* | ||
* @var Parser | ||
*/ | ||
public $parser; | ||
|
||
/** | ||
* Block constructor. | ||
* | ||
* @param Parser $parser | ||
* @param int $id | ||
* @param int $count | ||
* @param array|null $tags | ||
* @param Block|null $parent | ||
*/ | ||
public function __construct(Parser $parser, $id, $count, array $tags = null, Block $parent = null) | ||
{ | ||
$this->parser = $parser; | ||
$this->id = $id; | ||
$this->count = $count; | ||
$this->type = $this->getType(); | ||
$this->tags = $tags; | ||
$this->parent = $parent; | ||
} | ||
|
||
/** | ||
* @return string|null | ||
*/ | ||
public function getType() | ||
{ | ||
return null; | ||
} | ||
|
||
/** | ||
* @param Parser $parser | ||
* @param int $id | ||
* @param int $count | ||
* @param string|null $type | ||
* @param array|null $tags | ||
* @param Block|null $parent | ||
* | ||
* @return Block | ||
*/ | ||
public static function factory(Parser $parser, $id, $count, $type = null, array $tags = null, Block $parent = null) | ||
{ | ||
if ($type === null) { | ||
$className = self::class; | ||
} else { | ||
$className = __NAMESPACE__ . '\Block\\' . ucfirst($type); | ||
} | ||
|
||
if (!class_exists($className)) { | ||
throw new \UnexpectedValueException("Unknown block type: $type"); | ||
} | ||
|
||
$block = new $className($parser, $id, $count, $tags, $parent); | ||
|
||
return $block; | ||
} | ||
} |
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,38 @@ | ||
<?php | ||
namespace LesserPhp\Block; | ||
|
||
/** | ||
* lesserphp | ||
* https://www.maswaba.de/lesserphp | ||
* | ||
* LESS CSS compiler, adapted from http://lesscss.org | ||
* | ||
* Copyright 2013, Leaf Corcoran <leafot@gmail.com> | ||
* Copyright 2016, Marcus Schwarz <github@maswaba.de> | ||
* Copyright 2017, Stefan Pöhner <github@poe-php.de> | ||
* Licensed under MIT or GPLv3, see LICENSE | ||
* | ||
* @package LesserPhp | ||
*/ | ||
use LesserPhp\Block; | ||
|
||
class Directive extends Block | ||
{ | ||
/** | ||
* @var string | ||
*/ | ||
public $name; | ||
|
||
/** | ||
* @var mixed | ||
*/ | ||
public $value; | ||
|
||
/** | ||
* @inheritdoc | ||
*/ | ||
public function getType() | ||
{ | ||
return 'directive'; | ||
} | ||
} |
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,28 @@ | ||
<?php | ||
namespace LesserPhp\Block; | ||
|
||
use LesserPhp\Block; | ||
|
||
/** | ||
* lesserphp | ||
* https://www.maswaba.de/lesserphp | ||
* | ||
* LESS CSS compiler, adapted from http://lesscss.org | ||
* | ||
* Copyright 2013, Leaf Corcoran <leafot@gmail.com> | ||
* Copyright 2016, Marcus Schwarz <github@maswaba.de> | ||
* Copyright 2017, Stefan Pöhner <github@poe-php.de> | ||
* Licensed under MIT or GPLv3, see LICENSE | ||
* | ||
* @package LesserPhp | ||
*/ | ||
class Media extends Block | ||
{ | ||
/** | ||
* @inheritdoc | ||
*/ | ||
public function getType() | ||
{ | ||
return 'media'; | ||
} | ||
} |
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,28 @@ | ||
<?php | ||
namespace LesserPhp\Block; | ||
|
||
use LesserPhp\Block; | ||
|
||
/** | ||
* lesserphp | ||
* https://www.maswaba.de/lesserphp | ||
* | ||
* LESS CSS compiler, adapted from http://lesscss.org | ||
* | ||
* Copyright 2013, Leaf Corcoran <leafot@gmail.com> | ||
* Copyright 2016, Marcus Schwarz <github@maswaba.de> | ||
* Copyright 2017, Stefan Pöhner <github@poe-php.de> | ||
* Licensed under MIT or GPLv3, see LICENSE | ||
* | ||
* @package LesserPhp | ||
*/ | ||
class Root extends Block | ||
{ | ||
/** | ||
* @inheritdoc | ||
*/ | ||
public function getType() | ||
{ | ||
return 'root'; | ||
} | ||
} |
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,29 @@ | ||
<?php | ||
namespace LesserPhp\Block; | ||
|
||
/** | ||
* lesserphp | ||
* https://www.maswaba.de/lesserphp | ||
* | ||
* LESS CSS compiler, adapted from http://lesscss.org | ||
* | ||
* Copyright 2013, Leaf Corcoran <leafot@gmail.com> | ||
* Copyright 2016, Marcus Schwarz <github@maswaba.de> | ||
* Copyright 2017, Stefan Pöhner <github@poe-php.de> | ||
* Licensed under MIT or GPLv3, see LICENSE | ||
* | ||
* @package LesserPhp | ||
*/ | ||
|
||
class Ruleset extends Directive | ||
{ | ||
/** | ||
* @inheritdoc | ||
*/ | ||
public function getType() | ||
{ | ||
// this deliberately returns null | ||
// the concept of a ruleset block does not exists, but it behaves like a directive without the directive type | ||
return null; | ||
} | ||
} |
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
Oops, something went wrong.