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
|
<?php
/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */
namespace Symfony\Component\Translation\Extractor;
/** * Base class used by classes that extract translation messages from files. * * @author Marcos D. Sánchez <marcosdsanchez@gmail.com> */ abstract class AbstractFileExtractor { /** * @param string|array $resource files, a file or a directory * * @return array */ protected function extractFiles($resource) { if (is_array($resource) || $resource instanceof \Traversable) { $files = array(); foreach ($resource as $file) { if ($this->canBeExtracted($file)) { $files[] = $this->toSplFileInfo($file); } } } elseif (is_file($resource)) { $files = $this->canBeExtracted($resource) ? array($this->toSplFileInfo($resource)) : array(); } else { $files = $this->extractFromDirectory($resource); }
return $files; }
/** * @param string $file * * @return \SplFileInfo */ private function toSplFileInfo($file) { return ($file instanceof \SplFileInfo) ? $file : new \SplFileInfo($file); }
/** * @param string $file * * @return bool * * @throws \InvalidArgumentException */ protected function isFile($file) { if (!is_file($file)) { throw new \InvalidArgumentException(sprintf('The "%s" file does not exist.', $file)); }
return true; }
/** * @param string $file * * @return bool */ abstract protected function canBeExtracted($file);
/** * @param string|array $resource files, a file or a directory * * @return array files to be extracted */ abstract protected function extractFromDirectory($resource); }
|