add space parameter
This commit is contained in:
parent
d1d6a80fe7
commit
5c526cf2b4
13 changed files with 86 additions and 8 deletions
|
@ -42,3 +42,11 @@ Le paramètre peut être une valeur null (None en python) :
|
|||
```
|
||||
<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():
|
||||
if 'dynamic' not in vars(family):
|
||||
continue
|
||||
family.suffixes = self.objectspace.paths.get_variable(family.dynamic)
|
||||
family.suffixes = self.objectspace.paths.get_variable(family.dynamic, family.xmlfiles)
|
||||
del family.dynamic
|
||||
if not family.suffixes.multi:
|
||||
msg = _(f'dynamic family "{family.name}" must be linked '
|
||||
|
|
|
@ -59,7 +59,7 @@ class ParamAnnotator:
|
|||
if param.type in ['suffix', 'index']:
|
||||
msg = _(f'"{param.type}" parameter must not have a value')
|
||||
raise DictConsistencyError(msg, 28, obj.xmlfiles)
|
||||
if param.type == 'nil':
|
||||
if param.type in ['nil', 'space']:
|
||||
if param.text is not None:
|
||||
msg = _(f'"{param.type}" parameter must not have a value')
|
||||
raise DictConsistencyError(msg, 40, obj.xmlfiles)
|
||||
|
@ -116,6 +116,9 @@ class ParamAnnotator:
|
|||
raise DictConsistencyError(msg, 60, obj.xmlfiles)
|
||||
elif param.type == 'nil':
|
||||
param.text = None
|
||||
elif param.type == 'space':
|
||||
param.type = 'string'
|
||||
param.text = ' '
|
||||
elif param.type == 'string':
|
||||
param.text = ''
|
||||
if variable_type:
|
||||
|
|
|
@ -163,6 +163,8 @@ class Annotator(Walk): # pylint: disable=R0903
|
|||
raise DictConsistencyError(msg, 5, choice.xmlfiles)
|
||||
if choice.type == 'nil':
|
||||
choice.name = None
|
||||
elif choice.type == 'space':
|
||||
choice.name = ' '
|
||||
elif choice.type == 'variable':
|
||||
choice.name = self.objectspace.paths.get_variable(choice.name)
|
||||
if not choice.name.multi:
|
||||
|
|
|
@ -115,10 +115,10 @@
|
|||
<!ATTLIST variable test CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT value (#PCDATA)>
|
||||
<!ATTLIST value type (string|number|nil|boolean) #IMPLIED>
|
||||
<!ATTLIST value type (string|number|nil|space|boolean) #IMPLIED>
|
||||
|
||||
<!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>
|
||||
|
||||
<!ELEMENT constraints ((fill*|check*|condition*)*)>
|
||||
|
@ -137,7 +137,7 @@
|
|||
<!ATTLIST condition apply_on_fallback (True|False) #IMPLIED>
|
||||
|
||||
<!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 propertyerror (True|False) "True">
|
||||
<!ATTLIST param optional (True|False) "False">
|
||||
|
|
|
@ -296,7 +296,7 @@ class Common:
|
|||
):
|
||||
"""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
|
||||
if param.type == 'string' and value is not None:
|
||||
value = self.convert_str(value)
|
||||
|
|
19
tests/dictionaries/40space_param/00_base.xml
Normal file
19
tests/dictionaries/40space_param/00_base.xml
Normal file
|
@ -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
tests/dictionaries/40space_param/__init__.py
Normal file
0
tests/dictionaries/40space_param/__init__.py
Normal file
10
tests/dictionaries/40space_param/makedict/after.json
Normal file
10
tests/dictionaries/40space_param/makedict/after.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"rougail.proxy_authentifie.toto1": {
|
||||
"owner": "default",
|
||||
"value": null
|
||||
},
|
||||
"rougail.proxy_authentifie.toto2": {
|
||||
"owner": "default",
|
||||
"value": "3127"
|
||||
}
|
||||
}
|
4
tests/dictionaries/40space_param/makedict/base.json
Normal file
4
tests/dictionaries/40space_param/makedict/base.json
Normal file
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"rougail.proxy_authentifie.toto1": null,
|
||||
"rougail.proxy_authentifie.toto2": "3127"
|
||||
}
|
10
tests/dictionaries/40space_param/makedict/before.json
Normal file
10
tests/dictionaries/40space_param/makedict/before.json
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"rougail.proxy_authentifie.toto1": {
|
||||
"owner": "default",
|
||||
"value": null
|
||||
},
|
||||
"rougail.proxy_authentifie.toto2": {
|
||||
"owner": "default",
|
||||
"value": "3127"
|
||||
}
|
||||
}
|
21
tests/dictionaries/40space_param/tiramisu/base.py
Normal file
21
tests/dictionaries/40space_param/tiramisu/base.py
Normal file
|
@ -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):
|
||||
raise Exception('dict is not empty')
|
||||
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)
|
||||
# deploy
|
||||
|
@ -110,7 +110,8 @@ async def value_owner(makedict_value_owner, config):
|
|||
dump(ret, fh, indent=4)
|
||||
fh.write('\n')
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue