@@ -88,6 +88,8 @@ Global Const $_WD_JSON_Shadow = "[value][" & $_WD_SHADOW_ID & "]"
88
88
Global Const $_WD_JSON_Error = " [value][error]"
89
89
Global Const $_WD_JSON_Message = " [value][message]"
90
90
91
+ Global Const $JSON_MLREFORMAT = 1048576 ; Addition to constants from json.au3
92
+
91
93
Global Enum _
92
94
$_WD_DEBUG_None = 0 , _ ; No logging
93
95
$_WD_DEBUG_Error , _ ; logging in case of Error
@@ -197,7 +199,6 @@ Global $_WD_HTTPRESULT = 0 ; Result of last WinHTTP request
197
199
Global $_WD_HTTPRESPONSE = ' ' ; Response of last WinHTTP request
198
200
Global $_WD_SESSION_DETAILS = " " ; Response from _WD_CreateSession
199
201
Global $_WD_BFORMAT = $SB_UTF8 ; Binary format
200
- Global $_WD_ESCAPE_CHARS = ' \\"' ; Characters to escape
201
202
Global $_WD_DRIVER_CLOSE = True ; Close prior driver instances before launching new one
202
203
Global $_WD_DRIVER_DETECT = True ; Don't launch new driver instance if one already exists
203
204
Global $_WD_RESPONSE_TRIM = - 1 ; Trim response string to given value for debug output
@@ -838,7 +839,7 @@ Func _WD_ExecuteScript($sSession, $sScript, $sArguments = Default, $bAsync = Def
838
839
If IsBool ($vSubNode ) Then $vSubNode = ($vSubNode ) ? $_WD_JSON_Value : " " ; True = the JSON value node is returned , False = entire JSON response is returned
839
840
840
841
If IsString ($vSubNode ) Then
841
- $sScript = __WD_EscapeString($sScript )
842
+ $sScript = __WD_EscapeString($sScript , $JSON_MLREFORMAT )
842
843
843
844
$sData = ' {"script":"' & $sScript & ' ", "args":[' & $sArguments & ' ]}'
844
845
$sCmd = ($bAsync ) ? ' async' : ' sync'
@@ -1675,20 +1676,26 @@ EndFunc ;==>__WD_CloseDriver
1675
1676
; #INTERNAL_USE_ONLY# ===========================================================================================================
1676
1677
; Name ..........: __WD_EscapeString
1677
1678
; Description ...: Escapes designated characters in string.
1678
- ; Syntax ........: __WD_EscapeString($sData)
1679
- ; Parameters ....: $sData - the string to be escaped
1680
- ; Return values..: Escaped string .
1679
+ ; Syntax ........: __WD_EscapeString($sData[, $iOption = 0] )
1680
+ ; Parameters ....: $sData - the string to be escaped
1681
+ ; $iOption - [optional] Any combination of $JSON_* constants. Default is 0 .
1681
1682
; Author ........: Danp2
1682
1683
; Modified ......:
1683
- ; Remarks .......:
1684
+ ; Remarks .......: $JSON_MLREFORMAT will strip tabs and CR/LFs from a multiline string.
1685
+ ; See $JSON_* constants in json.au3 for other $iOption possibilities.
1684
1686
; Related .......:
1685
1687
; Link ..........:
1686
1688
; Example .......: No
1687
1689
; ===============================================================================================================================
1688
- Func __WD_EscapeString($sData )
1689
- Local $sRegEx = " ([" & $_WD_ESCAPE_CHARS & " ])"
1690
- Local $sEscaped = StringRegExpReplace ($sData , $sRegEx , " \\$1" )
1691
- Return SetError ($_WD_ERROR_Success , 0 , $sEscaped )
1690
+ Func __WD_EscapeString($sData , $iOption = 0 )
1691
+ If BitAND ($iOption , $JSON_MLREFORMAT ) Then
1692
+ $sData = StringRegExpReplace ($sData , ' [\v\t]' , ' ' ) ; Strip tabs and CR/LFs
1693
+ $iOption = BitXOR ($iOption , $JSON_MLREFORMAT ) ; Flip bit off
1694
+ Endif
1695
+
1696
+ $sData = Json_StringEncode($sData , $iOption ) ; Escape JSON Strings
1697
+
1698
+ Return SetError ($_WD_ERROR_Success , 0 , $sData )
1692
1699
EndFunc ; ==>__WD_EscapeString
1693
1700
1694
1701
; #INTERNAL_USE_ONLY# ===========================================================================================================
0 commit comments