File: fix_modelines.php

package info (click to toggle)
php-doc 20100521-2
  • links: PTS, VCS
  • area: main
  • in suites: squeeze, wheezy
  • size: 59,992 kB
  • ctags: 4,085
  • sloc: xml: 796,833; php: 21,338; cpp: 500; sh: 117; makefile: 58; awk: 28
file content (81 lines) | stat: -rw-r--r-- 1,762 bytes parent folder | download | duplicates (5)
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
<?php

// Fix the modelines of xml files. If no modelines were given, it is assumed
// that the xml is two levels deeper than the root of the phpdoc dir, otherwise
// it's copied from the emacs property sgml-default-dtd-file
function apply($input)
{
	$lines = explode("\n",$input);
	$numlines = count($lines);
	$modeline_started = FALSE;
	$manual_ced_line = NULL;
	$output = "";
	foreach ($lines as $nr=>$line) {
		if (eregi("Keep this comment at the end of the file", $line)) {

			// we're on top of the comment
			if ($nr + 20 < $numlines) {
				// there's too much of lines left, bail out
				?>
		ERROR in this file, modelines seems to be not at end of file!
				<?php
				exit;
			}
			
			// break out of for-loop

			$modeline_started = TRUE;

		}

		if ($modeline_started) {
			if (ereg("sgml-default-dtd-file(.*)manual\.ced", $line, $regs)) {
				$manual_ced_line = "sgml-default-dtd-file$regs[1]manual.ced\"";
			}
		}
						
						

		if (!$modeline_started) {
			$output .= "$line\n";
		}
	}

	if (!$modeline_started) {
		echo "WARNING: did NOT found start of modelines!\n";
	}

	if (!$manual_ced_line) {
		echo "WARNING: did NOT found a ced-line!\n";
		$manual_ced_line = 'sgml-default-dtd-file:"../../manual.ced"';
	}

	$output .= <<<HEREDOC
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil

HEREDOC;
	$output .= "$manual_ced_line\n";
	$output .= <<<HEREDOC
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->

HEREDOC;
	
	return $output;
}