<?php 
 
/* 
 * This file is part of the Assetic package, an OpenSky project. 
 * 
 * (c) 2010-2013 OpenSky Project Inc 
 * 
 * For the full copyright and license information, please view the LICENSE 
 * file that was distributed with this source code. 
 */ 
 
use Assetic\Factory\AssetFactory; 
use Assetic\Util\TraversableString; 
 
/** 
 * Initializes the global Assetic object. 
 * 
 * @param AssetFactory $factory The asset factory 
 */ 
function assetic_init(AssetFactory $factory) 
{ 
    global $_assetic; 
 
    $_assetic = new stdClass(); 
    $_assetic->factory = $factory; 
} 
 
/** 
 * Returns an array of javascript URLs. 
 * 
 * @param array|string $inputs  Input strings 
 * @param array|string $filters Filter names 
 * @param array        $options An array of options 
 * 
 * @return array An array of javascript URLs 
 */ 
function assetic_javascripts($inputs = array(), $filters = array(), array $options = array()) 
{ 
    if (!isset($options['output'])) { 
        $options['output'] = 'js/*.js'; 
    } 
 
    return _assetic_urls($inputs, $filters, $options); 
} 
 
/** 
 * Returns an array of stylesheet URLs. 
 * 
 * @param array|string $inputs  Input strings 
 * @param array|string $filters Filter names 
 * @param array        $options An array of options 
 * 
 * @return array An array of stylesheet URLs 
 */ 
function assetic_stylesheets($inputs = array(), $filters = array(), array $options = array()) 
{ 
    if (!isset($options['output'])) { 
        $options['output'] = 'css/*.css'; 
    } 
 
    return _assetic_urls($inputs, $filters, $options); 
} 
 
/** 
 * Returns an image URL. 
 * 
 * @param string       $input   An input 
 * @param array|string $filters Filter names 
 * @param array        $options An array of options 
 * 
 * @return string An image URL 
 */ 
function assetic_image($input, $filters = array(), array $options = array()) 
{ 
    if (!isset($options['output'])) { 
        $options['output'] = 'images/*'; 
    } 
 
    $urls = _assetic_urls($input, $filters, $options); 
 
    return current($urls); 
} 
 
/** 
 * Returns an array of asset urls. 
 * 
 * @param array|string $inputs  Input strings 
 * @param array|string $filters Filter names 
 * @param array        $options An array of options 
 * 
 * @return array An array of URLs 
 */ 
function _assetic_urls($inputs = array(), $filters = array(), array $options = array()) 
{ 
    global $_assetic; 
 
    if (!is_array($inputs)) { 
        $inputs = array_filter(array_map('trim', explode(',', $inputs))); 
    } 
 
    if (!is_array($filters)) { 
        $filters = array_filter(array_map('trim', explode(',', $filters))); 
    } 
 
    $coll = $_assetic->factory->createAsset($inputs, $filters, $options); 
 
    $debug = isset($options['debug']) ? $options['debug'] : $_assetic->factory->isDebug(); 
    $combine = isset($options['combine']) ? $options['combine'] : !$debug; 
 
    $one = $coll->getTargetPath(); 
    if ($combine) { 
        $many = array($one); 
    } else { 
        $many = array(); 
        foreach ($coll as $leaf) { 
            $many[] = $leaf->getTargetPath(); 
        } 
    } 
 
    return new TraversableString($one, $many); 
} 
 
 |