Skip to content
This repository has been archived by the owner on Nov 19, 2019. It is now read-only.

Commit

Permalink
extracted a minifier class
Browse files Browse the repository at this point in the history
  • Loading branch information
travi committed Nov 28, 2014
1 parent cf42e73 commit 328051b
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,62 +2,34 @@

namespace travi\framework\dependencyManagement;

use travi\framework\utilities\Environment;

class JavascriptList implements DependencyList
{
/** @var Environment */
private $environment;
/** @var Minifier */
private $minifier;

private $list = array();

/**
* @param $dependency
* @return void
*/
function add($dependency)
public function add($dependency)
{
array_push($this->list, $dependency);
}

/**
* @return string[]
*/
function get()
{
$this->minifyList();

return $this->list;
}

/**
* @param $environment Environment
*/
public function setEnvironment($environment)
public function get()
{
$this->environment = $environment;
}
$list = $this->minifier->minifyList($this->list);

private function minifyList()
{
if (!$this->environment->isLocal()) {
foreach ($this->list as &$dependency) {
$dependency = $this->minify($dependency);
}
}
return $list;
}

/**
* @param $dependency
* @return mixed
*/
private function minify($dependency)
public function setMinifier($minifier)
{
return preg_replace(
'/\/(resources.*)\/(css|js)\//',
'/$1' . DependencyManager::MIN_DIR . '/$2/',
$dependency,
1
);
$this->minifier = $minifier;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

namespace travi\framework\dependencyManagement;

use travi\framework\utilities\Environment;

class Minifier
{
/** @var Environment */
private $environment;

public function minifyList($list)
{
if (!$this->environment->isLocal()) {
foreach ($list as &$dependency) {
$dependency = $this->minify($dependency);
}
}

return $list;
}

/**
* @param $dependency
* @return mixed
*/
private function minify($dependency)
{
return preg_replace(
'/\/(resources.*)\/(css|js)\//',
'/$1' . DependencyManager::MIN_DIR . '/$2/',
$dependency,
1
);
}

/**
* @param $environment Environment
*/
public function setEnvironment($environment)
{
$this->environment = $environment;
}
}
15 changes: 13 additions & 2 deletions php/framework/test/php/dependencyManagement/JavascriptListTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use PHPUnit_Framework_TestCase;
use travi\framework\dependencyManagement\DependencyManager;
use travi\framework\dependencyManagement\JavascriptList;
use travi\framework\dependencyManagement\Minifier;
use travi\framework\utilities\Environment;

class JavascriptListTest extends PHPUnit_Framework_TestCase
Expand All @@ -15,10 +16,12 @@ class JavascriptListTest extends PHPUnit_Framework_TestCase

public function setUp()
{
$this->environment = $this->getMock('Environment');
$this->environment = $this->getMock('travi\\framework\\utilities\\Environment');
$minifier = new Minifier();
$minifier->setEnvironment($this->environment);

$this->list = new JavascriptList();
$this->list->setEnvironment($this->environment);
$this->list->setMinifier($minifier);
}

public function testThatListIsEmptyIfNothingHasBeenAdded()
Expand All @@ -37,6 +40,10 @@ public function testThatJavascriptFileCanBeAddedToTheList()

public function testThatFullSourceIsReturnedWhenLocal()
{
$this->environment->expects($this->once())
->method('isLocal')
->will($this->returnValue(true));

$someScript = '/resources/js/some script';

$this->list->add($someScript);
Expand All @@ -46,6 +53,10 @@ public function testThatFullSourceIsReturnedWhenLocal()

public function testThatListIsMinifiedWhenNotLocal()
{
$this->environment->expects($this->once())
->method('isLocal')
->will($this->returnValue(false));

$this->list->add('/resources/js/some script');

$this->assertEquals(
Expand Down

0 comments on commit 328051b

Please sign in to comment.