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