(file) Return to rfc.st CVS log (file) (dir) Up to [RizwankCVS] / testProject / source / states / hl

 1 rizwank 1.1 /**
 2              * Name: rfc
 3              * Description: RFC and Internet Draft reformatter.
 4              *
 5              * 		Some RFCs and Internet Drafts are broken in such a way
 6              * 		that there is no linefeed character separating the
 7              * 		pages.  These documents are really pain to print
 8              * 		because you have to know the exact page height.  The
 9              * 		`rfc' highlighting state fixes these broken documents
10              * 		by removing all unnecessary blank lines from the page
11              * 		breaks and by separating the pages with a formfeed
12              * 		character.  This style also highlights the MUST, MUST
13              * 		NOT, REQUIRED SHALL, SHALL NOT, SHOULD, SHOULD NOT,
14              * 		RECOMMENDED, MAY, and OPTIONAL keywords, described by
15              * 		the RFC 2119.
16              *
17              * Author: Markku Rossi <mtr@iki.fi>
18              */
19             
20             state rfc_page_separator_garbage extends Highlight
21             {
22 rizwank 1.1   /^[ \t\f\r]*\n/ {
23                 /* Skip all whitespace lines. */
24               }
25               /./ {
26                 /* Print the correct separator line. */
27                 language_print("\f\n");
28                 language_print($0);
29                 return;
30               }
31             }
32             
33             state rfc extends HighlightEntry
34             {
35               /* Find the page separators and skip all whitespace lines after that. */
36               /\[[Pp]age[ \t]+[0-9]+[ \t]*\]\n/ {
37                 language_print($0);
38                 call(rfc_page_separator_garbage);
39               }
40               /* Highlight the keywords, described by the RFC 2119.
41                  (build-re '(MUST NOT REQUIRED SHALL SHOULD RECOMMENDED MAY OPTIONAL))
42                */
43 rizwank 1.1   /\b(M(AY|UST)|NOT|OPTIONAL|RE(COMMENDED|QUIRED)|SH(ALL|OULD))\b/ {
44                 highlight_face(true);
45                 language_print($0);
46                 highlight_face(false);
47               }
48             }
49             
50             
51             /*
52             Local variables:
53             mode: c
54             End:
55             */

Rizwan Kassim
Powered by
ViewCVS 0.9.2