From 319fbc31f4c160d79a146884b1b21805863a6552 Mon Sep 17 00:00:00 2001 From: Dave Cunningham Date: Wed, 14 Jun 2023 16:14:41 +0100 Subject: [PATCH] Revert "Add ability to refer to subfields of objects via dot notation in string formatting (#1011)" This reverts commit 1cefde7268b9b6cf90ec6c4b3d34e092a7b05104. --- stdlib/std.jsonnet | 21 ++++-------------- ...ror.format.invalid_object_subfield.jsonnet | 2 -- ...mat.invalid_object_subfield.jsonnet.golden | 22 ------------------- test_suite/format.jsonnet | 1 - 4 files changed, 4 insertions(+), 42 deletions(-) delete mode 100644 test_suite/error.format.invalid_object_subfield.jsonnet delete mode 100644 test_suite/error.format.invalid_object_subfield.jsonnet.golden diff --git a/stdlib/std.jsonnet b/stdlib/std.jsonnet index 7cafb182d..c861a4aec 100644 --- a/stdlib/std.jsonnet +++ b/stdlib/std.jsonnet @@ -770,24 +770,11 @@ limitations under the License. error 'Cannot use * precision with object.' else code.prec; - local get_nested_val(obj, f, start=0, end=0) = - if !std.isObject(obj) then - error 'Subfield ' + f[:start] + ' didn\'t yield an object.' - else if end >= std.length(f) then - if std.objectHasAll(obj, f[start:]) then - obj[f[start:]] - else - error 'No such field: ' + f - else if f[end] == "." then - local key = f[start:end]; - if std.objectHasAll(obj, key) then - get_nested_val(obj[key], f, end+1, end+1) tailstrict - else - error 'No such partial field: ' + f[:end] + local val = + if std.objectHasAll(obj, f) then + obj[f] else - get_nested_val(obj, f, start, end+1) tailstrict - ; - local val = get_nested_val(obj, f); + error 'No such field: ' + f; local s = if code.ctype == '%' then '%' diff --git a/test_suite/error.format.invalid_object_subfield.jsonnet b/test_suite/error.format.invalid_object_subfield.jsonnet deleted file mode 100644 index 0c05d734b..000000000 --- a/test_suite/error.format.invalid_object_subfield.jsonnet +++ /dev/null @@ -1,2 +0,0 @@ -"%(a.b.c)s" % {a: {c: "hello"}} - diff --git a/test_suite/error.format.invalid_object_subfield.jsonnet.golden b/test_suite/error.format.invalid_object_subfield.jsonnet.golden deleted file mode 100644 index f0aee766d..000000000 --- a/test_suite/error.format.invalid_object_subfield.jsonnet.golden +++ /dev/null @@ -1,22 +0,0 @@ -RUNTIME ERROR: No such partial field: a.b - std.jsonnet: function - std.jsonnet: function - std.jsonnet: thunk - std.jsonnet: thunk - std.jsonnet: thunk - std.jsonnet: - std.jsonnet: thunk - std.jsonnet: function - std.jsonnet: function - std.jsonnet: function - ... - std.jsonnet: function - std.jsonnet: function - std.jsonnet: function - std.jsonnet: thunk - std.jsonnet: thunk - std.jsonnet: function - std.jsonnet: function - std.jsonnet: function - std.jsonnet: function - error.format.invalid_object_subfield.jsonnet:1:1-32 diff --git a/test_suite/format.jsonnet b/test_suite/format.jsonnet index 12af1bf6e..a7b8f0620 100644 --- a/test_suite/format.jsonnet +++ b/test_suite/format.jsonnet @@ -312,6 +312,5 @@ local text = ||| std.assertEqual(std.length(text), 1244) && -std.assertEqual(std.format('%(a.b.c.d)s %(b.c)s', {a:{b:{c:{d:'hello'}}}, b:{c:'goodbye'}}), 'hello goodbye') && true