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:
76
vendor/Assetic/Extension/Twig/AsseticExtension.php
vendored
Executable file
76
vendor/Assetic/Extension/Twig/AsseticExtension.php
vendored
Executable file
@@ -0,0 +1,76 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\ValueSupplierInterface;
|
||||
use Assetic\Factory\AssetFactory;
|
||||
|
||||
class AsseticExtension extends \Twig_Extension
|
||||
{
|
||||
protected $factory;
|
||||
protected $functions;
|
||||
protected $valueSupplier;
|
||||
|
||||
public function __construct(AssetFactory $factory, $functions = array(), ValueSupplierInterface $valueSupplier = null)
|
||||
{
|
||||
$this->factory = $factory;
|
||||
$this->functions = array();
|
||||
$this->valueSupplier = $valueSupplier;
|
||||
|
||||
foreach ($functions as $function => $options) {
|
||||
if (is_integer($function) && is_string($options)) {
|
||||
$this->functions[$options] = array('filter' => $options);
|
||||
} else {
|
||||
$this->functions[$function] = $options + array('filter' => $function);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getTokenParsers()
|
||||
{
|
||||
return array(
|
||||
new AsseticTokenParser($this->factory, 'javascripts', 'js/*.js'),
|
||||
new AsseticTokenParser($this->factory, 'stylesheets', 'css/*.css'),
|
||||
new AsseticTokenParser($this->factory, 'image', 'images/*', true),
|
||||
);
|
||||
}
|
||||
|
||||
public function getFunctions()
|
||||
{
|
||||
$functions = array();
|
||||
foreach ($this->functions as $function => $filter) {
|
||||
$functions[$function] = new AsseticFilterFunction($function);
|
||||
}
|
||||
|
||||
return $functions;
|
||||
}
|
||||
|
||||
public function getGlobals()
|
||||
{
|
||||
return array(
|
||||
'assetic' => array(
|
||||
'debug' => $this->factory->isDebug(),
|
||||
'vars' => null !== $this->valueSupplier ? $this->valueSupplier->getValues() : array(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
public function getFilterInvoker($function)
|
||||
{
|
||||
return new AsseticFilterInvoker($this->factory, $this->functions[$function]);
|
||||
}
|
||||
|
||||
public function getName()
|
||||
{
|
||||
return 'assetic';
|
||||
}
|
||||
}
|
||||
29
vendor/Assetic/Extension/Twig/AsseticFilterFunction.php
vendored
Executable file
29
vendor/Assetic/Extension/Twig/AsseticFilterFunction.php
vendored
Executable file
@@ -0,0 +1,29 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
class AsseticFilterFunction extends \Twig_Function
|
||||
{
|
||||
private $filter;
|
||||
|
||||
public function __construct($filter, $options = array())
|
||||
{
|
||||
$this->filter = $filter;
|
||||
|
||||
parent::__construct($options);
|
||||
}
|
||||
|
||||
public function compile()
|
||||
{
|
||||
return sprintf('$this->env->getExtension(\'assetic\')->getFilterInvoker(\'%s\')->invoke', $this->filter);
|
||||
}
|
||||
}
|
||||
61
vendor/Assetic/Extension/Twig/AsseticFilterInvoker.php
vendored
Executable file
61
vendor/Assetic/Extension/Twig/AsseticFilterInvoker.php
vendored
Executable file
@@ -0,0 +1,61 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\Factory\AssetFactory;
|
||||
|
||||
/**
|
||||
* Filters a single asset.
|
||||
*
|
||||
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
|
||||
*/
|
||||
class AsseticFilterInvoker
|
||||
{
|
||||
private $factory;
|
||||
private $filters;
|
||||
private $options;
|
||||
|
||||
public function __construct($factory, $filter)
|
||||
{
|
||||
$this->factory = $factory;
|
||||
|
||||
if (is_array($filter) && isset($filter['filter'])) {
|
||||
$this->filters = (array) $filter['filter'];
|
||||
$this->options = isset($filter['options']) ? (array) $filter['options'] : array();
|
||||
} else {
|
||||
$this->filters = (array) $filter;
|
||||
$this->options = array();
|
||||
}
|
||||
}
|
||||
|
||||
public function getFactory()
|
||||
{
|
||||
return $this->factory;
|
||||
}
|
||||
|
||||
public function getFilters()
|
||||
{
|
||||
return $this->filters;
|
||||
}
|
||||
|
||||
public function getOptions()
|
||||
{
|
||||
return $this->options;
|
||||
}
|
||||
|
||||
public function invoke($input, array $options = array())
|
||||
{
|
||||
$asset = $this->factory->createAsset($input, $this->filters, $options + $this->options);
|
||||
|
||||
return $asset->getTargetPath();
|
||||
}
|
||||
}
|
||||
166
vendor/Assetic/Extension/Twig/AsseticNode.php
vendored
Executable file
166
vendor/Assetic/Extension/Twig/AsseticNode.php
vendored
Executable file
@@ -0,0 +1,166 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\Asset\AssetInterface;
|
||||
|
||||
class AsseticNode extends \Twig_Node
|
||||
{
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* Available attributes:
|
||||
*
|
||||
* * debug: The debug mode
|
||||
* * combine: Whether to combine assets
|
||||
* * var_name: The name of the variable to expose to the body node
|
||||
*
|
||||
* @param AssetInterface $asset The asset
|
||||
* @param Twig_NodeInterface $body The body node
|
||||
* @param array $inputs An array of input strings
|
||||
* @param array $filters An array of filter strings
|
||||
* @param string $name The name of the asset
|
||||
* @param array $attributes An array of attributes
|
||||
* @param integer $lineno The line number
|
||||
* @param string $tag The tag name
|
||||
*/
|
||||
public function __construct(AssetInterface $asset, \Twig_NodeInterface $body, array $inputs, array $filters, $name, array $attributes = array(), $lineno = 0, $tag = null)
|
||||
{
|
||||
$nodes = array('body' => $body);
|
||||
|
||||
$attributes = array_replace(
|
||||
array('debug' => null, 'combine' => null, 'var_name' => 'asset_url'),
|
||||
$attributes,
|
||||
array('asset' => $asset, 'inputs' => $inputs, 'filters' => $filters, 'name' => $name)
|
||||
);
|
||||
|
||||
parent::__construct($nodes, $attributes, $lineno, $tag);
|
||||
}
|
||||
|
||||
public function compile(\Twig_Compiler $compiler)
|
||||
{
|
||||
$compiler->addDebugInfo($this);
|
||||
|
||||
$combine = $this->getAttribute('combine');
|
||||
$debug = $this->getAttribute('debug');
|
||||
|
||||
if (null === $combine && null !== $debug) {
|
||||
$combine = !$debug;
|
||||
}
|
||||
|
||||
if (null === $combine) {
|
||||
$compiler
|
||||
->write("if (isset(\$context['assetic']['debug']) && \$context['assetic']['debug']) {\n")
|
||||
->indent()
|
||||
;
|
||||
|
||||
$this->compileDebug($compiler);
|
||||
|
||||
$compiler
|
||||
->outdent()
|
||||
->write("} else {\n")
|
||||
->indent()
|
||||
;
|
||||
|
||||
$this->compileAsset($compiler, $this->getAttribute('asset'), $this->getAttribute('name'));
|
||||
|
||||
$compiler
|
||||
->outdent()
|
||||
->write("}\n")
|
||||
;
|
||||
} elseif ($combine) {
|
||||
$this->compileAsset($compiler, $this->getAttribute('asset'), $this->getAttribute('name'));
|
||||
} else {
|
||||
$this->compileDebug($compiler);
|
||||
}
|
||||
|
||||
$compiler
|
||||
->write('unset($context[')
|
||||
->repr($this->getAttribute('var_name'))
|
||||
->raw("]);\n")
|
||||
;
|
||||
}
|
||||
|
||||
protected function compileDebug(\Twig_Compiler $compiler)
|
||||
{
|
||||
$i = 0;
|
||||
foreach ($this->getAttribute('asset') as $leaf) {
|
||||
$leafName = $this->getAttribute('name').'_'.$i++;
|
||||
$this->compileAsset($compiler, $leaf, $leafName);
|
||||
}
|
||||
}
|
||||
|
||||
protected function compileAsset(\Twig_Compiler $compiler, AssetInterface $asset, $name)
|
||||
{
|
||||
if ($vars = $asset->getVars()) {
|
||||
$compiler->write("// check variable conditions\n");
|
||||
|
||||
foreach ($vars as $var) {
|
||||
$compiler
|
||||
->write("if (!isset(\$context['assetic']['vars']['$var'])) {\n")
|
||||
->indent()
|
||||
->write("throw new \RuntimeException(sprintf('The asset \"".$name."\" expected variable \"".$var."\" to be set, but got only these vars: %s. Did you set-up a value supplier?', isset(\$context['assetic']['vars']) && \$context['assetic']['vars'] ? implode(', ', \$context['assetic']['vars']) : '# none #'));\n")
|
||||
->outdent()
|
||||
->write("}\n")
|
||||
;
|
||||
}
|
||||
|
||||
$compiler->raw("\n");
|
||||
}
|
||||
|
||||
$compiler
|
||||
->write("// asset \"$name\"\n")
|
||||
->write('$context[')
|
||||
->repr($this->getAttribute('var_name'))
|
||||
->raw('] = ')
|
||||
;
|
||||
|
||||
$this->compileAssetUrl($compiler, $asset, $name);
|
||||
|
||||
$compiler
|
||||
->raw(";\n")
|
||||
->subcompile($this->getNode('body'))
|
||||
;
|
||||
}
|
||||
|
||||
protected function compileAssetUrl(\Twig_Compiler $compiler, AssetInterface $asset, $name)
|
||||
{
|
||||
if (!$vars = $asset->getVars()) {
|
||||
$compiler->repr($asset->getTargetPath());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$compiler
|
||||
->raw("strtr(")
|
||||
->string($asset->getTargetPath())
|
||||
->raw(", array(");
|
||||
;
|
||||
|
||||
$first = true;
|
||||
foreach ($vars as $var) {
|
||||
if (!$first) {
|
||||
$compiler->raw(", ");
|
||||
}
|
||||
$first = false;
|
||||
|
||||
$compiler
|
||||
->string("{".$var."}")
|
||||
->raw(" => \$context['assetic']['vars']['$var']")
|
||||
;
|
||||
}
|
||||
|
||||
$compiler
|
||||
->raw("))")
|
||||
;
|
||||
}
|
||||
}
|
||||
150
vendor/Assetic/Extension/Twig/AsseticTokenParser.php
vendored
Executable file
150
vendor/Assetic/Extension/Twig/AsseticTokenParser.php
vendored
Executable file
@@ -0,0 +1,150 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\Asset\AssetInterface;
|
||||
use Assetic\Factory\AssetFactory;
|
||||
|
||||
class AsseticTokenParser extends \Twig_TokenParser
|
||||
{
|
||||
private $factory;
|
||||
private $tag;
|
||||
private $output;
|
||||
private $single;
|
||||
private $extensions;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* Attributes can be added to the tag by passing names as the options
|
||||
* array. These values, if found, will be passed to the factory and node.
|
||||
*
|
||||
* @param AssetFactory $factory The asset factory
|
||||
* @param string $tag The tag name
|
||||
* @param string $output The default output string
|
||||
* @param Boolean $single Whether to force a single asset
|
||||
* @param array $extensions Additional attribute names to look for
|
||||
*/
|
||||
public function __construct(AssetFactory $factory, $tag, $output, $single = false, array $extensions = array())
|
||||
{
|
||||
$this->factory = $factory;
|
||||
$this->tag = $tag;
|
||||
$this->output = $output;
|
||||
$this->single = $single;
|
||||
$this->extensions = $extensions;
|
||||
}
|
||||
|
||||
public function parse(\Twig_Token $token)
|
||||
{
|
||||
$inputs = array();
|
||||
$filters = array();
|
||||
$name = null;
|
||||
$attributes = array(
|
||||
'output' => $this->output,
|
||||
'var_name' => 'asset_url',
|
||||
'vars' => array(),
|
||||
);
|
||||
|
||||
$stream = $this->parser->getStream();
|
||||
while (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
||||
if ($stream->test(\Twig_Token::STRING_TYPE)) {
|
||||
// '@jquery', 'js/src/core/*', 'js/src/extra.js'
|
||||
$inputs[] = $stream->next()->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'filter')) {
|
||||
// filter='yui_js'
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$filters = array_merge($filters, array_filter(array_map('trim', explode(',', $stream->expect(\Twig_Token::STRING_TYPE)->getValue()))));
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'output')) {
|
||||
// output='js/packed/*.js' OR output='js/core.js'
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$attributes['output'] = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'name')) {
|
||||
// name='core_js'
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$name = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'as')) {
|
||||
// as='the_url'
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$attributes['var_name'] = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'debug')) {
|
||||
// debug=true
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$attributes['debug'] = 'true' == $stream->expect(\Twig_Token::NAME_TYPE, array('true', 'false'))->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'combine')) {
|
||||
// combine=true
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$attributes['combine'] = 'true' == $stream->expect(\Twig_Token::NAME_TYPE, array('true', 'false'))->getValue();
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, 'vars')) {
|
||||
// vars=['locale','browser']
|
||||
$stream->next();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$stream->expect(\Twig_Token::PUNCTUATION_TYPE, '[');
|
||||
|
||||
while ($stream->test(\Twig_Token::STRING_TYPE)) {
|
||||
$attributes['vars'][] = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
|
||||
|
||||
if (!$stream->test(\Twig_Token::PUNCTUATION_TYPE, ',')) {
|
||||
break;
|
||||
}
|
||||
|
||||
$stream->next();
|
||||
}
|
||||
|
||||
$stream->expect(\Twig_Token::PUNCTUATION_TYPE, ']');
|
||||
} elseif ($stream->test(\Twig_Token::NAME_TYPE, $this->extensions)) {
|
||||
// an arbitrary configured attribute
|
||||
$key = $stream->next()->getValue();
|
||||
$stream->expect(\Twig_Token::OPERATOR_TYPE, '=');
|
||||
$attributes[$key] = $stream->expect(\Twig_Token::STRING_TYPE)->getValue();
|
||||
} else {
|
||||
$token = $stream->getCurrent();
|
||||
throw new \Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s"', \Twig_Token::typeToEnglish($token->getType(), $token->getLine()), $token->getValue()), $token->getLine());
|
||||
}
|
||||
}
|
||||
|
||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||
|
||||
$endtag = 'end'.$this->getTag();
|
||||
$test = function(\Twig_Token $token) use($endtag) { return $token->test($endtag); };
|
||||
$body = $this->parser->subparse($test, true);
|
||||
|
||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||
|
||||
if ($this->single && 1 < count($inputs)) {
|
||||
$inputs = array_slice($inputs, -1);
|
||||
}
|
||||
|
||||
if (!$name) {
|
||||
$name = $this->factory->generateAssetName($inputs, $filters, $attributes);
|
||||
}
|
||||
|
||||
$asset = $this->factory->createAsset($inputs, $filters, $attributes + array('name' => $name));
|
||||
|
||||
return $this->createNode($asset, $body, $inputs, $filters, $name, $attributes, $token->getLine(), $this->getTag());
|
||||
}
|
||||
|
||||
public function getTag()
|
||||
{
|
||||
return $this->tag;
|
||||
}
|
||||
|
||||
protected function createNode(AssetInterface $asset, \Twig_NodeInterface $body, array $inputs, array $filters, $name, array $attributes = array(), $lineno = 0, $tag = null)
|
||||
{
|
||||
return new AsseticNode($asset, $body, $inputs, $filters, $name, $attributes, $lineno, $tag);
|
||||
}
|
||||
}
|
||||
97
vendor/Assetic/Extension/Twig/TwigFormulaLoader.php
vendored
Executable file
97
vendor/Assetic/Extension/Twig/TwigFormulaLoader.php
vendored
Executable file
@@ -0,0 +1,97 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\Factory\Loader\FormulaLoaderInterface;
|
||||
use Assetic\Factory\Resource\ResourceInterface;
|
||||
|
||||
/**
|
||||
* Loads asset formulae from Twig templates.
|
||||
*
|
||||
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
|
||||
*/
|
||||
class TwigFormulaLoader implements FormulaLoaderInterface
|
||||
{
|
||||
private $twig;
|
||||
|
||||
public function __construct(\Twig_Environment $twig)
|
||||
{
|
||||
$this->twig = $twig;
|
||||
}
|
||||
|
||||
public function load(ResourceInterface $resource)
|
||||
{
|
||||
try {
|
||||
$tokens = $this->twig->tokenize($resource->getContent(), (string) $resource);
|
||||
$nodes = $this->twig->parse($tokens);
|
||||
} catch (\Exception $e) {
|
||||
return array();
|
||||
}
|
||||
|
||||
return $this->loadNode($nodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads assets from the supplied node.
|
||||
*
|
||||
* @return array An array of asset formulae indexed by name
|
||||
*/
|
||||
private function loadNode(\Twig_Node $node)
|
||||
{
|
||||
$formulae = array();
|
||||
|
||||
if ($node instanceof AsseticNode) {
|
||||
$formulae[$node->getAttribute('name')] = array(
|
||||
$node->getAttribute('inputs'),
|
||||
$node->getAttribute('filters'),
|
||||
array(
|
||||
'output' => $node->getAttribute('asset')->getTargetPath(),
|
||||
'name' => $node->getAttribute('name'),
|
||||
'debug' => $node->getAttribute('debug'),
|
||||
'combine' => $node->getAttribute('combine'),
|
||||
'vars' => $node->getAttribute('vars'),
|
||||
),
|
||||
);
|
||||
} elseif ($node instanceof \Twig_Node_Expression_Function) {
|
||||
$name = version_compare(\Twig_Environment::VERSION, '1.2.0-DEV', '<')
|
||||
? $node->getNode('name')->getAttribute('name')
|
||||
: $node->getAttribute('name');
|
||||
|
||||
if ($this->twig->getFunction($name) instanceof AsseticFilterFunction) {
|
||||
$arguments = array();
|
||||
foreach ($node->getNode('arguments') as $argument) {
|
||||
$arguments[] = eval('return '.$this->twig->compile($argument).';');
|
||||
}
|
||||
|
||||
$invoker = $this->twig->getExtension('assetic')->getFilterInvoker($name);
|
||||
|
||||
$inputs = isset($arguments[0]) ? (array) $arguments[0] : array();
|
||||
$filters = $invoker->getFilters();
|
||||
$options = array_replace($invoker->getOptions(), isset($arguments[1]) ? $arguments[1] : array());
|
||||
|
||||
if (!isset($options['name'])) {
|
||||
$options['name'] = $invoker->getFactory()->generateAssetName($inputs, $filters, $options);
|
||||
}
|
||||
|
||||
$formulae[$options['name']] = array($inputs, $filters, $options);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($node as $child) {
|
||||
if ($child instanceof \Twig_Node) {
|
||||
$formulae += $this->loadNode($child);
|
||||
}
|
||||
}
|
||||
|
||||
return $formulae;
|
||||
}
|
||||
}
|
||||
54
vendor/Assetic/Extension/Twig/TwigResource.php
vendored
Executable file
54
vendor/Assetic/Extension/Twig/TwigResource.php
vendored
Executable file
@@ -0,0 +1,54 @@
|
||||
<?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\Extension\Twig;
|
||||
|
||||
use Assetic\Factory\Resource\ResourceInterface;
|
||||
|
||||
/**
|
||||
* A Twig template resource.
|
||||
*
|
||||
* @author Kris Wallsmith <kris.wallsmith@gmail.com>
|
||||
*/
|
||||
class TwigResource implements ResourceInterface
|
||||
{
|
||||
private $loader;
|
||||
private $name;
|
||||
|
||||
public function __construct(\Twig_LoaderInterface $loader, $name)
|
||||
{
|
||||
$this->loader = $loader;
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function getContent()
|
||||
{
|
||||
try {
|
||||
return $this->loader->getSource($this->name);
|
||||
} catch (\Twig_Error_Loader $e) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
public function isFresh($timestamp)
|
||||
{
|
||||
try {
|
||||
return $this->loader->isFresh($this->name, $timestamp);
|
||||
} catch (\Twig_Error_Loader $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user