-
Notifications
You must be signed in to change notification settings - Fork 122
/
Copy pathAbstractEngine.php
103 lines (92 loc) · 3.85 KB
/
AbstractEngine.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<?php
/**
* Copyright (c) 2010-2015 Arne Blankerts <[email protected]>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Arne Blankerts nor the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT * NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER ORCONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* @package phpDox
* @author Arne Blankerts <[email protected]>
* @copyright Arne Blankerts <[email protected]>, All rights reserved.
* @license BSD License
*/
namespace TheSeer\phpDox\Generator\Engine {
use TheSeer\fDOM\fDOMDocument;
use TheSeer\fXSL\fXSLTProcessor;
use TheSeer\phpDox\DirectoryCleaner;
use TheSeer\phpDox\FileInfo;
abstract class AbstractEngine implements EngineInterface {
protected function getXSLTProcessor($template) {
$tpl = new fDomDocument();
$tpl->load($template);
$xsl = new fXSLTProcessor($tpl);
return $xsl;
}
protected function clearDirectory($path) {
$cleaner = new DirectoryCleaner();
$cleaner->process(new FileInfo($path));
}
protected function saveDomDocument(\DOMDocument $dom, $filename, $format = true) {
$path = dirname($filename);
clearstatcache();
if (!file_exists($path)) {
mkdir($path, 0777, true);
}
$dom->formatOutput = $format;
return $dom->save($filename);
}
protected function saveFile($content, $filename) {
$path = dirname($filename);
clearstatcache();
if (!file_exists($path)) {
mkdir($path, 0777, true);
}
return file_put_contents($filename, $content);
}
protected function copyStatic($path, $dest, $recursive = true) {
$len = mb_strlen($path);
if ($recursive) {
$worker = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
} else {
$worker = new \DirectoryIterator($path);
}
foreach($worker as $x) {
if($x->isDir() && ($x->getFilename() == "." || $x->getFilename() == "..")) {
continue;
}
$target = $dest . mb_substr($x->getPathname(), $len);
if (!file_exists(dirname($target))) {
mkdir(dirname($target), 0777, true);
}
copy($x->getPathname(), $target);
}
}
}
class EngineException extends \Exception {
const UnexpectedError = 1;
}
}