22 protected $file_pattern =
'~\.(?:php|js|css|xml|json|yml|txt|rst|md|gitignore|htaccess|mailmap|sh)$~';
41 $this->substr_start = strlen($this->
normalizePath($root)) + 1;
45 foreach (
$files as $file) {
47 $key = substr($file, $this->substr_start);
56 if (
$report[self::KEY_NEW_CONTENT] !==
null) {
57 file_put_contents($file,
$report[self::KEY_NEW_CONTENT]);
59 if (
$report[self::KEY_REMAINING]) {
62 if (
$report[self::KEY_CORRECTIONS]) {
79 $this->substr_start = strlen($this->
normalizePath($root)) + 1;
98 $content = file_get_contents($filepath);
104 self::KEY_REMAINING => array(),
105 self::KEY_CORRECTIONS => array(),
106 self::KEY_NEW_CONTENT =>
null,
110 $new = preg_replace(
'~(\S)[ \t]+(\r?\n)~',
'$1$2', $old, -1,
$count);
116 if (!preg_match(
'~\.(?:rst|md)$~', $filepath)) {
124 if (pathinfo($filepath, PATHINFO_EXTENSION) ===
'php') {
150 while (
false !== ($entry = $d->read())) {
151 if ($entry ===
'.' || $entry ===
'..') {
156 $relative_path = substr($full, $this->substr_start);
159 if ($entry[0] ===
'.' || preg_match(
'~(?:/vendors?|/zaudio/audioplayer)$~', $full)) {
161 if ($entry !==
'.scripts') {
166 if (in_array($relative_path, array(
'node_modules',
'docs/_build'))) {
174 if (basename($dir) ===
'languages' && $entry !==
'en.php') {
178 if ($relative_path ===
'htaccess_dist' || preg_match($this->file_pattern, $entry)) {
195 return str_replace(
'\\',
'/', rtrim(
$path,
'/\\'));
$content
Set robots.txt action.
findFiles($dir, &$files)
Find files within a directory (recurse for subdirectories)
normalizePath($path)
Normalize a path.
analyzeFile($filepath, $content=null)
Analyze a file for problems and return a report.
fixDirectory($root, $dry_run=false)
Fix problems in a directory of files and return a report.
findFilesToAnalyze($root)
Find files which can be analyzed/fixed by this component.