Skip to content

Commit 1ca0bb3

Browse files
committed
gis-8825 fixes
1 parent 73914f5 commit 1ca0bb3

File tree

5 files changed

+28
-12
lines changed

5 files changed

+28
-12
lines changed

uncoder-core/app/translator/platforms/sentinel_one/custom_types/__init__.py

Whitespace-only changes.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from app.translator.core.custom_types.values import ValueType
2+
3+
4+
class SentinelOneValueType(ValueType):
5+
double_escape_regex_value = "d_e_re_value"

uncoder-core/app/translator/platforms/sentinel_one/escape_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
from app.translator.core.custom_types.values import ValueType
44
from app.translator.core.escape_manager import EscapeManager
55
from app.translator.core.models.escape_details import EscapeDetails
6+
from app.translator.platforms.sentinel_one.custom_types.values import SentinelOneValueType
67

78

89
class SentinelOnePowerQueryEscapeManager(EscapeManager):
910
escape_map: ClassVar[dict[str, list[EscapeDetails]]] = {
1011
ValueType.value: [EscapeDetails(pattern=r"\\", escape_symbols=r"\\\\")],
11-
ValueType.regex_value: [EscapeDetails(pattern=r"\\", escape_symbols=r"\\\\")],
12+
ValueType.regex_value: [EscapeDetails(pattern=r"([$^*+()\[\]{}|.?\-\\])", escape_symbols=r"\\\1")],
13+
SentinelOneValueType.double_escape_regex_value: [EscapeDetails(pattern=r"\\", escape_symbols=r"\\\\")],
1214
}
1315

1416

uncoder-core/app/translator/platforms/sentinel_one/renders/sentinel_one_power_query.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,19 @@ def equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
3333
return f"{field} = {value}"
3434

3535
def less_modifier(self, field: str, value: Union[int, str]) -> str:
36-
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True, wrap_int=True)
36+
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True)
3737
return f"{field} < {value}"
3838

3939
def less_or_equal_modifier(self, field: str, value: Union[int, str]) -> str:
40-
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True, wrap_int=True)
40+
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True)
4141
return f"{field} <= {value}"
4242

4343
def greater_modifier(self, field: str, value: Union[int, str]) -> str:
44-
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True, wrap_int=True)
44+
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True)
4545
return f"{field} > {value}"
4646

4747
def greater_or_equal_modifier(self, field: str, value: Union[int, str]) -> str:
48-
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True, wrap_int=True)
48+
value = self._pre_process_value(field, value, value_type=ValueType.value, wrap_str=True)
4949
return f"{field} >= {value}"
5050

5151
def not_equal_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
@@ -77,15 +77,11 @@ def startswith_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
7777
def regex_modifier(self, field: str, value: DEFAULT_VALUE_TYPE) -> str:
7878
if isinstance(value, list):
7979
values = self.list_token.join(
80-
self.str_value_manager.escape_manager.escape(
81-
self._pre_process_value(field, v, value_type=ValueType.regex_value, wrap_str=True, wrap_int=True),
82-
ValueType.regex_value,
83-
)
80+
self._pre_process_value(field, v, value_type=ValueType.regex_value, wrap_str=True, wrap_int=True)
8481
for v in value
8582
)
8683
return f"{field} matches ({values})"
8784
value = self._pre_process_value(field, value, value_type=ValueType.regex_value, wrap_str=True, wrap_int=True)
88-
value = self.str_value_manager.escape_manager.escape(value, ValueType.regex_value)
8985
return f"{field} matches {value}"
9086

9187
def is_none(self, field: str, value: DEFAULT_VALUE_TYPE) -> str: # noqa: ARG002

uncoder-core/app/translator/platforms/sentinel_one/str_value_manager.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
limitations under the License.
1717
-----------------------------------------------------------------
1818
"""
19-
20-
from app.translator.core.str_value_manager import StrValueManager
19+
from app.translator.core.custom_types.values import ValueType
20+
from app.translator.core.str_value_manager import BaseSpecSymbol, StrValue, StrValueManager
21+
from app.translator.platforms.sentinel_one.custom_types.values import SentinelOneValueType
2122
from app.translator.platforms.sentinel_one.escape_manager import (
2223
SentinelOnePowerQueryEscapeManager,
2324
sentinel_one_power_query_escape_manager,
@@ -27,5 +28,17 @@
2728
class SentinelOnePowerQueryStrValueManager(StrValueManager):
2829
escape_manager: SentinelOnePowerQueryEscapeManager = sentinel_one_power_query_escape_manager
2930

31+
def from_container_to_str(self, container: StrValue, value_type: str = ValueType.value) -> str:
32+
result = ""
33+
for el in container.split_value:
34+
if isinstance(el, str):
35+
result += self.escape_manager.escape(el, value_type)
36+
elif isinstance(el, BaseSpecSymbol) and (pattern := self.container_spec_symbols_map.get(type(el))):
37+
if value_type == ValueType.regex_value:
38+
pattern = self.escape_manager.escape(pattern, SentinelOneValueType.double_escape_regex_value)
39+
result += pattern
40+
41+
return result
42+
3043

3144
sentinel_one_power_query_str_value_manager = SentinelOnePowerQueryStrValueManager()

0 commit comments

Comments
 (0)