'How to Parse a String in Java Script language which contains "color code change" numericals into the string such as 32m+ or 31m- [closed]
I'm trying to write a Firebase cloud function in java script, which sends the email notification on any new change in the Firebase remote config. On any remote config change, I do get the string in below format,
{ parameters: { [32m+ newer_value: { [39m [32m+ defaultValue: { [39m [32m+ value: "gaa_new" [39m [32m+ } [39m [32m+ } [39m } version: { [31m- versionNumber: "498" [39m [32m+ versionNumber: "499" [39m [31m- updateTime: "2021-03-09T17:57:08.755697Z" [39m [32m+ updateTime: "2021-03-09T18:01:05.485532Z" [39m } }
So I wanted to know how to get meaningful change information from the above string. (Email part is sorted to me)
Here is the string in different operations :
- When added a new key
{ parameters: { [32m+ newer_value: { [39m [32m+ defaultValue: { [39m [32m+ value: "gaa_new" [39m [32m+ } [39m [32m+ } [39m } version: { [31m- versionNumber: "498" [39m [32m+ versionNumber: "499" [39m [31m- updateTime: "2021-03-09T17:57:08.755697Z" [39m [32m+ updateTime: "2021-03-09T18:01:05.485532Z" [39m } }
Expected Output Message :
A new key is added,
key name : newer_value
value : gaa_new
{ parameters: { [32m+ add_config: { [39m [32m+ defaultValue: { [39m [32m+ value: "test" [39m [32m+ } [39m [32m+ } [39m } version: { [31m- versionNumber: "500" [39m [32m+ versionNumber: "501" [39m [31m- updateTime: "2021-03-09T18:14:14.954691Z" [39m [32m+ updateTime: "2021-03-09T18:19:15.276567Z" [39m } }
Expected Output Message :
A new key is added,
key name : add_config
value : test
- When remove multiple keys :
{ parameters: { [31m- dummy_value: { [39m [31m- defaultValue: { [39m [31m- value: "10" [39m [31m- } [39m [31m- } [39m [31m- newer_value: { [39m [31m- defaultValue: { [39m [31m- value: "gaa_new" [39m [31m- } [39m [31m- } [39m } version: { [31m- versionNumber: "499" [39m [32m+ versionNumber: "500" [39m [31m- updateTime: "2021-03-09T18:01:05.485532Z" [39m [32m+ updateTime: "2021-03-09T18:14:14.954691Z" [39m } }
Expected Output Message :
few existing keys are removed,
a. key name : dummy_value
value : 10
b. key name : newer_value
value : gaa_new
- When same key value is updated :
{ parameters: { dummy_value: { defaultValue: { [31m- value: "100000" [39m [32m+ value: "10" [39m } } } version: { [31m- versionNumber: "497" [39m [32m+ versionNumber: "498" [39m [31m- updateTime: "2021-03-09T17:45:47.053923Z" [39m [32m+ updateTime: "2021-03-09T17:57:08.755697Z" [39m } }
Expected Output Message :
key name : dummy_value
old value : 100000
new value : 10
31m+ -> addition of something
31m- -> deletion of something
Please help me how to proceed with that, if there is any library to achieve that then also please let me know and if not then how to traverse a string and evaluate the same.
UPDATE 1 : Here I'm mentioning my theoretical approach : When encountered "parameters" string, will look for { or {31m+ {31m- based on that would identifiy the operation as Updated, Added or deleted respectively , and the key would be identified as next string before : and after { or {32m+ or {31m- and so on.
UPDATE 2 : I used json diff without color codes as suggested by "Nina" in the comments but somehow that is not giving correct result when I am trying to send that into my email utility.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
