1: <?php
2: namespace RM\AssetsCollector;
3:
4: use \Nette\Config\Configurator,
5: \Nette\Config\Compiler,
6: \Nette\Config\CompilerExtension;
7:
8:
9: 10: 11: 12: 13: 14: 15:
16: class AssetsCollectorExtension extends CompilerExtension
17: {
18: 19: 20:
21: public function loadConfiguration()
22: {
23: $builder = $this->getContainerBuilder();
24:
25: $config = $this->getConfig(array(
26: 'cssPath' => WWW_DIR.'/style/css',
27: 'jsPath' => WWW_DIR.'/style/js',
28: 'webTemp' => WWW_DIR.'/webtemp',
29: 'wwwDir' => WWW_DIR,
30: 'maxSize' => 1024,
31: 'packages' => array(),
32: 'addCss' => array(),
33: 'addJs' => array(),
34: 'addPackage' => array(),
35: 'removeOld' => FALSE,
36: 'addCssCompiler' => array(),
37: 'addJsCompiler' => array(),
38: 'enabledCompilers' => array(),
39: 'mergeFiles' => false,
40: ));
41:
42: $builder->addDefinition($this->prefix('cssSimpleMinificator'))
43: ->setClass('\RM\AssetsCollector\Compilers\CssSimpleMinificator');
44:
45: $builder->addDefinition($this->prefix('imageToDataStream'))
46: ->setClass('\RM\AssetsCollector\Compilers\ImageToDataStream')
47: ->addSetup('$cssPath', $config['cssPath'])
48: ->addSetup('$wwwDir', $config['wwwDir'])
49: ->addSetup('$maxSize', $config['maxSize']);
50:
51: $builder->addDefinition($this->prefix('imageReplacer'))
52: ->setClass('\RM\AssetsCollector\Compilers\ImageReplacer')
53: ->addSetup('$cssPath', $config['cssPath'])
54: ->addSetup('$wwwDir', $config['wwwDir'])
55: ->addSetup('$webTemp', $config['webTemp']);
56:
57: $config = array_merge($config,array(
58: 'addCssCompiler' => array(
59: '@' . $this->prefix('cssSimpleMinificator'),
60: '@' . $this->prefix('imageToDataStream'),
61: '@' . $this->prefix('imageReplacer'),
62: ),
63: ));
64:
65: $builder->addDefinition($this->prefix('collector'))
66: ->setClass('\RM\AssetsCollector')
67: ->addSetup('$cssPath', $config['cssPath'])
68: ->addSetup('$jsPath', $config['jsPath'])
69: ->addSetup('$webTemp', $config['webTemp'])
70: ->addSetup('$removeOld', $config['removeOld'])
71: ->addSetup('setPackages', array($config['packages']))
72: ->addSetup('addPackages', array($config['addPackage']))
73: ->addSetup('addCssCompiler', array($config['addCssCompiler']))
74: ->addSetup('addJsCompiler', array($config['addJsCompiler']))
75: ->addSetup('$enabledCompilers', array($config['enabledCompilers']))
76: ->addSetup('addCss', array($config['addCss']))
77: ->addSetup('addJs', array($config['addJs']))
78: ->addSetup('$mergeFiles', array($config['mergeFiles']))
79: ->addSetup('checkRequirements');
80:
81: $builder->getDefinition('nette.latte')
82: ->addSetup('\RM\AssetsCollector\JsCssMacros::install(?->compiler)', array('@self'));
83: }
84:
85: 86: 87: 88:
89: public static function register(Configurator $config)
90: {
91: $config->onCompile[] = function (Configurator $config, Compiler $compiler) {
92: $compiler->addExtension('assetsCollector', new AssetsCollectorExtension());
93: };
94: }
95: }
96: