mirror of
https://github.com/there4/markdown-resume.git
synced 2024-12-03 08:59:35 -05:00
Initial commit of Markdown Resume
This includes several vendor libraries: Assetic, LessPHP, Mustache, SmartyPants, Markdown
This commit is contained in:
163
vendor/Assetic/Asset/AssetCache.php
vendored
Executable file
163
vendor/Assetic/Asset/AssetCache.php
vendored
Executable file
@@ -0,0 +1,163 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Assetic package, an OpenSky project.
|
||||
*
|
||||
* (c) 2010-2011 OpenSky Project Inc
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Assetic\Asset;
|
||||
|
||||
use Assetic\Cache\CacheInterface;
|
||||
use Assetic\Filter\FilterInterface;
|
||||
|
||||
/**
|
||||
* Caches an asset to avoid the cost of loading and dumping.
|
||||
*
|
||||
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
|
||||
*/
|
||||
class AssetCache implements AssetInterface
|
||||
{
|
||||
private $asset;
|
||||
private $cache;
|
||||
|
||||
public function __construct(AssetInterface $asset, CacheInterface $cache)
|
||||
{
|
||||
$this->asset = $asset;
|
||||
$this->cache = $cache;
|
||||
}
|
||||
|
||||
public function ensureFilter(FilterInterface $filter)
|
||||
{
|
||||
$this->asset->ensureFilter($filter);
|
||||
}
|
||||
|
||||
public function getFilters()
|
||||
{
|
||||
return $this->asset->getFilters();
|
||||
}
|
||||
|
||||
public function clearFilters()
|
||||
{
|
||||
$this->asset->clearFilters();
|
||||
}
|
||||
|
||||
public function load(FilterInterface $additionalFilter = null)
|
||||
{
|
||||
$cacheKey = self::getCacheKey($this->asset, $additionalFilter, 'load');
|
||||
if ($this->cache->has($cacheKey)) {
|
||||
$this->asset->setContent($this->cache->get($cacheKey));
|
||||
return;
|
||||
}
|
||||
|
||||
$this->asset->load($additionalFilter);
|
||||
$this->cache->set($cacheKey, $this->asset->getContent());
|
||||
}
|
||||
|
||||
public function dump(FilterInterface $additionalFilter = null)
|
||||
{
|
||||
$cacheKey = self::getCacheKey($this->asset, $additionalFilter, 'dump');
|
||||
if ($this->cache->has($cacheKey)) {
|
||||
return $this->cache->get($cacheKey);
|
||||
}
|
||||
|
||||
$content = $this->asset->dump($additionalFilter);
|
||||
$this->cache->set($cacheKey, $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
return $this->asset->getContent();
|
||||
}
|
||||
|
||||
public function setContent($content)
|
||||
{
|
||||
$this->asset->setContent($content);
|
||||
}
|
||||
|
||||
public function getSourceRoot()
|
||||
{
|
||||
return $this->asset->getSourceRoot();
|
||||
}
|
||||
|
||||
public function getSourcePath()
|
||||
{
|
||||
return $this->asset->getSourcePath();
|
||||
}
|
||||
|
||||
public function getTargetPath()
|
||||
{
|
||||
return $this->asset->getTargetPath();
|
||||
}
|
||||
|
||||
public function setTargetPath($targetPath)
|
||||
{
|
||||
$this->asset->setTargetPath($targetPath);
|
||||
}
|
||||
|
||||
public function getLastModified()
|
||||
{
|
||||
return $this->asset->getLastModified();
|
||||
}
|
||||
|
||||
public function getVars()
|
||||
{
|
||||
return $this->asset->getVars();
|
||||
}
|
||||
|
||||
public function setValues(array $values)
|
||||
{
|
||||
$this->asset->setValues($values);
|
||||
}
|
||||
|
||||
public function getValues()
|
||||
{
|
||||
return $this->asset->getValues();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a cache key for the current asset.
|
||||
*
|
||||
* The key is composed of everything but an asset's content:
|
||||
*
|
||||
* * source root
|
||||
* * source path
|
||||
* * target url
|
||||
* * last modified
|
||||
* * filters
|
||||
*
|
||||
* @param AssetInterface $asset The asset
|
||||
* @param FilterInterface $additionalFilter Any additional filter being applied
|
||||
* @param string $salt Salt for the key
|
||||
*
|
||||
* @return string A key for identifying the current asset
|
||||
*/
|
||||
static private function getCacheKey(AssetInterface $asset, FilterInterface $additionalFilter = null, $salt = '')
|
||||
{
|
||||
if ($additionalFilter) {
|
||||
$asset = clone $asset;
|
||||
$asset->ensureFilter($additionalFilter);
|
||||
}
|
||||
|
||||
$cacheKey = $asset->getSourceRoot();
|
||||
$cacheKey .= $asset->getSourcePath();
|
||||
$cacheKey .= $asset->getTargetPath();
|
||||
$cacheKey .= $asset->getLastModified();
|
||||
|
||||
foreach ($asset->getFilters() as $filter) {
|
||||
$cacheKey .= serialize($filter);
|
||||
}
|
||||
|
||||
if ($values = $asset->getValues()) {
|
||||
asort($values);
|
||||
$cacheKey .= serialize($values);
|
||||
}
|
||||
|
||||
return md5($cacheKey.$salt);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user