Skip to content

Commit

Permalink
add jsonFile based resolver/requirement
Browse files Browse the repository at this point in the history
  • Loading branch information
Flyingmana committed May 29, 2014
1 parent 00f2064 commit a02e61b
Show file tree
Hide file tree
Showing 7 changed files with 150 additions and 2 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ try the example URLs:

* /home/Home.html
* /content/News.html
* /content/NewsItem.html?title=hawhaw&text=how%20how%20how

28 changes: 28 additions & 0 deletions src/p2ee/SilexPartletDemo/Components/dynamic/JsonItemTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php
namespace p2ee\SilexPartletDemo\Components\dynamic;

use p2ee\SilexPartletDemo\Requirement\JsonFileRequirement;
use p2ee\SilexPartletDemo\SilexPartlet;

class JsonItemTest extends SilexPartlet
{

protected $article;

public function collect()
{
yield [
new JsonFileRequirement('article' , __DIR__ . '/item.json', 'article1'),
];
}

public function getData()
{

return [
'title' => $this->article['title'],
'text' => $this->article['text'],
];
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<li>
<article>
<h3>{{ title }}</h3>

<div>{{ text }}</div>
</article>
</li>
10 changes: 10 additions & 0 deletions src/p2ee/SilexPartletDemo/Components/dynamic/item.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"article1": {
"title": "haw haw",
"text": "how how how"
},
"article2": {
"title": "lroemia Ipsum",
"text": "dolorte to cetsum"
}
}
17 changes: 15 additions & 2 deletions src/p2ee/SilexPartletDemo/InjectorProvider/PreparerProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
use p2ee\Partlets\PartletRequirement;
use p2ee\Partlets\PartletResolver;
use p2ee\Preparables\Preparer;
use p2ee\SilexPartletDemo\Requirement\JsonFileRequirement;
use p2ee\SilexPartletDemo\Resolver\JsonFileResolver;
use rg\injektor\Provider;

/**
Expand All @@ -28,17 +30,27 @@ class PreparerProvider implements Provider {
* @var \p2ee\Partlets\PartletResolver
*/
private $partletResolver;
/**
* @var \p2ee\SilexPartletDemo\Resolver\JsonFileResolver
*/
private $jsonFileResolver;

/**
* @inject
* @param ServiceResolver $serviceResolver
* @param RequestDataResolver $requestDataResolver
* @param PartletResolver $partletResolver
*/
public function __construct(ServiceResolver $serviceResolver, RequestDataResolver $requestDataResolver, PartletResolver $partletResolver) {
public function __construct(
ServiceResolver $serviceResolver,
RequestDataResolver $requestDataResolver,
PartletResolver $partletResolver,
JsonFileResolver $jsonFileResolver
) {
$this->serviceResolver = $serviceResolver;
$this->requestDataResolver = $requestDataResolver;
$this->partletResolver = $partletResolver;
$this->jsonFileResolver = $jsonFileResolver;
}

private function build() {
Expand All @@ -49,7 +61,8 @@ private function build() {
ServiceRequirement::class => $this->serviceResolver,
RequestDataRequirement::class => $this->requestDataResolver,
PartletRequirement::class => $this->partletResolver,
]);
JsonFileRequirement::class => $this->jsonFileResolver,
]);
}

public function get() {
Expand Down
46 changes: 46 additions & 0 deletions src/p2ee/SilexPartletDemo/Requirement/JsonFileRequirement.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
<?php
/**
*
*
*
*
*/

namespace p2ee\SilexPartletDemo\Requirement;

use p2ee\Preparables\Requirement;

class JsonFileRequirement extends Requirement
{

protected $file;

protected $jsonElementKey;

public function __construct($key, $file, $jsonElementKey = null)
{
$this->key = $key;
$this->file = $file;
$this->jsonElementKey = $jsonElementKey;
}

public function getFile()
{
return $this->file;
}

public function getJsonElementKey()
{
return $this->jsonElementKey;
}

public function isCacheable()
{
return false;
}

public function getCacheKey()
{
return null;
}
}
43 changes: 43 additions & 0 deletions src/p2ee/SilexPartletDemo/Resolver/JsonFileResolver.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php
/**
*
*
*
*
*/

namespace p2ee\SilexPartletDemo\Resolver;

use p2ee\Preparables\Preparer;
use p2ee\Preparables\Requirement;
use p2ee\Preparables\Resolver;
use p2ee\SilexPartletDemo\Requirement\JsonFileRequirement;

class JsonFileResolver implements Resolver
{

/**
* @param Requirement|JsonFileRequirement $requirement
* @param Preparer $preparer
*
* @return mixed
*/
public function resolve(Requirement $requirement, Preparer $preparer)
{
$result = json_decode(file_get_contents($requirement->getFile()), true);

$key = $requirement->getJsonElementKey();
if ($key !== null) {
$result = $result[$key];
}
return $result;
}

/**
* @return string
*/
public function getSupportedType()
{
return JsonFileRequirement::class;
}
}

0 comments on commit a02e61b

Please sign in to comment.