Spaces:
Build error
Build error
| // SPDX-License-Identifier: MIT OR Apache-2.0 | |
| pragma solidity >=0.8.13 <0.9.0; | |
| import {VmSafe} from "./Vm.sol"; | |
| // Helpers for parsing and writing JSON files | |
| // To parse: | |
| // ``` | |
| // using stdJson for string; | |
| // string memory json = vm.readFile("<some_path>"); | |
| // json.readUint("<json_path>"); | |
| // ``` | |
| // To write: | |
| // ``` | |
| // using stdJson for string; | |
| // string memory json = "json"; | |
| // json.serialize("a", uint256(123)); | |
| // string memory semiFinal = json.serialize("b", string("test")); | |
| // string memory finalJson = json.serialize("c", semiFinal); | |
| // finalJson.write("<some_path>"); | |
| // ``` | |
| library stdJson { | |
| VmSafe private constant vm = VmSafe(address(uint160(uint256(keccak256("hevm cheat code"))))); | |
| function keyExists(string memory json, string memory key) internal view returns (bool) { | |
| return vm.keyExistsJson(json, key); | |
| } | |
| function parseRaw(string memory json, string memory key) internal pure returns (bytes memory) { | |
| return vm.parseJson(json, key); | |
| } | |
| function readUint(string memory json, string memory key) internal pure returns (uint256) { | |
| return vm.parseJsonUint(json, key); | |
| } | |
| function readUintArray(string memory json, string memory key) internal pure returns (uint256[] memory) { | |
| return vm.parseJsonUintArray(json, key); | |
| } | |
| function readInt(string memory json, string memory key) internal pure returns (int256) { | |
| return vm.parseJsonInt(json, key); | |
| } | |
| function readIntArray(string memory json, string memory key) internal pure returns (int256[] memory) { | |
| return vm.parseJsonIntArray(json, key); | |
| } | |
| function readBytes32(string memory json, string memory key) internal pure returns (bytes32) { | |
| return vm.parseJsonBytes32(json, key); | |
| } | |
| function readBytes32Array(string memory json, string memory key) internal pure returns (bytes32[] memory) { | |
| return vm.parseJsonBytes32Array(json, key); | |
| } | |
| function readString(string memory json, string memory key) internal pure returns (string memory) { | |
| return vm.parseJsonString(json, key); | |
| } | |
| function readStringArray(string memory json, string memory key) internal pure returns (string[] memory) { | |
| return vm.parseJsonStringArray(json, key); | |
| } | |
| function readAddress(string memory json, string memory key) internal pure returns (address) { | |
| return vm.parseJsonAddress(json, key); | |
| } | |
| function readAddressArray(string memory json, string memory key) internal pure returns (address[] memory) { | |
| return vm.parseJsonAddressArray(json, key); | |
| } | |
| function readBool(string memory json, string memory key) internal pure returns (bool) { | |
| return vm.parseJsonBool(json, key); | |
| } | |
| function readBoolArray(string memory json, string memory key) internal pure returns (bool[] memory) { | |
| return vm.parseJsonBoolArray(json, key); | |
| } | |
| function readBytes(string memory json, string memory key) internal pure returns (bytes memory) { | |
| return vm.parseJsonBytes(json, key); | |
| } | |
| function readBytesArray(string memory json, string memory key) internal pure returns (bytes[] memory) { | |
| return vm.parseJsonBytesArray(json, key); | |
| } | |
| function readUintOr(string memory json, string memory key, uint256 defaultValue) internal view returns (uint256) { | |
| return keyExists(json, key) ? readUint(json, key) : defaultValue; | |
| } | |
| function readUintArrayOr(string memory json, string memory key, uint256[] memory defaultValue) | |
| internal | |
| view | |
| returns (uint256[] memory) | |
| { | |
| return keyExists(json, key) ? readUintArray(json, key) : defaultValue; | |
| } | |
| function readIntOr(string memory json, string memory key, int256 defaultValue) internal view returns (int256) { | |
| return keyExists(json, key) ? readInt(json, key) : defaultValue; | |
| } | |
| function readIntArrayOr(string memory json, string memory key, int256[] memory defaultValue) | |
| internal | |
| view | |
| returns (int256[] memory) | |
| { | |
| return keyExists(json, key) ? readIntArray(json, key) : defaultValue; | |
| } | |
| function readBytes32Or(string memory json, string memory key, bytes32 defaultValue) | |
| internal | |
| view | |
| returns (bytes32) | |
| { | |
| return keyExists(json, key) ? readBytes32(json, key) : defaultValue; | |
| } | |
| function readBytes32ArrayOr(string memory json, string memory key, bytes32[] memory defaultValue) | |
| internal | |
| view | |
| returns (bytes32[] memory) | |
| { | |
| return keyExists(json, key) ? readBytes32Array(json, key) : defaultValue; | |
| } | |
| function readStringOr(string memory json, string memory key, string memory defaultValue) | |
| internal | |
| view | |
| returns (string memory) | |
| { | |
| return keyExists(json, key) ? readString(json, key) : defaultValue; | |
| } | |
| function readStringArrayOr(string memory json, string memory key, string[] memory defaultValue) | |
| internal | |
| view | |
| returns (string[] memory) | |
| { | |
| return keyExists(json, key) ? readStringArray(json, key) : defaultValue; | |
| } | |
| function readAddressOr(string memory json, string memory key, address defaultValue) | |
| internal | |
| view | |
| returns (address) | |
| { | |
| return keyExists(json, key) ? readAddress(json, key) : defaultValue; | |
| } | |
| function readAddressArrayOr(string memory json, string memory key, address[] memory defaultValue) | |
| internal | |
| view | |
| returns (address[] memory) | |
| { | |
| return keyExists(json, key) ? readAddressArray(json, key) : defaultValue; | |
| } | |
| function readBoolOr(string memory json, string memory key, bool defaultValue) internal view returns (bool) { | |
| return keyExists(json, key) ? readBool(json, key) : defaultValue; | |
| } | |
| function readBoolArrayOr(string memory json, string memory key, bool[] memory defaultValue) | |
| internal | |
| view | |
| returns (bool[] memory) | |
| { | |
| return keyExists(json, key) ? readBoolArray(json, key) : defaultValue; | |
| } | |
| function readBytesOr(string memory json, string memory key, bytes memory defaultValue) | |
| internal | |
| view | |
| returns (bytes memory) | |
| { | |
| return keyExists(json, key) ? readBytes(json, key) : defaultValue; | |
| } | |
| function readBytesArrayOr(string memory json, string memory key, bytes[] memory defaultValue) | |
| internal | |
| view | |
| returns (bytes[] memory) | |
| { | |
| return keyExists(json, key) ? readBytesArray(json, key) : defaultValue; | |
| } | |
| function serialize(string memory jsonKey, string memory rootObject) internal returns (string memory) { | |
| return vm.serializeJson(jsonKey, rootObject); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bool value) internal returns (string memory) { | |
| return vm.serializeBool(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bool[] memory value) internal returns (string memory) { | |
| return vm.serializeBool(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, uint256 value) internal returns (string memory) { | |
| return vm.serializeUint(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, uint256[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeUint(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, int256 value) internal returns (string memory) { | |
| return vm.serializeInt(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, int256[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeInt(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, address value) internal returns (string memory) { | |
| return vm.serializeAddress(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, address[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeAddress(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bytes32 value) internal returns (string memory) { | |
| return vm.serializeBytes32(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bytes32[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeBytes32(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bytes memory value) internal returns (string memory) { | |
| return vm.serializeBytes(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, bytes[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeBytes(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, string memory value) internal returns (string memory) { | |
| return vm.serializeString(jsonKey, key, value); | |
| } | |
| function serialize(string memory jsonKey, string memory key, string[] memory value) | |
| internal | |
| returns (string memory) | |
| { | |
| return vm.serializeString(jsonKey, key, value); | |
| } | |
| function write(string memory jsonKey, string memory path) internal { | |
| vm.writeJson(jsonKey, path); | |
| } | |
| function write(string memory jsonKey, string memory path, string memory valueKey) internal { | |
| vm.writeJson(jsonKey, path, valueKey); | |
| } | |
| } | |