runs again, still doing the padding wrong

This commit is contained in:
Jeff Carr 2025-03-28 10:18:58 -05:00
parent 11ccc557fe
commit de7d698e19
2 changed files with 96 additions and 52 deletions

View File

@ -65,6 +65,7 @@ message FormatMsg {
MESSAGE = 0;
ENUM = 1;
ONEOF = 2;
VAR = 3;
}
int64 depth = 1; // used to indent output
@ -75,7 +76,7 @@ message FormatMsg {
repeated FormatMsg msgs = 6; // locally defined messages and enums
repeated string lines = 7; // the variables
string footer = 8; // the '}' line
Type type = 9;
Type type = 9; // yep. type. yep. that's what this is for
}
message Find {

View File

@ -76,58 +76,69 @@ func protoReformat(filename string) error {
var newfile string
var bigName int64
var bigType int64
// var bigName int64
// var bigType int64
var fmtmsg *FormatMsg
fmtmsg = new(FormatMsg)
// var fmtmsg *FormatMsg
// fmtmsg = new(FormatMsg)
var inMessage bool
var allLinesIter iter.Seq[string]
allLinesIter = makeLineIter(data)
// gets the max vartype and varname
for line := range allLinesIter {
if strings.HasPrefix(line, "message ") {
inMessage = true
continue
}
// find the end of the message
if strings.HasPrefix(line, "}") {
inMessage = false
setMaxSizes(fmtmsg)
if bigName < fmtmsg.MaxVarname {
bigName = fmtmsg.MaxVarname
/*
var allLinesIter iter.Seq[string]
allLinesIter = makeLineIter(data)
// gets the max vartype and varname
for line := range allLinesIter {
if strings.HasPrefix(line, "message ") {
inMessage = true
continue
}
if bigType < fmtmsg.MaxVartype {
bigType = fmtmsg.MaxVartype
}
fmtmsg = new(FormatMsg)
continue
}
// don't format or change anything when not in a "message {" section
if !inMessage {
continue
// find the end of the message
if strings.HasPrefix(line, "}") {
inMessage = false
setMaxSizes(fmtmsg)
if bigName < fmtmsg.MaxVarname {
bigName = fmtmsg.MaxVarname
}
if bigType < fmtmsg.MaxVartype {
bigType = fmtmsg.MaxVartype
}
fmtmsg = new(FormatMsg)
continue
}
// don't format or change anything when not in a "message {" section
if !inMessage {
continue
}
}
*/
basemsg := doParse(strings.Split(string(data), "\n"))
for _, newline := range basemsg.format() {
newfile += fmt.Sprintln(newline)
}
return saveFile(filename, newfile)
}
func doParse(lines []string) *FormatMsg {
var comments string
var inMessage bool
var basemsg *FormatMsg
basemsg = new(FormatMsg)
basemsg.MaxVarname = bigName
basemsg.MaxVartype = bigType
inMessage = false
var comments string
// write out the messages
allTheLines = newLinesScanner(strings.Split(string(data), "\n"))
allTheLines = newLinesScanner(lines)
for allTheLines.Scan() {
line := allTheLines.NextRaw()
if strings.HasPrefix(line, "oneof ") {
newmsg := basemsg.newOneofMessage(line)
newmsg.Notes = strings.Split(comments, "\n")
comments = ""
newmsg.load()
inMessage = true
continue
@ -136,6 +147,7 @@ func protoReformat(filename string) error {
if strings.HasPrefix(line, "enum ") {
newmsg := basemsg.newEnumMessage(line)
newmsg.Notes = strings.Split(comments, "\n")
comments = ""
newmsg.load()
inMessage = true
continue
@ -146,6 +158,7 @@ func protoReformat(filename string) error {
newmsg := basemsg.newStdMessage(line)
newmsg.Notes = strings.Split(comments, "\n")
comments = ""
newmsg.load()
inMessage = true
continue
@ -158,11 +171,7 @@ func protoReformat(filename string) error {
}
}
for _, newline := range basemsg.format() {
newfile += fmt.Sprintln(newline)
}
return saveFile(filename, newfile)
return basemsg
}
func saveFile(filename string, data string) error {
@ -296,6 +305,7 @@ func makeLineIter(data []byte) iter.Seq[string] {
}
}
/*
// func loadEnumDefinition(newMsg *EnumMessage) *EnumMessage {
func (newMsg *EnumMessage) load() {
curPB := newMsg.msgPB
@ -308,6 +318,7 @@ func (newMsg *EnumMessage) load() {
curPB.Lines = append(curPB.Lines, line)
}
}
*/
// find the max length of varname and vartype
func setMaxSizes(curmsg *FormatMsg) {
@ -361,14 +372,45 @@ func formatEnum(curmsg *FormatMsg) []string {
return newmsg
}
func (msg *FormatMsg) format() []string {
switch msg.Type {
case FormatMsg_ENUM:
return formatEnum(msg)
case FormatMsg_MESSAGE:
return formatMessage(msg)
func (all *FormatMsg) format() []string {
var bigType int64
var bigName int64
// find the biggest var names and var types
for _, msg := range all.Msgs {
switch msg.Type {
case FormatMsg_ENUM:
case FormatMsg_MESSAGE:
// find the max length of varname and vartype
setMaxSizes(msg)
if bigType < msg.MaxVartype {
bigType = msg.MaxVartype
}
if bigName < msg.MaxVarname {
bigName = msg.MaxVarname
}
default:
}
}
return formatMessage(msg)
// set this size in each message
for _, msg := range all.Msgs {
switch msg.Type {
case FormatMsg_ENUM:
case FormatMsg_MESSAGE:
msg.MaxVartype = bigType
msg.MaxVarname = bigName
default:
}
}
switch all.Type {
case FormatMsg_ENUM:
return formatEnum(all)
case FormatMsg_MESSAGE:
return formatMessage(all)
}
return formatMessage(all)
}
func formatMessage(curmsg *FormatMsg) []string {
@ -400,9 +442,6 @@ func formatMessage(curmsg *FormatMsg) []string {
}
}
// find the max length of varname and vartype
setMaxSizes(curmsg)
for _, msg := range curmsg.Msgs {
switch msg.Type {
case FormatMsg_ENUM:
@ -411,7 +450,7 @@ func formatMessage(curmsg *FormatMsg) []string {
newmsg = append(newmsg, line)
}
case FormatMsg_MESSAGE:
for _, line := range formatMessage(msg) {
for _, line := range msg.format() {
line = fmt.Sprintf("%s%s", curmsg.pad(), line)
newmsg = append(newmsg, line)
}
@ -445,7 +484,11 @@ func formatMessage(curmsg *FormatMsg) []string {
newline = strings.TrimRight(newline, " ")
newmsg = append(newmsg, newline)
}
newmsg = append(newmsg, curmsg.Footer) // +" //footer")
if curmsg.Footer == "" {
newmsg = append(newmsg, "// footer was empty")
} else {
newmsg = append(newmsg, curmsg.Footer) // +" //footer")
}
return newmsg
}