Blame view

vendor/ezyang/htmlpurifier/maintenance/add-vimline.php 3.71 KB
abf1649b   andryeyev   Чистая установка ...
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
  #!/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('FOCUS', $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