diff --git a/src/ResourceStore.php b/src/ResourceStore.php index 4990479..76315d2 100644 --- a/src/ResourceStore.php +++ b/src/ResourceStore.php @@ -25,7 +25,7 @@ class ResourceStore // [type][priority][uri] = options protected $_store = []; - public function generateHtmlIncludes($for = self::TYPE_CSS) + public function generateHtmlIncludes($for = self::TYPE_CSS, int $priority = null, array $excludePriority = []) { if(!isset($this->_store[$for]) || empty($this->_store[$for])) { @@ -43,7 +43,7 @@ public function generateHtmlIncludes($for = self::TYPE_CSS) } $return = ''; - foreach($this->getResources($for) as $uri => $options) + foreach($this->getResources($for, $priority, $excludePriority) as $uri => $options) { if(strlen($uri) == 32 && !stristr($uri, '/')) { @@ -81,7 +81,7 @@ public function generateHtmlIncludes($for = self::TYPE_CSS) return $return; } - public function getResources($type, int $priority = null) + public function getResources($type, int $priority = null, array $excludePriority = []) { if(isset($this->_store[$type][$priority])) { @@ -93,11 +93,14 @@ public function getResources($type, int $priority = null) $return = []; //Sort based on store priority ksort($this->_store[$type]); - foreach($this->_store[$type] as $resources) + foreach($this->_store[$type] as $currentPriority => $resources) { - foreach($resources as $uri => $options) + if(!in_array($currentPriority, $excludePriority)) { - $return[$uri] = $options; + foreach($resources as $uri => $options) + { + $return[$uri] = $options; + } } } return $return; diff --git a/tests/ResourceStoreTest.php b/tests/ResourceStoreTest.php index ec48626..4017f83 100644 --- a/tests/ResourceStoreTest.php +++ b/tests/ResourceStoreTest.php @@ -40,6 +40,14 @@ public function testPriority() $store->getResources(ResourceStore::TYPE_CSS) ); + $this->assertEquals( + [ + 'css/high.css' => null, + 'css/test.css' => null, + ], + $store->getResources(ResourceStore::TYPE_CSS, null, [ResourceStore::PRIORITY_LOW]) + ); + $this->assertEquals( ['css/high.css' => null], $store->getResources(ResourceStore::TYPE_CSS, ResourceStore::PRIORITY_HIGH)