diff options
author | Bharat Mediratta <bharat@menalto.com> | 2009-03-26 06:32:48 +0000 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2009-03-26 06:32:48 +0000 |
commit | 15eb1a9c8d7ff2cd02e7a65e061bd1c9333ffdf9 (patch) | |
tree | 92da49844f38dad62c5b14625b40dd9a1c2a3d52 /core/helpers | |
parent | 09243aa72ec1ae06d6053d15f185a096591d85b9 (diff) |
Replace iterators with stack based scanner, which we can serialize into the task context.
Diffstat (limited to 'core/helpers')
-rw-r--r-- | core/helpers/l10n_scanner.php | 57 |
1 files changed, 23 insertions, 34 deletions
diff --git a/core/helpers/l10n_scanner.php b/core/helpers/l10n_scanner.php index 89cd3337..af2c04cf 100644 --- a/core/helpers/l10n_scanner.php +++ b/core/helpers/l10n_scanner.php @@ -27,17 +27,31 @@ class l10n_scanner_Core { // @todo Report progress via callback static function update_index() { - // Index all files - $dir = new L10n_Scanner_File_Filter_Iterator( - new RecursiveIteratorIterator( - new L10n_Scanner_Directory_Filter_Iterator( - new RecursiveDirectoryIterator(DOCROOT)))); - foreach ($dir as $file) { - if (pathinfo($file->getFilename(), PATHINFO_EXTENSION) == "php") { - l10n_scanner::_scan_php_file($file); + $stack = array(DOCROOT . "core", + DOCROOT . "modules", + DOCROOT . "themes", + DOCROOT . "installer"); + + while ($stack) { + $path = array_pop($stack); + if (basename($path) == "tests") { + continue; + } + + if (is_dir($path)) { + $stack = array_merge($stack, glob("$path/*")); } else { - l10n_scanner::_scan_info_file($file); + switch (pathinfo($path, PATHINFO_EXTENSION)) { + case "php": + l10n_scanner::_scan_php_file($path); + break; + + case "info": + l10n_scanner::_scan_info_file($path); + break; + } } + flush(); } } @@ -155,28 +169,3 @@ class l10n_scanner_Core { return addcslashes($str, "\0..\37\\\""); } } - -class L10n_Scanner_Directory_Filter_Iterator extends RecursiveFilterIterator { - function accept() { - if ($this->getInnerIterator()->isFile()) { - return true; - } - - // Skip anything that doesn't need to be localized. - $folder = $this->getInnerIterator()->getFilename(); - $path_name = $this->getInnerIterator()->getPathName(); - return !( - $folder == ".svn" || - $folder == "tests" || - strpos($path_name, DOCROOT . "var") !== false || - strpos($path_name . "/", SYSPATH) !== false); - } -} - -class L10n_Scanner_File_Filter_Iterator extends FilterIterator { - function accept() { - // Skip anything that doesn't need to be localized. - $filename = $this->getInnerIterator()->getFilename(); - return in_array(pathinfo($filename, PATHINFO_EXTENSION), array("php", "info")); - } -} |