summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-10 22:27:38 -0600
committerJeff Carr <[email protected]>2025-01-10 22:27:38 -0600
commitf3297022a8ed73db93842311d4b1429e8f69e8c7 (patch)
tree947b1c90cf528c0e3de4e749d100dbdd86d0241a
parent6ce9c29135cd181755e0e76a5ddba98e37ae49d8 (diff)
close to being able to remove the old functions
-rw-r--r--main.go4
-rw-r--r--sort.go98
-rw-r--r--sortNew.go41
3 files changed, 94 insertions, 49 deletions
diff --git a/main.go b/main.go
index eda308b..59d4ded 100644
--- a/main.go
+++ b/main.go
@@ -151,7 +151,9 @@ func main() {
pb.marshal(pf)
// make the sort.pb.go file
- pb.makeNewSortfile(pf)
+ if err := pb.makeNewSortfile(pf); err != nil {
+ badExit(err)
+ }
}
func okExit(s string) {
diff --git a/sort.go b/sort.go
index f9763f7..e658ccf 100644
--- a/sort.go
+++ b/sort.go
@@ -48,25 +48,39 @@ func (pb *Files) makeNewSortfile(pf *File) error {
*/
// attempt to add sort functions for pf.Base
- pf.processMessage(pf.Bases, wSort, wFind)
- pf.processMessage(pf.Base, wSort, wFind)
+ if err := pf.processMessage(pf.Bases, wSort, wFind); err != nil {
+ return err
+ }
+ if err := pf.processMessage(pf.Base, wSort, wFind); err != nil {
+ return err
+ }
return nil
}
+// to simplify being able to read the code, FRUIT, APPLES and APPLE are used
+// FRUIT == the string name of the message in the protobuf file
+// APPLE == the type of the repeated variable
+// APPLES == the variable name of the repeated struct
func (pf *File) processMessage(msg *MsgName, wSort, wFind io.Writer) error {
var FRUIT string = cases.Title(language.English, cases.NoLower).String(msg.Name)
+
log.Printf("Generating functions for %s\n", FRUIT)
+
for _, v := range msg.Vars {
if !v.IsRepeated {
log.Printf("\tSKIP %s %s\n", v.VarName, v.VarType)
continue
}
+ log.Printf("\tFOUND REPEATED %s %s\n", v.VarName, v.VarType)
// use easier to read variable names APPLE and APPLES in the code
var APPLE string = v.VarType
var APPLES string = cases.Title(language.English, cases.NoLower).String(v.VarName)
// try and find the message struct for APPLE
var found *MsgName
+ if pf.Base.Name == APPLE {
+ found = pf.Base
+ }
for _, m := range pf.MsgNames {
if m.Name == APPLE {
found = m
@@ -77,44 +91,74 @@ func (pf *File) processMessage(msg *MsgName, wSort, wFind io.Writer) error {
return fmt.Errorf("failed to find struct %s", APPLE)
}
- found.addSortByMsg(FRUIT, APPLES, APPLE, wSort, wFind)
+ log.Printf("FOUND: %s %s for %s\n", APPLES, APPLE, FRUIT)
+
+ found.simpleAppend(wFind, FRUIT, APPLES, APPLE)
+ found.addAppendByMsg(wFind, FRUIT, APPLES, APPLE)
+ found.addDeleteByMsg(wFind, FRUIT, APPLES, APPLE)
+ found.addInsertByMsg(wFind, FRUIT, APPLES, APPLE) // new idea
+
+ found.addSortByMsg(wSort, FRUIT, APPLES, APPLE)
}
return nil
}
-func (parent *MsgName) addSortByMsg(FRUIT, APPLES, APPLE string, wSort, wFind io.Writer) error {
- log.Printf("\tFOUND!: %s %s for %s\n", APPLES, APPLE, FRUIT)
+func (parent *MsgName) addDeleteByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
+ log.Printf("\tDELETE: %s %s for %s\n", APPLES, APPLE, FRUIT)
var COLORS []string
+ for _, v := range parent.Vars {
+ if !v.HasUnique {
+ continue
+ }
+ var COLOR string = cases.Title(language.English, cases.NoLower).String(v.VarName)
+ COLORS = append(COLORS, COLOR)
+ log.Printf("\t\t(x %s) DeleteBy%s(string) *%s\n", FRUIT, COLOR, APPLE)
+ if argv.Delete {
+ parent.deleteByWithCopy(w, FRUIT, APPLES, APPLE, COLOR)
+ } else {
+ parent.deleteBy(w, FRUIT, APPLES, APPLE, COLOR)
+ }
+ }
+}
+
+func (parent *MsgName) addInsertByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
+ log.Printf("\tINSERT: %s %s for %s\n", APPLES, APPLE, FRUIT)
for _, v := range parent.Vars {
- if v.HasSort {
- // log.Printf("\tSort!: %s %s for %s\n", APPLES, APPLE, v.VarName)
- newS := cases.Title(language.English, cases.NoLower).String(v.VarName)
- log.Printf("\t(x %s) SortdBy%s() *%sIter\n", parent.Name, newS, APPLE)
+ if v.HasUnique {
+ var COLOR string = cases.Title(language.English, cases.NoLower).String(v.VarName)
+ log.Printf("\t\t(x %s) InsertBy%s(string) *%s\n", FRUIT, COLOR, APPLE)
+ parent.insertByColor(w, FRUIT, APPLES, APPLE, COLOR)
}
+ }
+}
+
+func (parent *MsgName) addAppendByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
+ log.Printf("\tAPPEND!: %s %s for %s\n", APPLES, APPLE, FRUIT)
+ var COLORS []string
+
+ for _, v := range parent.Vars {
if v.HasUnique {
- newS := cases.Title(language.English, cases.NoLower).String(v.VarName)
- var COLOR string = newS
+ var COLOR string = cases.Title(language.English, cases.NoLower).String(v.VarName)
COLORS = append(COLORS, COLOR)
- log.Printf("\t(x %s) AppendUniqueBy%s(%s)\n", parent.Name, newS, APPLE)
- parent.appendUniqueBy(wFind, FRUIT, APPLES, APPLE, COLOR)
-
- if v.VarType == "string" {
- log.Printf("\t(x %s) FindBy%s(string) *%s\n", FRUIT, COLOR, APPLE)
- parent.findBy(wFind, FRUIT, APPLES, APPLE, COLOR)
- log.Printf("\t(x %s) DeleteBy%s(string) *%s\n", parent.Name, newS, APPLE)
- if argv.Delete {
- parent.deleteByWithCopy(wFind, FRUIT, APPLES, APPLE, COLOR)
- } else {
- parent.deleteBy(wFind, FRUIT, APPLES, APPLE, COLOR)
- }
- }
+ log.Printf("\t\t(x %s) AppendUniqueBy%s(%s)\n", FRUIT, COLOR, APPLE)
+ parent.appendUniqueBy(w, FRUIT, APPLES, APPLE, COLOR)
}
}
- parent.insertByColors(wFind, FRUIT, APPLES, APPLE, COLORS)
if len(COLORS) > 0 {
- parent.appendUnique(wFind, FRUIT, APPLES, APPLE, COLORS)
+ parent.appendUnique(w, FRUIT, APPLES, APPLE, COLORS)
+ }
+}
+
+func (parent *MsgName) addSortByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
+ log.Printf("\tSORT!: %s %s for %s\n", APPLES, APPLE, FRUIT)
+
+ for _, v := range parent.Vars {
+ if v.HasSort {
+ // log.Printf("\tSort!: %s %s for %s\n", APPLES, APPLE, v.VarName)
+ newS := cases.Title(language.English, cases.NoLower).String(v.VarName)
+ log.Printf("\t\t(x %s) SortdBy%s() *%sIter\n", FRUIT, newS, APPLE)
+ }
}
- return nil
}
diff --git a/sortNew.go b/sortNew.go
index 7ed81dd..9f6a829 100644
--- a/sortNew.go
+++ b/sortNew.go
@@ -30,28 +30,27 @@ func (msg *MsgName) simpleAppend(w io.Writer, FRUIT, APPLES, APPLE string) {
fmt.Fprintln(w, "")
}
-func (msg *MsgName) insertByColors(w io.Writer, FRUIT, APPLES, APPLE string, COLORS []string) {
+func (msg *MsgName) insertByColor(w io.Writer, FRUIT, APPLES, APPLE string, COLOR string) {
LOCK := msg.getLockname("x")
- for _, COLOR := range COLORS {
- fmt.Fprintln(w, "// TESTING")
- fmt.Fprintln(w, "// returns an "+APPLE+" if "+COLOR+" matches, otherwise create")
- fmt.Fprintln(w, "func (x *"+FRUIT+") InsertBy"+COLOR+" (y string) "+APPLE+" {")
- fmt.Fprintln(w, " "+LOCK+".Lock()")
- fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
- fmt.Fprintln(w, "")
- fmt.Fprintln(w, " for _, p := range x."+APPLES+" {")
- fmt.Fprintln(w, " if p."+COLOR+" == "+COLOR+" {")
- fmt.Fprintln(w, " return p")
- fmt.Fprintln(w, " }")
- fmt.Fprintln(w, " }")
- fmt.Fprintln(w, "")
- fmt.Fprintln(w, " z := new("+APPLE+")")
- fmt.Fprintln(w, " z."+COLOR+" := y")
- fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", z)")
- fmt.Fprintln(w, " return true")
- fmt.Fprintln(w, "}")
- fmt.Fprintln(w, "")
- }
+
+ fmt.Fprintln(w, "// TESTING")
+ fmt.Fprintln(w, "// returns an "+APPLE+" if "+COLOR+" matches, otherwise create")
+ fmt.Fprintln(w, "func (x *"+FRUIT+") InsertBy"+COLOR+" (y string) *"+APPLE+" {")
+ fmt.Fprintln(w, " "+LOCK+".Lock()")
+ fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " for _, p := range x."+APPLES+" {")
+ fmt.Fprintln(w, " if p."+COLOR+" == y {")
+ fmt.Fprintln(w, " return p")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " z := new("+APPLE+")")
+ fmt.Fprintln(w, " z."+COLOR+" = y")
+ fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", z)")
+ fmt.Fprintln(w, " return z")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
}
func (msg *MsgName) appendUnique(w io.Writer, FRUIT, APPLES, APPLE string, COLORS []string) {