From 57d2efaab4a22d663510d9cad2f77106f8c3eee4 Mon Sep 17 00:00:00 2001 From: Ian Hinder Date: Fri, 13 Sep 2013 13:52:15 +0200 Subject: [PATCH] Add ApplyToObjectField to Object.m --- Tests/Object.mt | 8 ++++++++ Tools/CodeGen/Object.m | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/Tests/Object.mt b/Tests/Object.mt index 3345fb2b..2ac151cd 100644 --- a/Tests/Object.mt +++ b/Tests/Object.mt @@ -69,3 +69,11 @@ Test[ , TestID->"JoinObjectField-Exists" ] + +Test[ + ApplyToObjectField[NewObject[Obj, {"Key1" -> 1, "Key2" -> 2}], "Key1", g] + , + Obj["Key1" -> g[1], "Key2" -> 2] + , + TestID->"ApplyToObjectField" +] diff --git a/Tools/CodeGen/Object.m b/Tools/CodeGen/Object.m index 957af54d..63ab2bf6 100644 --- a/Tools/CodeGen/Object.m +++ b/Tools/CodeGen/Object.m @@ -25,6 +25,7 @@ GetObjectField; AppendObjectField; JoinObjectField; +ApplyToObjectField; Begin["`Private`"]; @@ -62,6 +63,11 @@ JoinObjectField[obj_, field_String, values_List] := SetObjectField[obj, field, Join[GetObjectField[obj, field], values]]]; +DefFn[ + ApplyToObjectField[obj_, field_String, f_] := + SetObjectField[obj, field, f[GetObjectField[obj, field]]]]; + + End[]; EndPackage[];