vendor/assetic/src/functions.php
author cavaliet
Mon, 07 Jul 2014 17:23:47 +0200
changeset 122 d672f7dd74dc
parent 0 7f95f8617b0b
permissions -rwxr-xr-x
Added tag V00.17 for changeset ada5f3d8b5b4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of the Assetic package, an OpenSky project.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * (c) 2010-2011 OpenSky Project Inc
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * For the full copyright and license information, please view the LICENSE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * file that was distributed with this source code.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
use Assetic\Factory\AssetFactory;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
use Assetic\Util\TraversableString;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 * Initializes the global Assetic object.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 * @param AssetFactory $factory The asset factory
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
function assetic_init(AssetFactory $factory)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
    global $_assetic;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    $_assetic = new stdClass();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    $_assetic->factory = $factory;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
 * Returns an array of javascript URLs.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
 * @param array|string $inputs  Input strings
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
 * @param array|string $filters Filter names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
 * @param array        $options An array of options
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
 * @return array An array of javascript URLs
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
function assetic_javascripts($inputs = array(), $filters = array(), array $options = array())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    if (!isset($options['output'])) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
        $options['output'] = 'js/*.js';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
    return _assetic_urls($inputs, $filters, $options);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
 * Returns an array of stylesheet URLs.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
 * @param array|string $inputs  Input strings
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
 * @param array|string $filters Filter names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
 * @param array        $options An array of options
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
 * @return array An array of stylesheet URLs
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
function assetic_stylesheets($inputs = array(), $filters = array(), array $options = array())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    if (!isset($options['output'])) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        $options['output'] = 'css/*.css';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    return _assetic_urls($inputs, $filters, $options);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
 * Returns an image URL.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
 * @param string       $input   An input
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
 * @param array|string $filters Filter names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
 * @param array        $options An array of options
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
 * @return string An image URL
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
function assetic_image($input, $filters = array(), array $options = array())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    if (!isset($options['output'])) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
        $options['output'] = 'images/*';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
    $urls = _assetic_urls($input, $filters, $options);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    return current($urls);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
}
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
 * Returns an array of asset urls.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
 * @param array|string $inputs  Input strings
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
 * @param array|string $filters Filter names
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
 * @param array        $options An array of options
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
 * @return array An array of URLs
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
function _assetic_urls($inputs = array(), $filters = array(), array $options = array())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    global $_assetic;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
    if (!is_array($inputs)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        $inputs = array_filter(array_map('trim', explode(',', $inputs)));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    if (!is_array($filters)) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
        $filters = array_filter(array_map('trim', explode(',', $filters)));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    $coll = $_assetic->factory->createAsset($inputs, $filters, $options);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    $debug = isset($options['debug']) ? $options['debug'] : $_assetic->factory->isDebug();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
    $combine = isset($options['combine']) ? $options['combine'] : !$debug;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
    $one = $coll->getTargetPath();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
    if ($combine) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
        $many = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
        foreach ($coll as $leaf) {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
            $many[] = $leaf->getTargetPath();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    } else {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
        $many = array($one);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
    return new TraversableString($one, $many);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
}