9dc3244e59c561950ea70eda32bbf57e958af25a
[nobug] / doc / asciidoc.pawk
1
2 # include asciidoc comments about filename and linenumber in generated document
3 match($0, com "([[:alpha:]][[:alnum:]_]*)(([.]([^[:space:]]*)))?", p) {
4     if(p[1] != old_index)
5     {
6         old_index = p[1]
7         append(p[1], p[4], "// "FILENAME ":" FNR " //")
8     }
9 }
10
11 # Create an asciidoc paragraph and index entry
12 #             Sec       Name  Index Explanation
13 match($0, com"(.*) PARA (.*); *(.*); *(.*)", p) {
14     append(p[1],"","."p[2])
15     if(p[3])
16     {
17         id=tolower(gensub(/[^[:alnum:]]+/, "", "g", p[3]))
18         if (p[4])
19         {
20             append("index", id, "xref:"id"["p[2]"]:: "p[4])
21         }
22         append(p[1],"","anchor:"id"[]")
23     }
24     next
25 }
26
27 BEGIN {
28     asciidoc_header[0]="="
29     asciidoc_header[1]="-"
30     asciidoc_header[2]="~"
31     asciidoc_header[3]="^"
32     asciidoc_header[4]="+"
33     asciidoc_level=1
34 }
35
36
37 # Create an asciidoc headline and index entry
38 #             Sec      Typ Name  Index Explanation
39 match($0, com"(.*) HEAD([^ ]+) (.*); *(.*); *(.*)", p) {
40     if (p[2] == "==")
41         p[2] = asciidoc_header[asciidoc_level]
42     else if (p[2] == "++")
43     {
44         if (asciidoc_level < 4) ++asciidoc_level
45         p[2] = asciidoc_header[asciidoc_level]
46     }
47     else if (p[2] == "--")
48     {
49         if (asciidoc_level > 1) --asciidoc_level
50         p[2] = asciidoc_header[asciidoc_level]
51     }
52     else
53     {
54         for (n_HEAD = 0; n_HEAD <=4; ++n_HEAD) {
55             if (p[2] == asciidoc_header[n_HEAD]) {
56                 asciidoc_level = n_HEAD
57                 break
58             }
59         }
60     }
61
62     if (p[3])
63     {
64         append(p[1],"",p[3])
65         append(p[1],"",gensub(/./, p[2], "g", p[3]))
66
67         if (p[4])
68         {
69             id=tolower(gensub(/[^[:alnum:]]+/, "", "g", p[4]))
70             if (p[5]) append("index", id, "xref:"id"["p[3]"]:: "p[5])
71             append(p[1],"","anchor:"id"[]")
72         }
73     }
74     next
75 }
76
77
78 # Create an asciidoc index and anchor
79 #             Sec        Title Index Explanation
80 match($0, com"(.*) INDEX (.*); (.*); (.*)", p) {
81     if (p[4])
82     {
83         id=tolower(gensub(/[^[:alnum:]]+/, "", "g", p[3]))
84         append("index", id, "xref:"id"["p[2]"]:: "p[4])
85     }
86     append(p[1],"","anchor:"id"[]")
87     next
88 }
89