diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 412eeda..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,22 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln merge=union
-*.csproj merge=union
-*.vbproj merge=union
-*.fsproj merge=union
-*.dbproj merge=union
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index d9a10c0..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,176 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
diff --git a/README.md b/README.md
index 811c9fc..de0f3d7 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Step 1. Edit your `composer.json`:
```json
{
"require": {
- "tureki/phpcc": ">=1.0.0"
+ "tureki/phpcc": ">=1.0.5"
}
}
```
@@ -68,14 +68,12 @@ Example:
-
----
jar_file
is Google Closure Compiler jar file. Your can download latest version on this [link](http://code.google.com/p/closure-compiler/wiki/BinaryDownloads)
-
----
After setting. use help()
method to test **phpcc**.
@@ -160,6 +158,11 @@ print_r($ary_result);
+## Todo
+
+a. Add Unit Test
+b. Integrate CI
+
## Authors
**tureki**
@@ -168,6 +171,6 @@ print_r($ary_result);
-## Copyright and license
+## Copyright and License
-Copyright 2013 tureki, under [the Apache 2.0 license](LICENSE).
+Copyright 2013 tureki, under [MIT License](http://opensource.org/licenses/MIT).
diff --git a/src/tureki/vendor/closure-compiler/COPYING b/closure-compiler/COPYING
similarity index 100%
rename from src/tureki/vendor/closure-compiler/COPYING
rename to closure-compiler/COPYING
diff --git a/src/tureki/vendor/closure-compiler/README b/closure-compiler/README
similarity index 100%
rename from src/tureki/vendor/closure-compiler/README
rename to closure-compiler/README
diff --git a/src/tureki/vendor/closure-compiler/compiler.jar b/closure-compiler/compiler.jar
old mode 100644
new mode 100755
similarity index 100%
rename from src/tureki/vendor/closure-compiler/compiler.jar
rename to closure-compiler/compiler.jar
diff --git a/composer.json b/composer.json
index 4656aef..745e932 100644
--- a/composer.json
+++ b/composer.json
@@ -3,17 +3,22 @@
"description": "A PHP Library to use Google Closure Compiler compress Javascript ",
"keywords": [ "php", "compress", "closure compiler" ],
"type": "library",
- "license": "Apache 2",
+ "license": "MIT",
+ "support": {
+ "issues": "https://github.com/tureki/php-closure-compiler/issues",
+ "source": "https://github.com/tureki/php-closure-compiler"
+ },
"authors": [{
"name": "tureki",
+ "email": "tureki@me.com",
"homepage": "https://github.com/tureki"
}],
"require": {
"php": ">=5.3.0"
},
"autoload": {
- "psr-0": {
- "tureki": "src/"
- }
+ "psr-4": {
+ "tureki\\": "src/tureki/"
+ }
}
}
\ No newline at end of file
diff --git a/samples/js/README b/samples/js/README
deleted file mode 100644
index ea8d3db..0000000
--- a/samples/js/README
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Copyright tureki.org [tureki11@gmail.com]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-Sample.php test directory.
\ No newline at end of file
diff --git a/samples/output/.gitkeep b/samples/output/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/samples/output/README b/samples/output/README
deleted file mode 100644
index d347de8..0000000
--- a/samples/output/README
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Copyright tureki.org [tureki11@gmail.com]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-Executive sample.php file will output compressed files in this directory.
\ No newline at end of file
diff --git a/samples/sample.php b/samples/sample.php
index 5b3bf6f..b5e7505 100644
--- a/samples/sample.php
+++ b/samples/sample.php
@@ -1,118 +1,101 @@
'YOUR_JAVA_FILE_PATH',
- 'output_path' => './output/',
- 'optimization' => 'SIMPLE_OPTIMIZATIONS',
- 'charset' => 'utf-8'
- ));
+ /**
+ * output_path
+ *
+ * Output path of compress file when success
+ */
- /**
- * Test your phpcc setting.
- */
- print_r($phpcc->help());
+ /**
+ * phpcc config
+ * @var phpcc
+ */
+ $phpcc = new tureki\PhpCc(array(
+ 'java_file' => 'YOUR_JAVA_FILE_PATH',
+ 'output_path' => './output/',
+ 'optimization' => 'SIMPLE_OPTIMIZATIONS',
+ 'charset' => 'utf-8',
+ ));
- /**
- * Add jQuery file and combined compression
- */
- // $ary_result = $phpcc
- // ->add("js/jquery-1.10.2.js")
- // ->add("js/1.9/jquery-1.9.1.js")
- // ->exec("all.js");
- // print_r($ary_result);
+ /**
+ * Test your phpcc setting.
+ */
+ print_r($phpcc->help());
- /**
- * Add jQuery file and individual compression
- */
- // $phpcc->reset();
- // $ary_result = $phpcc
- // ->add("js/jquery-1.10.2.js")
- // ->add("js/1.9/jquery-1.9.1.js")
- // ->single()
- // ->exec();
- // print_r($ary_result);
+ /**
+ * Add jQuery file and combined compression
+ */
+ // $ary_result = $phpcc
+ // ->add("js/jquery-1.10.2.js")
+ // ->add("js/1.9/jquery-1.9.1.js")
+ // ->exec("all.js");
+ // print_r($ary_result);
- /**
- * Set Directory path find .js file and combined compression to one file.
- */
- // $phpcc->reset();
- // $ary_result = $phpcc
- // ->setDir("js")
- // ->exec("all.js");
- // print_r($ary_result);
+ /**
+ * Add jQuery file and individual compression
+ */
+ // $phpcc->reset();
+ // $ary_result = $phpcc
+ // ->add("js/jquery-1.10.2.js")
+ // ->add("js/1.9/jquery-1.9.1.js")
+ // ->single()
+ // ->exec();
+ // print_r($ary_result);
- /**
- * Set Directory path . Auto find js file and individual compression
- */
- // $phpcc->reset();
- // $ary_result = $phpcc
- // ->setDir("js")
- // ->single()
- // ->exec();
- // print_r($ary_result);
-
- /**
- * Mixed
- */
- // $phpcc->reset();
- // $ary_result = $phpcc
- // ->setDir("js")
- // ->add("js/1.9/jquery-1.9.1.js")
- // ->exec();
- // print_r($ary_result);
-
- /**
- * You can use param() add Closure Compiler command param.
- */
- // $phpcc->reset();
- // $ary_result = $phpcc
- // ->add("js/jquery-1.10.2.js")
- // ->param("--angular_pass")
- // ->param("--formatting","PRETTY_PRINT")
- // ->exec("all.js");
- // print_r($ary_result);
-?>
\ No newline at end of file
+ /**
+ * Set Directory path find .js file and combined compression to one file.
+ */
+ // $phpcc->reset();
+ // $ary_result = $phpcc
+ // ->setDir("js")
+ // ->exec("all.js");
+ // print_r($ary_result);
+
+ /**
+ * Set Directory path . Auto find js file and individual compression
+ */
+ // $phpcc->reset();
+ // $ary_result = $phpcc
+ // ->setDir("js")
+ // ->single()
+ // ->exec();
+ // print_r($ary_result);
+
+ /**
+ * Mixed
+ */
+ // $phpcc->reset();
+ // $ary_result = $phpcc
+ // ->setDir("js")
+ // ->add("js/1.9/jquery-1.9.1.js")
+ // ->exec();
+ // print_r($ary_result);
+
+ /**
+ * You can use param() add Closure Compiler command param.
+ */
+ // $phpcc->reset();
+ // $ary_result = $phpcc
+ // ->add("js/jquery-1.10.2.js")
+ // ->param("--angular_pass")
+ // ->param("--formatting","PRETTY_PRINT")
+ // ->exec("all.js");
+ // print_r($ary_result);
diff --git a/src/tureki/PhpCc.php b/src/tureki/PhpCc.php
index 19f55e1..e8d9516 100644
--- a/src/tureki/PhpCc.php
+++ b/src/tureki/PhpCc.php
@@ -1,21 +1,5 @@
options = array(
- 'java_file' => 'java',
- 'jar_file' => __DIR__.'/vendor/closure-compiler/compiler.jar',
- 'output_path' => '/',
- 'optimization' => 'SIMPLE_OPTIMIZATIONS',
- 'charset' => 'utf-8'
- );
-
- $this->options = array_merge($this->options,$options);
-
- $this->reset();
-
- }
-
- /**
- * Add javascript file to compiler list
- *
- * @param string $file
- * @return self
- */
- public function add($file)
- {
-
- if(is_array($file)){
-
- $this->js_files = array_merge($this->js_files,$file);
-
- }else{
-
- $this->js_files[] = $file;
-
- }
-
- return $this;
-
- }
-
- /**
- * Execute compiler.
- *
- * @param string $filename
- * @return self
- */
- public function exec($filename = 'all.min.js')
- {
-
- $str_file = '';
-
- if(substr($this->js_dir, -1)=="/")
- {
- $this->js_dir = substr($this->js_dir,0, strlen($this->js_dir)-1);
- }
-
- if($this->bol_single){
-
- $ary_result = array();
-
- $num_js = count($this->js_files);
-
- for ($i=0; $i < $num_js; $i++) {
-
- $str_file = ' --js ' . $this->js_files[$i];
-
- $filename = basename($this->js_files[$i]);
-
- $ary_result[] = $this->_get_argv($str_file,$filename);
-
- }
-
- $num_js = count($this->js_files_dir);
-
- for ($i=0; $i < $num_js; $i++) {
-
- $str_file = ' --js ' . $this->js_files_dir[$i];
-
- $filename = str_replace($this->js_dir, '', $this->js_files_dir[$i]);
-
- $ary_result[] = $this->_get_argv($str_file,$filename);
-
- }
-
-
- return $ary_result;
-
- }else{
-
- if(count($this->js_files_dir)>0){
-
- $this->js_files = array_merge($this->js_files,$this->js_files_dir);
-
- }
-
- $this->js_files = array_unique($this->js_files);
-
- sort($this->js_files);
-
- $num_js = count($this->js_files);
-
- for ($i=0; $i < $num_js; $i++) {
-
- $str_file .= ' --js ' . $this->js_files[$i];
-
- }
-
- return $this->_get_argv($str_file,$filename);
-
- }
-
- }
-
- /**
- * Help method will return "Closure Compiler --help" when setting success
- *
- * @return array
- */
- public function help()
- {
-
- $str_cmd = $this->_get_cmd() . ' --help';
-
- return $this->_exec($str_cmd);
-
- }
-
- /**
- * Compress all js to one file.
- *
- * @return self
- */
- public function merge()
- {
-
- $this->bol_single = false;
-
- return $this;
-
- }
-
- /**
- * Add command param. exp:--angular_pass
- *
- * @param string $param
- * @param string $value
- * @return self
- */
- public function param($param,$value=null)
- {
-
- if($value){
-
- $str_param = $param ." ". $value;
-
- }else{
-
- $str_param = $param;
-
- }
-
- $this->shell_params[] = $str_param;
-
- return $this;
-
- }
-
- /**
- * Reset all setting.
- *
- * @return self
- */
- public function reset()
- {
-
- $this->bol_single = false;
-
- $this->js_dir = '';
-
- $this->js_files = array();
-
- $this->js_files_dir = array();
-
- $this->shell_params = array();
-
- return $this;
-
- }
-
- /**
- * Set directory you want to compiler
- *
- * @param string $path
- * @param array $ext
- * @return class phpcc
- */
- public function setDir($path,$ext=array('js'))
- {
-
- $this->js_dir = $path;
-
- $cls_objects = new RecursiveIteratorIterator(
- new RecursiveDirectoryIterator($path)
- );
-
- foreach($cls_objects as $str_name){
-
- $str_filetype = pathinfo($str_name, PATHINFO_EXTENSION);
-
- if (in_array(strtolower($str_filetype), $ext)) {
-
- $this->js_files_dir[] = $str_name;
-
- }
-
- }
-
- return $this;
-
- }
-
- /**
- * Do not merge javascript files
- *
- * @return class phpcc
- */
- public function single()
- {
-
- $this->bol_single = true;
-
- return $this;
-
- }
-
- private function _create($file_path)
- {
-
- if(!file_exists($file_path)){
-
- $pathinfo = pathinfo($file_path);
-
- $path = $pathinfo["dirname"];
-
- try{
- if(!file_exists($path) || !is_writeable($path)){
- mkdir($path, 0777,true);
- touch($file_path);
- }
- return true;
- }catch(Exception $e){
- return false;
- }
-
- }
-
- }
-
- private function _exec($str_cmd)
- {
-
- exec($str_cmd. ' 2>&1', $out, $status);
-
- return array(
- 'shell' => $str_cmd,
- 'out' => $out,
- 'status' => $status
- );
-
- }
-
- private function _get_argv($str_file,$filename)
- {
-
- $opt = $this->_get_options();
-
- $str_output = $opt["output_path"].$filename;
-
- $str_param = implode(" ", $this->shell_params);
-
- $str_cmd = $this->_get_cmd();
-
- $str_cmd .= ' '. $str_param.' '. $str_file;
-
- $this->_create($str_output);
-
- if(!empty($str_file)){
- $str_cmd .=
- ' --compilation_level '.$opt['optimization'].
- ' --charset '.$opt['charset'].
- ' --js_output_file '.$str_output;
- }
-
- return $this->_exec($str_cmd);
-
- }
-
- private function _get_cmd()
- {
-
- $opt = $this->_get_options();
-
- $str_cmd = $opt['java_file'] . ' -jar ' . $opt['jar_file'];
-
- return $str_cmd;
-
- }
-
- private function _get_options()
- {
-
- return $this->options;
+ *
+ */
- }
-
+class PhpCc
+{
+
+ public function __construct($options)
+ {
+ $this->options = array(
+ 'java_file' => 'java',
+ 'jar_file' => __DIR__.'/../../closure-compiler/compiler.jar',
+ 'output_path' => '/',
+ 'optimization' => 'SIMPLE_OPTIMIZATIONS',
+ 'charset' => 'utf-8'
+ );
+
+ $this->options = array_merge($this->options, $options);
+
+ $this->reset();
+ }
+
+ /**
+ * Add javascript file to compiler list
+ *
+ * @param string $file
+ * @return self
+ */
+ public function add($file)
+ {
+ if (is_array($file)) {
+ $this->js_files = array_merge($this->js_files, $file);
+ } else {
+ $this->js_files[] = $file;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Execute compiler.
+ *
+ * @param string $filename
+ * @return self
+ */
+ public function exec($filename = 'all.min.js')
+ {
+ $str_file = '';
+
+ if (substr($this->js_dir, -1)=="/") {
+ $this->js_dir = substr($this->js_dir, 0, strlen($this->js_dir)-1);
+ }
+
+ if ($this->bol_single) {
+ $ary_result = array();
+
+ $num_js = count($this->js_files);
+
+ for ($i=0; $i < $num_js; $i++) {
+ $str_file = ' --js ' . $this->js_files[$i];
+
+ $filename = basename($this->js_files[$i]);
+
+ $ary_result[] = $this->_getArgv($str_file, $filename);
+ }
+
+ $num_js = count($this->js_files_dir);
+
+ for ($i=0; $i < $num_js; $i++) {
+ $str_file = ' --js ' . $this->js_files_dir[$i];
+
+ $filename = str_replace($this->js_dir, '', $this->js_files_dir[$i]);
+
+ $ary_result[] = $this->_getArgv($str_file, $filename);
+ }
+
+ return $ary_result;
+ } else {
+ if (count($this->js_files_dir)>0) {
+ $this->js_files = array_merge($this->js_files, $this->js_files_dir);
+ }
+
+ $this->js_files = array_values(array_unique($this->js_files));
+
+ $num_js = count($this->js_files);
+
+ for ($i=0; $i < $num_js; $i++) {
+ $str_file .= ' --js ' . $this->js_files[$i];
+ }
+
+ return $this->_getArgv($str_file, $filename);
+ }
+ }
+
+ /**
+ * Help method will return "Closure Compiler --help" when setting success
+ *
+ * @return array
+ */
+ public function help()
+ {
+ $str_cmd = $this->_getCmd() . ' --help';
+
+ return $this->_exec($str_cmd);
+ }
+
+ /**
+ * Compress all js to one file.
+ *
+ * @return self
+ */
+ public function merge()
+ {
+ $this->bol_single = false;
+
+ return $this;
+ }
+
+ /**
+ * Add command param. exp:--angular_pass
+ *
+ * @param string $param
+ * @param string $value
+ * @return self
+ */
+ public function param($param, $value = null)
+ {
+ if ($value) {
+ $str_param = $param ." ". $value;
+ } else {
+ $str_param = $param;
+ }
+
+ $this->shell_params[] = $str_param;
+
+ return $this;
+ }
+
+ /**
+ * Reset all setting.
+ *
+ * @return self
+ */
+ public function reset()
+ {
+ $this->bol_single = false;
+
+ $this->js_dir = '';
+
+ $this->js_files = array();
+
+ $this->js_files_dir = array();
+
+ $this->shell_params = array();
+
+ return $this;
+ }
+
+ /**
+ * Set directory you want to compiler
+ *
+ * @param string $path
+ * @param array $ext
+ * @return class phpcc
+ */
+ public function setDir($path, $ext = array('js'))
+ {
+ $this->js_dir = $path;
+
+ $cls_objects = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator($path)
+ );
+
+ foreach ($cls_objects as $str_name) {
+ $str_filetype = pathinfo($str_name, PATHINFO_EXTENSION);
+
+ if (in_array(strtolower($str_filetype), $ext)) {
+ $this->js_files_dir[] = $str_name;
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Do not merge javascript files
+ *
+ * @return class phpcc
+ */
+ public function single()
+ {
+ $this->bol_single = true;
+
+ return $this;
+ }
+
+ private function _create($file_path)
+ {
+ if (!file_exists($file_path)) {
+ $pathinfo = pathinfo($file_path);
+
+ $path = $pathinfo["dirname"];
+
+ try {
+ if (!file_exists($path) || !is_writeable($path)) {
+ mkdir($path, 0777, true);
+ touch($file_path);
+ }
+ return true;
+ } catch (Exception $e) {
+ return false;
+ }
+ }
+ }
+
+ private function _exec($str_cmd)
+ {
+ exec($str_cmd. ' 2>&1', $out, $status);
+
+ return array(
+ 'shell' => $str_cmd,
+ 'out' => $out,
+ 'status' => $status
+ );
+ }
+
+ private function _getArgv($str_file, $filename)
+ {
+ $opt = $this->options;
+
+ $str_output = $opt["output_path"].$filename;
+
+ $str_param = implode(" ", $this->shell_params);
+
+ $str_cmd = $this->_getCmd();
+
+ $str_cmd .= ' '. $str_param.' '. $str_file;
+
+ $this->_create($str_output);
+
+ if (!empty($str_file)) {
+ $str_cmd .=
+ ' --compilation_level '.$opt['optimization'].
+ ' --charset '.$opt['charset'].
+ ' --js_output_file '.$str_output;
+ }
+
+ return $this->_exec($str_cmd);
+ }
+
+ private function _getCmd()
+ {
+ $opt = $this->options;
+
+ $str_cmd = $opt['java_file'] . ' -jar ' . $opt['jar_file'];
+
+ return $str_cmd;
+ }
}
-?>
\ No newline at end of file
diff --git a/src/tureki/README b/src/tureki/README
deleted file mode 100644
index 8c45563..0000000
--- a/src/tureki/README
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Copyright tureki.org [tureki11@gmail.com]
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-PHPCC source directory.
\ No newline at end of file
diff --git a/tests/.gitkeep b/tests/.gitkeep
new file mode 100644
index 0000000..e69de29