Fixed double shift implementation. Added implicit renaming
This commit is contained in:
@@ -39,7 +39,9 @@ function bindAIBuddy(elementId) {
|
||||
event.preventDefault();
|
||||
makeAIRequest();
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener('keyup', (event) => {
|
||||
if (event.key === 'Shift') {
|
||||
const currentTime = new Date().getTime();
|
||||
if (currentTime - lastShiftPress <= doublePressDelay) {
|
||||
|
||||
@@ -45,7 +45,7 @@ class DefaultDataPresenter(DataPresenter):
|
||||
mappings[key] = key
|
||||
elif key.endswith(".*"):
|
||||
# all fields in a sub-object
|
||||
if value != "*":
|
||||
if value != "*" and value != "":
|
||||
raise ValueError("Only '*' is accepted when renaming wildcard.")
|
||||
obj_path = key[:-2]
|
||||
sub_obj = data.get(obj_path)
|
||||
@@ -86,6 +86,8 @@ class DefaultDataPresenter(DataPresenter):
|
||||
for mapping in self._split_definitions:
|
||||
if "=" in mapping:
|
||||
key, value = [s.strip() for s in mapping.split('=', 1)]
|
||||
if not value:
|
||||
value = key.split(".")[-1]
|
||||
mappings[key] = value
|
||||
else:
|
||||
mappings[mapping] = mapping
|
||||
|
||||
@@ -14,6 +14,18 @@ def test_i_can_present_static_mappings():
|
||||
assert actual == Expando({"renamed_1": "value1", "field2": "value2"}) # field3 is removed
|
||||
|
||||
|
||||
def test_i_can_present_implicit_renaming():
|
||||
mappings_def = "root.field1="
|
||||
presenter = DefaultDataPresenter("comp_id", mappings_def)
|
||||
as_dict = {"root": {"field1": "value1"}}
|
||||
data = Expando(as_dict)
|
||||
|
||||
actual = presenter.present(data)
|
||||
|
||||
assert isinstance(actual, Expando)
|
||||
assert actual.as_dict() == {"field1": "value1"}
|
||||
|
||||
|
||||
def test_the_latter_mappings_take_precedence():
|
||||
mappings_def = "field1 = renamed_1 , field1 "
|
||||
presenter = DefaultDataPresenter("comp_id", mappings_def)
|
||||
@@ -105,6 +117,23 @@ def test_i_can_present_dynamic_mappings_with_sub_fields_and_renames():
|
||||
"field4": "value4"}
|
||||
|
||||
|
||||
def test_i_can_present_dynamic_mappings_with_sub_fields_and_implicit_renames():
|
||||
mappings_def = "root.sub_field.*="
|
||||
presenter = DefaultDataPresenter("comp_id", mappings_def)
|
||||
as_dict = {"root": {"field1": "value1",
|
||||
"field2": "value2",
|
||||
"sub_field": {"field3": "value3",
|
||||
"field4": "value4"
|
||||
}}}
|
||||
data = Expando(as_dict)
|
||||
|
||||
actual = presenter.present(data)
|
||||
|
||||
assert isinstance(actual, Expando)
|
||||
assert actual.as_dict() == {"field3": "value3",
|
||||
"field4": "value4"}
|
||||
|
||||
|
||||
def test_i_can_present_dynamic_mappings_and_rename_them():
|
||||
mappings_def = "*=*" # does not really have effects as '*' only goes down one level
|
||||
presenter = DefaultDataPresenter("comp_id", mappings_def)
|
||||
|
||||
Reference in New Issue
Block a user