From 9fd247681a9529494e51206ec6dc8301452a905b Mon Sep 17 00:00:00 2001 From: David Daily Date: Fri, 28 Aug 2026 12:27:28 -0500 Subject: [PATCH] Update func.ahk --- func.ahk | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/func.ahk b/func.ahk index cec7aef..faec437 100644 --- a/func.ahk +++ b/func.ahk @@ -16,26 +16,31 @@ ini_load(location) temp := FileOpen(location, "r") cleaner := temp.Read() temp.Close() - cleaner := RegExReplace(cleaner, "`am)^[\s\R]*") ; Remove empty lines - cleaner := RegExReplace(cleaner, "m)[ \t]+$") ; Get rid of extra space at the end of values (NEEDS FIXED) + cleaner := RegExReplace(cleaner, "`m)[ \t]+$|^[\s\R]*$") ; Remove empty lines, spaces, tabs temp := FileOpen(location, "w") temp.Write(cleaner) temp.Close() temp := FileOpen(location, "r") - out := Object() + out := Map() ; I tried an object, it was too complicated for what I'm doing. Nested map is good enough + curr_section := 0 ; v2 won't evaluate a true/false to false if a variable isn't set to false + r := Object() ; bruh why do I have to set up variables now suddenly Loop { Line := temp.ReadLine() RegExMatch(Line, "(?
(?<=\[).*(?=\]))|(?.*)=(?.*)", &r) ; Key = r.Key, Value = r.Value, Section = r.Section If (r.Section) { - out.%r.Section% := Map() - current_Section := r.Section - } Else + out[r.Section] := Map() + curr_section := r.Section + } Else { - trimKey := Trim(r.Key, " `t`r`n") - trimValue := Trim(r.Value, " `t`r`n") - out.%current_Section%[trimKey] := trimValue + If (curr_section) + { + out[curr_section].Set(Trim(r.Key, " `t`r`n"), Trim(r.Value, " `t`r`n")) + } Else + { + out.Set(Trim(r.Key, " `t`r`n"), Trim(r.Value, " `t`r`n")) ; this handles things with no section + } } } Until (temp.AtEOF) temp.Close() @@ -45,16 +50,13 @@ ini_load(location) ini_write(location, inKey, inValue) ; Don't need to specify section because you can only have one hotstring anyway { - Critical("On") ini := FileOpen(location, "r") temp := ini.Read() ini.Close() - inKeyReg := "(?<=" inKey "=)\S*" ; Regex to make sure we're matching only the value for the requested key - temp := RegExReplace(temp, inKeyReg, inValue) + temp := RegExReplace(temp, "(?<=" inKey "=).*", inValue) ini := FileOpen(location, "w") ini.Write(temp) ini.Close() - Critical("Off") } @@ -68,18 +70,16 @@ If !FileExist(sett_ini) ; Check if the sett_ini doesn't exist ini := FileOpen(sett_ini, "w") writethis := " ( LTrim - [USpec] Email=LastnameFirstname@JohnDeere.com - DocFile=Select File - [Main] - MJDPaste=1 + DocFile=0 JDProductNames=1 GloVar=0 - [Language] German=0 + msmv=always + msmv_status=stopped )" ini.Write(writethis) - file.Close() + ini.Close() Run("Settings.ahk") ; Runs the GUI for changing the settings, accessible with Alt+Shift+\ (also easy way to restart this script) } @@ -92,12 +92,8 @@ global settings := ini_load(sett_ini) ; started as global variables, keeping this commented out in case there's some old script where I need to replace something ; User Specific things: -;global email := settings.USpec["Email"] -;global docfile := settings.USpec["DocFile"] - -; Replacement -;global jdpn := settings.Replacement["JDProductNames"] -;global glovar := settings.Replacement["GloVar"] - -; Language -;global ger := settings.Language["German"] \ No newline at end of file +;global email := settings["Email"] +;global docfile := settings["DocFile"] +;global jdpn := settings["JDProductNames"] +;global glovar := settings["GloVar"] +;global ger := settings["German"] \ No newline at end of file