-
Notifications
You must be signed in to change notification settings - Fork 2
/
cfXML.awk
30 lines (30 loc) · 1.19 KB
/
cfXML.awk
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
BEGIN { start = 0 }
$0 ~ "# Concrete Nodes" { start = 1; print; next }
!start { print; next }
start && $0 ~ "def XML\\(self, indentLevel" {
$0 = " def XML(self, indentLevel=0, syntax=\"XML\", field=\"children\"):";
print ; next }
start && $0 ~ "result \\+= '<" {
print;
print " if field != \"children\": result += \" containerField='\" + field + \"'\"";
next; }
start && $0 ~ "result \\+= self.metadata.XML\\(indentLevel=indentLevel\\+1, syntax=syntax\\)" {
print " result += self.metadata.XML(indentLevel=indentLevel+1, syntax=syntax, field=\"metadata\")";
next; }
start && $0 !~ "self.IS" && $0 !~ "self.metadata" && $0 ~ "# output this SFNode" {
SFNodeNR = NR;
field = substr($2, 6);
sub(":", "", field);
print; next; }
start && NR == SFNodeNR + 1 && $0 ~ "XML\\(" {
sub(")", ", field=\"" field "\")");
print; next; }
start && $0 ~ "# walk each child in list, if any \\(avoid empty list recursion\\)" {
MFNodeNR = NR;
field = substr($2, 6);
sub(":", "", field);
print; next; }
start && NR == MFNodeNR + 2 && $0 ~ "result \\+= each.XML\\(indentLevel=indentLevel\\+1, syntax=syntax\\)" {
sub(")", ", field=\"" field "\")");
print; next; }
{print}