File: fix_modelines.php

package info (click to toggle)
php-doc 20140201-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 74,084 kB
  • ctags: 4,040
  • sloc: xml: 998,137; php: 20,812; cpp: 500; sh: 177; makefile: 63; awk: 28
file content (76 lines) | stat: -rw-r--r-- 1,610 bytes parent folder | download
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
<?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) {
			$found_ced = preg_match("sgml-default-dtd-file:.*manual\.ced", $line);
			}
		}
						
						

		if (1 !== $found_ced) {
			$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";
	}

	$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
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
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;
}