diff --git a/file.proto b/file.proto index c1d97f8..594033a 100644 --- a/file.proto +++ b/file.proto @@ -78,8 +78,8 @@ message FormatMsg { string footer = 8; // the '}' line Type type = 9; // yep. type. yep. that's what this is for bool padAfter = 10; + bool isEmpty = 11; // true when things like: message blah {} } - message Find { string parent = 1; // `autogenpb:unique` File string varType = 2; // `autogenpb:unique` MsgName diff --git a/protoReformat.go b/protoReformat.go index 2e9b498..b773d14 100644 --- a/protoReformat.go +++ b/protoReformat.go @@ -109,6 +109,7 @@ func doParse(lines []string) *FormatMsg { if strings.HasPrefix(line, "oneof ") { if strings.Contains(line, "}") { newmsg := basemsg.newMessage(line, comments, FormatMsg_ONEOF) + newmsg.IsEmpty = true newmsg.Footer = "} // blah" comments = "" continue @@ -123,6 +124,7 @@ func doParse(lines []string) *FormatMsg { newmsg := basemsg.newMessage(line, comments, FormatMsg_ENUM) comments = "" if strings.Contains(line, "}") { + newmsg.IsEmpty = true newmsg.Footer = "} // blah" continue } @@ -135,6 +137,7 @@ func doParse(lines []string) *FormatMsg { newmsg := basemsg.newMessage(line, comments, FormatMsg_MESSAGE) comments = "" if strings.Contains(line, "}") { + newmsg.IsEmpty = true newmsg.Footer = "} // blah" continue } @@ -196,6 +199,7 @@ func (msg *FormatMsg) load() { if strings.HasPrefix(line, "oneof ") { newmsg := msg.newMessage(line, "", FormatMsg_ONEOF) if strings.Contains(line, "}") { + newmsg.IsEmpty = true return } newmsg.load() @@ -204,6 +208,7 @@ func (msg *FormatMsg) load() { if strings.HasPrefix(line, "enum ") { newmsg := msg.newMessage(line, "", FormatMsg_ENUM) if strings.Contains(line, "}") { + newmsg.IsEmpty = true return } newmsg.load() @@ -213,6 +218,7 @@ func (msg *FormatMsg) load() { // message inception. search for the architect. don't forget your totem newmsg := msg.newMessage(line, "", FormatMsg_MESSAGE) if strings.Contains(line, "}") { + newmsg.IsEmpty = true return } newmsg.load() @@ -328,7 +334,7 @@ func formatEnum(curmsg *FormatMsg) []string { // newmsg = append(newmsg, curmsg.formatLineBase(curmsg.Footer, "enum footer")) newmsg = append(newmsg, curmsg.formatFooter(curmsg.Footer, "enum footer")) if curmsg.PadAfter { - newmsg = append(newmsg, curmsg.formatLineBase("", "PadAfter")) + newmsg = append(newmsg, curmsg.formatPadAfter()) } return newmsg @@ -348,7 +354,7 @@ func formatOneof(curmsg *FormatMsg) []string { // newmsg = append(newmsg, curmsg.formatLineBase(curmsg.Footer, "oneof footer")) newmsg = append(newmsg, curmsg.formatFooter(curmsg.Footer, "oneof footer")) if curmsg.PadAfter { - newmsg = append(newmsg, curmsg.formatLineBase("", "PadAfter")) + newmsg = append(newmsg, curmsg.formatPadAfter()) } return newmsg @@ -422,6 +428,13 @@ func (msg *FormatMsg) formatFooter(line string, dbg string) string { return msg.formatLineBase(line, "footer") } +func (msg *FormatMsg) formatPadAfter() string { + if argv.Debug { + return msg.formatLineBase("", "pad after") + } + return "" +} + func (msg *FormatMsg) formatHeader(line string, dbg string) string { if line == "" { if msg.Depth != 0 { @@ -517,6 +530,11 @@ func trimLines(lines []string) []string { func formatMessage(curmsg *FormatMsg) []string { var newmsg []string + if curmsg.IsEmpty { + newmsg = append(newmsg, curmsg.formatLineBase("// isEmpty", "IsEmpty")) + return newmsg + } + // add the notes & comments before the header notes := trimLines(curmsg.Notes) if len(notes) == 0 { @@ -592,18 +610,9 @@ func formatMessage(curmsg *FormatMsg) []string { newmsg = append(newmsg, curmsg.formatFooter(curmsg.Footer, "footer")) if curmsg.PadAfter { - newmsg = append(newmsg, curmsg.formatLineBase("", "PadAfter")) + newmsg = append(newmsg, curmsg.formatPadAfter()) } - /* - if curmsg.Footer == "" { - newmsg = append(newmsg, "// footer was empty") - } else { - // newline := fmt.Sprintf("%s%s", curmsg.padding(1), curmsg.Footer) // +" //footer") - // newmsg = append(newmsg, newline) - newmsg = append(newmsg, curmsg.formatLineBase(curmsg.Footer, "msg depth")) - } - */ return newmsg }