add space parameter
This commit is contained in:
parent
d1d6a80fe7
commit
5c526cf2b4
|
@ -42,3 +42,11 @@ Le paramètre peut être une valeur null (None en python) :
|
||||||
```
|
```
|
||||||
<param type="nil"/>
|
<param type="nil"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Paramètre de type "space"
|
||||||
|
|
||||||
|
Les paramètres sont chargés en supprimer les espaces en début ou fin de chaîne. Ce qui rend impossible d'avoir un paramètre " ". Avec le type "space", le paramètre sera donc un simple espace :
|
||||||
|
|
||||||
|
```
|
||||||
|
<param type="space"/>
|
||||||
|
```
|
||||||
|
|
|
@ -268,7 +268,7 @@ class Annotator(Walk):
|
||||||
for family in self.get_families():
|
for family in self.get_families():
|
||||||
if 'dynamic' not in vars(family):
|
if 'dynamic' not in vars(family):
|
||||||
continue
|
continue
|
||||||
family.suffixes = self.objectspace.paths.get_variable(family.dynamic)
|
family.suffixes = self.objectspace.paths.get_variable(family.dynamic, family.xmlfiles)
|
||||||
del family.dynamic
|
del family.dynamic
|
||||||
if not family.suffixes.multi:
|
if not family.suffixes.multi:
|
||||||
msg = _(f'dynamic family "{family.name}" must be linked '
|
msg = _(f'dynamic family "{family.name}" must be linked '
|
||||||
|
|
|
@ -59,7 +59,7 @@ class ParamAnnotator:
|
||||||
if param.type in ['suffix', 'index']:
|
if param.type in ['suffix', 'index']:
|
||||||
msg = _(f'"{param.type}" parameter must not have a value')
|
msg = _(f'"{param.type}" parameter must not have a value')
|
||||||
raise DictConsistencyError(msg, 28, obj.xmlfiles)
|
raise DictConsistencyError(msg, 28, obj.xmlfiles)
|
||||||
if param.type == 'nil':
|
if param.type in ['nil', 'space']:
|
||||||
if param.text is not None:
|
if param.text is not None:
|
||||||
msg = _(f'"{param.type}" parameter must not have a value')
|
msg = _(f'"{param.type}" parameter must not have a value')
|
||||||
raise DictConsistencyError(msg, 40, obj.xmlfiles)
|
raise DictConsistencyError(msg, 40, obj.xmlfiles)
|
||||||
|
@ -116,6 +116,9 @@ class ParamAnnotator:
|
||||||
raise DictConsistencyError(msg, 60, obj.xmlfiles)
|
raise DictConsistencyError(msg, 60, obj.xmlfiles)
|
||||||
elif param.type == 'nil':
|
elif param.type == 'nil':
|
||||||
param.text = None
|
param.text = None
|
||||||
|
elif param.type == 'space':
|
||||||
|
param.type = 'string'
|
||||||
|
param.text = ' '
|
||||||
elif param.type == 'string':
|
elif param.type == 'string':
|
||||||
param.text = ''
|
param.text = ''
|
||||||
if variable_type:
|
if variable_type:
|
||||||
|
|
|
@ -163,6 +163,8 @@ class Annotator(Walk): # pylint: disable=R0903
|
||||||
raise DictConsistencyError(msg, 5, choice.xmlfiles)
|
raise DictConsistencyError(msg, 5, choice.xmlfiles)
|
||||||
if choice.type == 'nil':
|
if choice.type == 'nil':
|
||||||
choice.name = None
|
choice.name = None
|
||||||
|
elif choice.type == 'space':
|
||||||
|
choice.name = ' '
|
||||||
elif choice.type == 'variable':
|
elif choice.type == 'variable':
|
||||||
choice.name = self.objectspace.paths.get_variable(choice.name)
|
choice.name = self.objectspace.paths.get_variable(choice.name)
|
||||||
if not choice.name.multi:
|
if not choice.name.multi:
|
||||||
|
|
|
@ -115,10 +115,10 @@
|
||||||
<!ATTLIST variable test CDATA #IMPLIED>
|
<!ATTLIST variable test CDATA #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT value (#PCDATA)>
|
<!ELEMENT value (#PCDATA)>
|
||||||
<!ATTLIST value type (string|number|nil|boolean) #IMPLIED>
|
<!ATTLIST value type (string|number|nil|space|boolean) #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT choice (#PCDATA | param)*>
|
<!ELEMENT choice (#PCDATA | param)*>
|
||||||
<!ATTLIST choice type (string|number|nil|boolean|function|variable) "string">
|
<!ATTLIST choice type (string|number|nil|space|boolean|function|variable) "string">
|
||||||
<!ATTLIST choice name CDATA #IMPLIED>
|
<!ATTLIST choice name CDATA #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT constraints ((fill*|check*|condition*)*)>
|
<!ELEMENT constraints ((fill*|check*|condition*)*)>
|
||||||
|
@ -137,7 +137,7 @@
|
||||||
<!ATTLIST condition apply_on_fallback (True|False) #IMPLIED>
|
<!ATTLIST condition apply_on_fallback (True|False) #IMPLIED>
|
||||||
|
|
||||||
<!ELEMENT param (#PCDATA)>
|
<!ELEMENT param (#PCDATA)>
|
||||||
<!ATTLIST param type (string|number|nil|boolean|variable|function|information|target_information|suffix|index) "string">
|
<!ATTLIST param type (string|number|nil|space|boolean|variable|function|information|target_information|suffix|index) "string">
|
||||||
<!ATTLIST param name CDATA #IMPLIED>
|
<!ATTLIST param name CDATA #IMPLIED>
|
||||||
<!ATTLIST param propertyerror (True|False) "True">
|
<!ATTLIST param propertyerror (True|False) "True">
|
||||||
<!ATTLIST param optional (True|False) "False">
|
<!ATTLIST param optional (True|False) "False">
|
||||||
|
|
|
@ -296,7 +296,7 @@ class Common:
|
||||||
):
|
):
|
||||||
"""Populate variable parameters
|
"""Populate variable parameters
|
||||||
"""
|
"""
|
||||||
if param.type in ['number', 'boolean', 'nil', 'string', 'port', 'choice']:
|
if param.type in ['number', 'boolean', 'nil', 'string', 'port', 'choice', 'space']:
|
||||||
value = param.text
|
value = param.text
|
||||||
if param.type == 'string' and value is not None:
|
if param.type == 'string' and value is not None:
|
||||||
value = self.convert_str(value)
|
value = self.convert_str(value)
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<rougail version="0.10">
|
||||||
|
<services/>
|
||||||
|
<variables>
|
||||||
|
<family name="proxy_authentifie" description="proxy authentifié">
|
||||||
|
<variable name="toto1" type="port" description="Port d'écoute du proxy" mode="expert">
|
||||||
|
</variable>
|
||||||
|
<variable name="toto2" type="port" description="Port d'écoute du proxy NTLM" mode="expert">
|
||||||
|
<value>3127</value>
|
||||||
|
</variable>
|
||||||
|
</family>
|
||||||
|
</variables>
|
||||||
|
<constraints>
|
||||||
|
<fill name="calc_multi_condition">
|
||||||
|
<param type="space"/>
|
||||||
|
<target>toto1</target>
|
||||||
|
</fill>
|
||||||
|
</constraints>
|
||||||
|
</rougail>
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"rougail.proxy_authentifie.toto1": {
|
||||||
|
"owner": "default",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"rougail.proxy_authentifie.toto2": {
|
||||||
|
"owner": "default",
|
||||||
|
"value": "3127"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"rougail.proxy_authentifie.toto1": null,
|
||||||
|
"rougail.proxy_authentifie.toto2": "3127"
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"rougail.proxy_authentifie.toto1": {
|
||||||
|
"owner": "default",
|
||||||
|
"value": null
|
||||||
|
},
|
||||||
|
"rougail.proxy_authentifie.toto2": {
|
||||||
|
"owner": "default",
|
||||||
|
"value": "3127"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
from importlib.machinery import SourceFileLoader as _SourceFileLoader
|
||||||
|
from importlib.util import spec_from_loader as _spec_from_loader, module_from_spec as _module_from_spec
|
||||||
|
class func:
|
||||||
|
pass
|
||||||
|
_loader = _SourceFileLoader('func', 'tests/dictionaries/../eosfunc/test.py')
|
||||||
|
_spec = _spec_from_loader(_loader.name, _loader)
|
||||||
|
_func = _module_from_spec(_spec)
|
||||||
|
_loader.exec_module(_func)
|
||||||
|
for function in dir(_func):
|
||||||
|
if function.startswith('_'):
|
||||||
|
continue
|
||||||
|
setattr(func, function, getattr(_func, function))
|
||||||
|
try:
|
||||||
|
from tiramisu3 import *
|
||||||
|
except:
|
||||||
|
from tiramisu import *
|
||||||
|
option_3 = PortOption(name="toto1", doc="Port d'écoute du proxy", default=Calculation(func.calc_multi_condition, Params((ParamValue(" ")))), allow_private=True, properties=frozenset({"expert"}))
|
||||||
|
option_4 = PortOption(name="toto2", doc="Port d'écoute du proxy NTLM", default="3127", allow_private=True, properties=frozenset({"expert", "mandatory"}))
|
||||||
|
option_2 = OptionDescription(name="proxy_authentifie", doc="proxy authentifié", children=[option_3, option_4], properties=frozenset({"expert"}))
|
||||||
|
option_1 = OptionDescription(name="rougail", doc="rougail", children=[option_2])
|
||||||
|
option_0 = OptionDescription(name="baseoption", doc="baseoption", children=[option_1])
|
|
@ -70,7 +70,7 @@ async def launch_flattener(test_dir):
|
||||||
if not isfile(makedict_file):
|
if not isfile(makedict_file):
|
||||||
raise Exception('dict is not empty')
|
raise Exception('dict is not empty')
|
||||||
with open(makedict_file, 'r') as fh:
|
with open(makedict_file, 'r') as fh:
|
||||||
assert load(fh) == loads(dumps(config_dict))
|
assert load(fh) == loads(dumps(config_dict)), f"error in file {makedict_file}"
|
||||||
#
|
#
|
||||||
await value_owner(makedict_before, config)
|
await value_owner(makedict_before, config)
|
||||||
# deploy
|
# deploy
|
||||||
|
@ -110,7 +110,8 @@ async def value_owner(makedict_value_owner, config):
|
||||||
dump(ret, fh, indent=4)
|
dump(ret, fh, indent=4)
|
||||||
fh.write('\n')
|
fh.write('\n')
|
||||||
with open(makedict_value_owner, 'r') as fh:
|
with open(makedict_value_owner, 'r') as fh:
|
||||||
assert load(fh) == loads(dumps(ret))
|
assert load(fh) == loads(dumps(ret)), f"error in file {makedict_value_owner}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@mark.asyncio
|
@mark.asyncio
|
||||||
|
|
Loading…
Reference in New Issue