AutoHotkey v2:
Code: Select all
/*
; ##############################################################################################################################################################
; EXAMPLE
; ##############################################################################################################################################################
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; NEW
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Str := "This is my test string."
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; GET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MsgBox(Str) ; This is my test string.
MsgBox(Str[]) ; This is my test string.
MsgBox(Str[7]) ; s
MsgBox(Str[17, 7]) ; string.
MsgBox(Str[0]) ; 23 (length)
MsgBox(Str.Length) ; 23 (length)
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; CALL
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MsgBox(Str.Compare("This is my test string.")) ; 1 (TRUE, CaseSensitive = 0)
MsgBox(Str.Compare("This is my test strinG.")) ; 1 (TRUE, CaseSensitive = 0)
MsgBox(Str.Compare("This is my test strinG.", 1)) ; 0 (FALSE, CaseSensitive = 1)
MsgBox(Str.InStr("my")) ; 9
MsgBox(Str.Contains(" my")) ; 1
MsgBox(Str.In("aaa,bbb")) ; 0
MsgBox(Str.ToUpper()) ; THIS IS MY TEST STRING.
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; SET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Str[] := "This is my new test string."
MsgBox(Str) ; This is my new test string.
Str[3] := 1
MsgBox(Str) ; Th1s is my new test string.
Str[12, 3] := "NEW"
MsgBox(Str) ; Th1s is my NEW test string.
*/
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; DEFAULT BASE OBJECT
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject() {
Static _ := ("".base.base := { __Get: Func("__DefaultBaseObject__Get")
, __Set: Func("__DefaultBaseObject__Set")
, __Call: Func("__DefaultBaseObject__Call") })
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; GET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Get(Var, Param*) {
;R := Var[]
If (Param.MaxIndex() == "")
Return (Var)
;R := Var[0] | X := Var.Length
Else If (Param[1] == 0 || Param[1] = "Length")
Return (StrLen(Var))
;R := Var[X]
Else If (Param.MaxIndex() == 1)
Return (SubStr(Var, Param[1], 1))
;R := Var[X, Y]
Else If (Param.MaxIndex() == 2)
Return (SubStr(Var, Param[1], Param[2]))
;R := Var[X, Y, Z]
Else If (Param.MaxIndex() == 3)
Return (SubStr(Var, Param[1], Param[3] - Param[1] + 1))
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; SET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Set(ByRef Var, Param*) {
;Var[] := X
If (Param.MaxIndex() == 1)
Var := Param[1]
;Var[X1] := X2
Else If (Param.MaxIndex() == 2)
Var := SubStr(Var, 1, Param[1] - 1) . Param[2] . SubStr(Var, Param[1] + 1)
;Var[X1, X2] := X3
Else If (Param.MaxIndex() == 3)
Var := SubStr(Var, 1, Param[1] - 1) . Param[3] . SubStr(Var, Param[1] + Param[2])
Return (FALSE)
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; CALL
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Call(Data, FuncName, Param*) {
;bool Compare(Var, CaseSensitive?)
If (FuncName = "Compare")
Return (Param[2] ? (Data == Param[1]) : (Data = Param[1]))
;int InStr(Needle, CaseSensitive?, StartingPos=1, Occurrence=1)
Else If (FuncName = "InStr")
Return (InStr(Data, Param[1], !!Param[2], Param[3] = "" ? 1 : Param[3], Param[4] = "" ? 1 : Param[4]))
;string ToLower()
Else If (FuncName = "ToLower")
Return (Format("{:L}", Data))
;bool IsLower()
Else If (FuncName = "IsLower")
{
LoopParse(Data,, A_Space . A_Tab . Chr(10) . Chr(13))
If (DllCall("User32.dll\IsCharLower", "UShort", Ord(A_LoopField)) == FALSE)
Return (FALSE)
return (TRUE)
}
;string ToUpper()
Else If (FuncName = "ToUpper")
Return (Format("{:U}", Data))
;bool IsUpper()
Else If (FuncName = "IsUpper")
{
LoopParse(Data,, A_Space . A_Tab . Chr(10) . Chr(13))
If (DllCall("User32.dll\IsCharUpper", "UShort", Ord(A_LoopField)) == FALSE)
Return (FALSE)
return (TRUE)
}
;string ToTitle()
Else If (FuncName = "ToTitle")
Return (Format("{:T}", Data))
;bool IsNormalized(Form = 0x2)
Else If (FuncName = "IsNormalized")
Return (Data .= ""), (DllCall("Normaliz.dll\IsNormalizedString", "Int", Param[1] == "" ? 0x2 : Param[1], "Ptr", &Data, "Int", StrLen(Data) + 1))
;string Reverse()
Else If (FuncName = "Reverse")
Return (Data .= ""), (DllCall("msvcrt.dll\_wcsrev", "Ptr", &Data, "CDecl")), (Data)
;bool Contains(Needle, Delimiter = ",", OmitChars = "", CaseSensitive?)
Else If (FuncName = "Contains")
{
LoopParse(Param[1], Param[2] == "" ? "," : Param[2], Param[3])
If (InStr(Data, A_LoopField, Param[4] == TRUE ? TRUE : FALSE))
Return (TRUE)
Return (FALSE)
}
;bool In(Needle, Delimiter = ",", OmitChars = "", CaseSensitive?)
Else If (FuncName = "In")
{
LoopParse(Param[1], Param[2] == "" ? "," : Param[2], Param[3])
If ((!Param[4] && Data = A_LoopField) || (Param[4] && Data == A_LoopField))
Return (TRUE)
Return (FALSE)
}
;bool Speak()
Else If (FuncName = "Speak")
Return (ComObjCreate("SAPI.SpVoice").Speak(Data))
;string ConvertEOL(EOL)
Else If (FuncName = "ConvertEOL")
{
If (Param[1] == "`r`n"), Return (StrReplace(StrReplace(StrReplace(Data, "`r`n", "`n"), "`r", "`n"), "`n", "`r`n"))
Else If (Param[1] == "`r" || Param[1] == "`n") {
Data := StrReplace(StrReplace(Data, "`r`n", Param[1]), Param[1] == "`n" ? "`r" : "`n", Param[1] == "`r" ? "`n" : "`r")
If (StrLen(Data) && SubStr(Data, -1) != Param[1]), Data .= Param[1]
} Return (Data)
}
}
AutoHotKey v1:
Code: Select all
/*
; ##############################################################################################################################################################
; EXAMPLE
; ##############################################################################################################################################################
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; NEW
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Str := "This is my test string."
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; GET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MsgBox % Str ; This is my test string.
MsgBox % Str[] ; This is my test string.
MsgBox % Str[7] ; s
MsgBox % Str[17, 7] ; string.
MsgBox % Str[0] ; 23 (length)
MsgBox % Str.Length ; 23 (length)
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; CALL
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
MsgBox % Str.Compare("This is my test string.") ; 1 (TRUE, CaseSensitive = 0)
MsgBox % Str.Compare("This is my test strinG.") ; 1 (TRUE, CaseSensitive = 0)
MsgBox % Str.Compare("This is my test strinG.", 1) ; 0 (FALSE, CaseSensitive = 1)
MsgBox % Str.InStr("my") ; 9
MsgBox % Str.Contains(" my") ; 1
MsgBox % Str.In("aaa,bbb") ; 0
MsgBox % Str.ToUpper() ; THIS IS MY TEST STRING.
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; SET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Str[] := "This is my new test string."
MsgBox % Str ; This is my new test string.
Str[3] := 1
MsgBox % Str ; Th1s is my new test string.
Str[12, 3] := "NEW"
MsgBox % Str ; Th1s is my NEW test string.
*/
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; DEFAULT BASE OBJECT
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject() {
Static _ := ("".base.base := { __Get: Func("__DefaultBaseObject__Get")
, __Set: Func("__DefaultBaseObject__Set")
, __Call: Func("__DefaultBaseObject__Call") })
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; GET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Get(Var, Param*) {
;R := Var[]
If (Param.MaxIndex() == "")
Return (Var)
;R := Var[0] | X := Var.Length
Else If (Param[1] == 0 || Param[1] = "Length")
Return (StrLen(Var))
;R := Var[X]
Else If (Param.MaxIndex() == 1)
Return (SubStr(Var, Param[1], 1))
;R := Var[X, Y]
Else If (Param.MaxIndex() == 2)
Return (SubStr(Var, Param[1], Param[2]))
;R := Var[X, Y, Z]
Else If (Param.MaxIndex() == 3)
Return (SubStr(Var, Param[1], Param[3] - Param[1] + 1))
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; SET
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Set(ByRef Var, Param*) {
;Var[] := X
If (Param.MaxIndex() == 1)
Var := Param[1]
;Var[X1] := X2
Else If (Param.MaxIndex() == 2)
Var := SubStr(Var, 1, Param[1] - 1) . Param[2] . SubStr(Var, Param[1] + 1)
;Var[X1, X2] := X3
Else If (Param.MaxIndex() == 3)
Var := SubStr(Var, 1, Param[1] - 1) . Param[3] . SubStr(Var, Param[1] + Param[2])
Return (FALSE)
}
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; CALL
; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
__DefaultBaseObject__Call(Data, FuncName, Param*) {
;bool Compare(Var, CaseSensitive?)
If (FuncName = "Compare")
Return (Param[2] ? (Data == Param[1]) : (Data = Param[1]))
;int InStr(Needle, CaseSensitive?, StartingPos=1, Occurrence=1)
Else If (FuncName = "InStr")
Return (InStr(Data, Param[1], !!Param[2], Param[3] = "" ? 1 : Param[3], Param[4] = "" ? 1 : Param[4]))
;string ToLower()
Else If (FuncName = "ToLower")
Return (Format("{:L}", Data))
;bool IsLower()
Else If (FuncName = "IsLower")
{
Loop, Parse, % Data,, % A_Space . A_Tab . Chr(10) . Chr(13)
If (DllCall("User32.dll\IsCharLower", "UShort", Ord(A_LoopField)) == FALSE)
Return (FALSE)
return (TRUE)
}
;string ToUpper()
Else If (FuncName = "ToUpper")
Return (Format("{:U}", Data))
;bool IsUpper()
Else If (FuncName = "IsUpper")
{
Loop, Parse, % Data,, % A_Space . A_Tab . Chr(10) . Chr(13)
If (DllCall("User32.dll\IsCharUpper", "UShort", Ord(A_LoopField)) == FALSE)
Return (FALSE)
return (TRUE)
}
;string ToTitle()
Else If (FuncName = "ToTitle")
Return (Format("{:T}", Data))
;bool IsNormalized(Form = 0x2)
Else If (FuncName = "IsNormalized")
Return (Data .= ""), (DllCall("Normaliz.dll\IsNormalizedString", "Int", Param[1] == "" ? 0x2 : Param[1], "Ptr", &Data, "Int", StrLen(Data) + 1))
;string Reverse()
Else If (FuncName = "Reverse")
Return (Data .= ""), (DllCall("msvcrt.dll\_wcsrev", "Ptr", &Data, "CDecl")), (Data)
;bool Contains(Needle, Delimiter = ",", OmitChars = "", CaseSensitive?)
Else If (FuncName = "Contains")
{
Loop, Parse, % Param[1], % Param[2] == "" ? "," : Param[2], % Param[3]
If (InStr(Data, A_LoopField, Param[4] == TRUE ? TRUE : FALSE))
Return (TRUE)
Return (FALSE)
}
;bool In(Needle, Delimiter = ",", OmitChars = "", CaseSensitive?)
Else If (FuncName = "In")
{
Loop, Parse, % Param[1], % Param[2] == "" ? "," : Param[2], % Param[3]
If ((!Param[4] && Data = A_LoopField) || (Param[4] && Data == A_LoopField))
Return (TRUE)
Return (FALSE)
}
;bool Speak()
Else If (FuncName = "Speak")
Return (ComObjCreate("SAPI.SpVoice").Speak(Data))
;string ConvertEOL(EOL)
Else If (FuncName = "ConvertEOL")
{
If (Param[1] == "`r`n")
Return (StrReplace(StrReplace(StrReplace(Data, "`r`n", "`n"), "`r", "`n"), "`n", "`r`n"))
Else If (Param[1] == "`r" || Param[1] == "`n") {
Data := StrReplace(StrReplace(Data, "`r`n", Param[1]), Param[1] == "`n" ? "`r" : "`n", Param[1] == "`r" ? "`n" : "`r")
If (StrLen(Data) && SubStr(Data, -1) != Param[1])
Data .= Param[1]
} Return (Data)
}
}