You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.8 KiB
130 lines
3.8 KiB
#!/usr/bin/php |
|
<?php |
|
|
|
chdir(dirname(__FILE__)); |
|
require_once 'common.php'; |
|
assertCli(); |
|
|
|
/** |
|
* @file |
|
* Adds vimline to files |
|
*/ |
|
|
|
chdir(dirname(__FILE__) . '/..'); |
|
$FS = new FSTools(); |
|
|
|
$vimline = 'vim: et sw=4 sts=4'; |
|
|
|
$files = $FS->globr('.', '*'); |
|
foreach ($files as $file) { |
|
if ( |
|
!is_file($file) || |
|
prefix_is('./docs/doxygen', $file) || |
|
prefix_is('./library/standalone', $file) || |
|
prefix_is('./docs/specimens', $file) || |
|
postfix_is('.ser', $file) || |
|
postfix_is('.tgz', $file) || |
|
postfix_is('.patch', $file) || |
|
postfix_is('.dtd', $file) || |
|
postfix_is('.ent', $file) || |
|
postfix_is('.png', $file) || |
|
postfix_is('.ico', $file) || |
|
// wontfix |
|
postfix_is('.vtest', $file) || |
|
postfix_is('.svg', $file) || |
|
postfix_is('.phpt', $file) || |
|
postfix_is('VERSION', $file) || |
|
postfix_is('WHATSNEW', $file) || |
|
postfix_is('configdoc/usage.xml', $file) || |
|
postfix_is('library/HTMLPurifier.includes.php', $file) || |
|
postfix_is('library/HTMLPurifier.safe-includes.php', $file) || |
|
postfix_is('smoketests/xssAttacks.xml', $file) || |
|
// phpt files |
|
postfix_is('.diff', $file) || |
|
postfix_is('.exp', $file) || |
|
postfix_is('.log', $file) || |
|
postfix_is('.out', $file) || |
|
|
|
$file == './library/HTMLPurifier/Lexer/PH5P.php' || |
|
$file == './maintenance/PH5P.php' |
|
) continue; |
|
$ext = strrchr($file, '.'); |
|
if ( |
|
postfix_is('README', $file) || |
|
postfix_is('LICENSE', $file) || |
|
postfix_is('CREDITS', $file) || |
|
postfix_is('INSTALL', $file) || |
|
postfix_is('NEWS', $file) || |
|
postfix_is('TODO', $file) || |
|
postfix_is('WYSIWYG', $file) || |
|
postfix_is('Changelog', $file) |
|
) $ext = '.txt'; |
|
if (postfix_is('Doxyfile', $file)) $ext = 'Doxyfile'; |
|
if (postfix_is('.php.in', $file)) $ext = '.php'; |
|
$no_nl = false; |
|
switch ($ext) { |
|
case '.php': |
|
case '.inc': |
|
case '.js': |
|
$line = '// %s'; |
|
break; |
|
case '.html': |
|
case '.xsl': |
|
case '.xml': |
|
case '.htc': |
|
$line = "<!-- %s\n-->"; |
|
break; |
|
case '.htmlt': |
|
$no_nl = true; |
|
$line = '--# %s'; |
|
break; |
|
case '.ini': |
|
$line = '; %s'; |
|
break; |
|
case '.css': |
|
$line = '/* %s */'; |
|
break; |
|
case '.bat': |
|
$line = 'rem %s'; |
|
break; |
|
case '.txt': |
|
case '.utf8': |
|
if ( |
|
prefix_is('./library/HTMLPurifier/ConfigSchema', $file) || |
|
prefix_is('./smoketests/test-schema', $file) || |
|
prefix_is('./tests/HTMLPurifier/StringHashParser', $file) |
|
) { |
|
$no_nl = true; |
|
$line = '--# %s'; |
|
} else { |
|
$line = ' %s'; |
|
} |
|
break; |
|
case 'Doxyfile': |
|
$line = '# %s'; |
|
break; |
|
default: |
|
throw new Exception('Unknown file: ' . $file); |
|
} |
|
|
|
echo "$file\n"; |
|
$contents = file_get_contents($file); |
|
|
|
$regex = '~' . str_replace('%s', 'vim: .+', preg_quote($line, '~')) . '~m'; |
|
$contents = preg_replace($regex, '', $contents); |
|
|
|
$contents = rtrim($contents); |
|
|
|
if (strpos($contents, "\r\n") !== false) $nl = "\r\n"; |
|
elseif (strpos($contents, "\n") !== false) $nl = "\n"; |
|
elseif (strpos($contents, "\r") !== false) $nl = "\r"; |
|
else $nl = PHP_EOL; |
|
|
|
if (!$no_nl) $contents .= $nl; |
|
$contents .= $nl . str_replace('%s', $vimline, $line) . $nl; |
|
|
|
file_put_contents($file, $contents); |
|
|
|
} |
|
|
|
// vim: et sw=4 sts=4
|
|
|