diff options
| author | Jeff Carr <[email protected]> | 2025-01-10 22:27:38 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-01-10 22:27:38 -0600 |
| commit | f3297022a8ed73db93842311d4b1429e8f69e8c7 (patch) | |
| tree | 947b1c90cf528c0e3de4e749d100dbdd86d0241a /sort.go | |
| parent | 6ce9c29135cd181755e0e76a5ddba98e37ae49d8 (diff) | |
close to being able to remove the old functions
Diffstat (limited to 'sort.go')
| -rw-r--r-- | sort.go | 98 |
1 files changed, 71 insertions, 27 deletions
@@ -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 } |
