1<?php
2
3/*
4 * This file is part of the Assetic package, an OpenSky project.
5 *
6 * (c) 2010-2014 OpenSky Project Inc
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Assetic\Filter\Yui;
13
14use Assetic\Asset\AssetInterface;
15
16/**
17 * Javascript YUI compressor filter.
18 *
19 * @link http://developer.yahoo.com/yui/compressor/
20 * @author Kris Wallsmith <kris.wallsmith@gmail.com>
21 */
22class JsCompressorFilter extends BaseCompressorFilter
23{
24    private $nomunge;
25    private $preserveSemi;
26    private $disableOptimizations;
27
28    public function setNomunge($nomunge = true)
29    {
30        $this->nomunge = $nomunge;
31    }
32
33    public function setPreserveSemi($preserveSemi)
34    {
35        $this->preserveSemi = $preserveSemi;
36    }
37
38    public function setDisableOptimizations($disableOptimizations)
39    {
40        $this->disableOptimizations = $disableOptimizations;
41    }
42
43    public function filterDump(AssetInterface $asset)
44    {
45        $options = array();
46
47        if ($this->nomunge) {
48            $options[] = '--nomunge';
49        }
50
51        if ($this->preserveSemi) {
52            $options[] = '--preserve-semi';
53        }
54
55        if ($this->disableOptimizations) {
56            $options[] = '--disable-optimizations';
57        }
58
59        $asset->setContent($this->compress($asset->getContent(), 'js', $options));
60    }
61}
62