From ce78e00434d95380fc031be33850d92e85b2d48e Mon Sep 17 00:00:00 2001 From: kauri Date: Thu, 16 Sep 2021 23:46:40 +0300 Subject: [PATCH] final optimized --- main.go | 59 +++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/main.go b/main.go index fdfe868..3522be0 100644 --- a/main.go +++ b/main.go @@ -19,17 +19,23 @@ func main() { // fmt.Println(string(input_text)) - input_text = []byte(FixPunctuation(string(input_text))) // initial punctuation edits + text_slice := SplitBySpace(string(input_text)) - text_slice := SplitBySpace(string(input_text)) // string to slice of strings + text_slice = FindHexBinArticles(text_slice) // convert nr systems - text_slice = FindTriggers(text_slice) // find and correct formatting/converting + text := RemoveDoubleSpaces(strings.Join(text_slice, " ")) // empty slice units removed - output_text := RemoveDoubleSpaces(strings.Join(text_slice, " ")) // slice back to single string + text = FixPunctuation(text) // first punctuation check + + next_slice := SplitBySpace(text) + + next_slice = FindTriggers(next_slice) // upper lower capitalize + + output_text := RemoveDoubleSpaces(strings.Join(next_slice, " ")) // slice back to single string output_text = FixPunctuation(output_text) // final punctuation control - output_text = FixApostrophes(output_text) // function dealing with apostrophes + output_text = FixApostrophes(output_text) // apostrophes being checked os.WriteFile(string(os.Args[2]), []byte(string(output_text)), os.ModePerm) @@ -98,24 +104,37 @@ func FixApostrophes(text string) string { return text } -func FindTriggers(slice []string) []string { // all of those add extra space when completed (fix implemented) +func FindHexBinArticles(slice []string) []string { var x int - var z int // how many words to modify for i := range slice { - - if slice[i] == "(bin)" || slice[i] == "(hex)" { - x = Converter(slice[i-1], slice[i]) + if strings.Contains(string(slice[i]), "(bin)") || strings.Contains(string(slice[i]), "(hex)") { + x = Converter(slice[i-1], slice[i][:5]) slice[i-1] = strconv.Itoa(x) - slice[i] = "" + + slice[i] = strings.TrimPrefix(slice[i], "(bin)") + slice[i] = strings.TrimPrefix(slice[i], "(hex)") } + if i+1 != len(slice) && (slice[i] == "a" || slice[i] == "A") { + if strings.ContainsAny(string(slice[i+1][0]), "aeiouh") { + slice[i] += "n" + } + } + } + return slice +} + +func FindTriggers(slice []string) []string { // all of those add extra space when completed (fix implemented) + + var x int // how many words to modify + for i := range slice { if strings.Contains(string(slice[i]), "(up)") { slice[i-1] = strings.ToUpper(slice[i-1]) slice[i] = strings.TrimPrefix(slice[i], "(up)") } if strings.Contains(string(slice[i]), "(up,") { - z = int(slice[i][5]) - 48 - for a := i - z; a < i; a++ { + x = int(slice[i][5]) - 48 + for a := i - x; a < i; a++ { slice[a] = strings.ToUpper(slice[a]) } slice[i] = slice[i][7:] @@ -126,8 +145,8 @@ func FindTriggers(slice []string) []string { // all of those add extra space whe slice[i] = strings.TrimPrefix(slice[i], "(low)") } if strings.Contains(string(slice[i]), "(low,") { - z = int(slice[i][6]) - 48 - for b := i - z; b < i; b++ { + x = int(slice[i][6]) - 48 + for b := i - x; b < i; b++ { slice[b] = strings.ToLower(slice[b]) } slice[i] = slice[i][8:] @@ -138,19 +157,13 @@ func FindTriggers(slice []string) []string { // all of those add extra space whe slice[i] = strings.TrimPrefix(slice[i], "(cap)") } if strings.Contains(string(slice[i]), "(cap,") { - z = int(slice[i][6]) - 48 - for c := i - z; c < i; c++ { + x = int(slice[i][6]) - 48 + for c := i - x; c < i; c++ { slice[c] = strings.ToUpper(string(slice[c][0])) + slice[c][1:] } slice[i] = slice[i][8:] } - if i+1 != len(slice) && (slice[i] == "a" || slice[i] == "A") { - if strings.ContainsAny(string(slice[i+1][0]), "aeiouh") { - slice[i] += "n" - } - } - } return slice }