Merge pull request #229 from puremourning/variables-coerce-type
Ability to coerce types in the vimspector config
This commit is contained in:
commit
9a9d43cb82
2 changed files with 28 additions and 4 deletions
|
|
@ -24,6 +24,7 @@ import subprocess
|
|||
import shlex
|
||||
import collections
|
||||
import re
|
||||
import typing
|
||||
|
||||
|
||||
LOG_FILE = os.path.expanduser( os.path.join( '~', '.vimspector.log' ) )
|
||||
|
|
@ -540,14 +541,31 @@ def ExpandReferencesInString( orig_s,
|
|||
return s
|
||||
|
||||
|
||||
def CoerceType( mapping: typing.Dict[ str, typing.Any ], key: str ):
|
||||
DICT_TYPES = {
|
||||
'json': json.loads,
|
||||
's': str
|
||||
}
|
||||
|
||||
parts = key.split( '#' )
|
||||
if len( parts ) > 1 and parts[ -1 ] in DICT_TYPES.keys():
|
||||
value = mapping.pop( key )
|
||||
|
||||
new_type = parts[ -1 ]
|
||||
key = '#'.join( parts[ 0 : -1 ] )
|
||||
|
||||
mapping[ key ] = DICT_TYPES[ new_type ]( value )
|
||||
|
||||
|
||||
# TODO: Should we just run the substitution on the whole JSON string instead?
|
||||
# That woul dallow expansion in bool and number values, such as ports etc. ?
|
||||
def ExpandReferencesInDict( obj, mapping, calculus, user_choices ):
|
||||
for k in obj.keys():
|
||||
for k in list( obj.keys() ):
|
||||
obj[ k ] = ExpandReferencesInObject( obj[ k ],
|
||||
mapping,
|
||||
calculus,
|
||||
user_choices )
|
||||
CoerceType( obj, k )
|
||||
|
||||
|
||||
def ParseVariables( variables_list,
|
||||
|
|
@ -560,9 +578,10 @@ def ParseVariables( variables_list,
|
|||
if not isinstance( variables_list, list ):
|
||||
variables_list = [ variables_list ]
|
||||
|
||||
variables: typing.Dict[ str, typing.Any ]
|
||||
for variables in variables_list:
|
||||
new_mapping.update( new_variables )
|
||||
for n, v in variables.items():
|
||||
for n, v in list( variables.items() ):
|
||||
if isinstance( v, dict ):
|
||||
if 'shell' in v:
|
||||
new_v = v.copy()
|
||||
|
|
@ -597,6 +616,8 @@ def ParseVariables( variables_list,
|
|||
calculus,
|
||||
user_choices )
|
||||
|
||||
CoerceType( new_variables, n )
|
||||
|
||||
return new_variables
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -57,8 +57,11 @@
|
|||
"type": "python",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"program": "${program:${file\\}}",
|
||||
"stopOnEntry": false,
|
||||
"console": "integratedTerminal"
|
||||
"stopOnEntry#json": "${StopOnEntry:true}",
|
||||
"console": "integratedTerminal",
|
||||
"args#json": "${args:[]}",
|
||||
"env#json": "${env:{\\}}",
|
||||
"igored#json#s": "string not json"
|
||||
},
|
||||
"breakpoints": {
|
||||
"exception": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue