From 760645424f0bc75ce85438226d8f628afc0fdb54 Mon Sep 17 00:00:00 2001 From: Joaquin Gonzalez Date: Sun, 21 Jan 2024 17:40:48 -0300 Subject: [PATCH] chore: use LibString from solmate --- lib/ERC721A | 1 - packages/contracts/src/LucidOrigins.sol | 7 ++- packages/contracts/src/layers/Body.sol | 19 ++++---- packages/contracts/src/layers/Face.sol | 65 ++++++++++++------------- packages/contracts/src/layers/Head.sol | 15 +++--- packages/contracts/src/utils/String.sol | 45 ----------------- 6 files changed, 51 insertions(+), 101 deletions(-) delete mode 160000 lib/ERC721A delete mode 100644 packages/contracts/src/utils/String.sol diff --git a/lib/ERC721A b/lib/ERC721A deleted file mode 160000 index 1843596..0000000 --- a/lib/ERC721A +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1843596cf863557fcd3bf0105222a7c29690af5c diff --git a/packages/contracts/src/LucidOrigins.sol b/packages/contracts/src/LucidOrigins.sol index 45633ca..5cb814d 100644 --- a/packages/contracts/src/LucidOrigins.sol +++ b/packages/contracts/src/LucidOrigins.sol @@ -10,20 +10,19 @@ import { Face } from "./layers/Face.sol"; import { Body } from "./layers/Body.sol"; import { Head } from "./layers/Head.sol"; import { Blush } from "./layers/Blush.sol"; -import { String } from "./utils/String.sol"; +import { LibString } from "solmate/utils/LibString.sol"; import { Constants } from "./utils/constants.sol"; contract LucidOrigins is Owned, ERC721A, Background, Face, Body, Head, Blush { using Encoder for string; - using String for string; - using String for uint256; + using LibString for uint256; constructor() Owned(msg.sender) ERC721A("LucidOrigins", "LucidOrigins") { } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { uint16[] memory dna = getDna(uint256(keccak256(abi.encodePacked(tokenId)))); - string memory name = string(abi.encodePacked("LucidOrigins #", tokenId.uint2str())); + string memory name = string(abi.encodePacked("LucidOrigins #", tokenId.toString())); string memory header = ''; uint256 r = normalizeToRange(dna[Constants.R_INDEX], 1, 255); diff --git a/packages/contracts/src/layers/Body.sol b/packages/contracts/src/layers/Body.sol index ba896fd..cc37f26 100644 --- a/packages/contracts/src/layers/Body.sol +++ b/packages/contracts/src/layers/Body.sol @@ -2,11 +2,10 @@ pragma solidity 0.8.21; // import { console2 } from "forge-std/console2.sol"; -import { String } from "../utils/String.sol"; +import { LibString } from "solmate/utils/LibString.sol"; contract Body { - using String for uint256; - using String for int256; + using LibString for uint256; function body( uint256 r, @@ -49,19 +48,19 @@ contract Body { '', '', '', "", "" @@ -69,7 +68,7 @@ contract Body { ); string memory fillColor = isPlain - ? string(abi.encodePacked("rgb(", r.uint2str(), ",", g.uint2str(), ",", b.uint2str(), ")")) + ? string(abi.encodePacked("rgb(", r.toString(), ",", g.toString(), ",", b.toString(), ")")) : "url(#linear-grad)"; return (colorDefs, fillColor); diff --git a/packages/contracts/src/layers/Face.sol b/packages/contracts/src/layers/Face.sol index 619d778..095f007 100644 --- a/packages/contracts/src/layers/Face.sol +++ b/packages/contracts/src/layers/Face.sol @@ -2,11 +2,10 @@ pragma solidity 0.8.21; // import { console2 } from "forge-std/console2.sol"; -import { String } from "../utils/String.sol"; +import { LibString } from "solmate/utils/LibString.sol"; contract Face { - using String for uint256; - using String for int256; + using LibString for uint256; function face( uint256 eyeRadius, @@ -44,26 +43,26 @@ contract Face { abi.encodePacked( '', '', '', "" ) @@ -87,38 +86,38 @@ contract Face { abi.encodePacked( '', '', '', "" ) @@ -150,23 +149,23 @@ contract Face { abi.encodePacked( '', '', "" ) diff --git a/packages/contracts/src/layers/Head.sol b/packages/contracts/src/layers/Head.sol index 4d121b4..0cc1145 100644 --- a/packages/contracts/src/layers/Head.sol +++ b/packages/contracts/src/layers/Head.sol @@ -2,7 +2,7 @@ pragma solidity 0.8.21; // import { console2 } from "forge-std/console2.sol"; -import { String } from "../utils/String.sol"; +import { LibString } from "solmate/utils/LibString.sol"; import { Trigonometry } from "solidity-trigonometry/Trigonometry.sol"; contract Head { @@ -11,8 +11,7 @@ contract Head { int256 y; } - using String for int256; - using String for uint256; + using LibString for int256; using Trigonometry for uint256; function head( @@ -69,7 +68,7 @@ contract Head { string memory svgPath; Point memory mid = Point({ x: (points[0].x + points[1].x) / 2, y: (points[0].y + points[1].y) / 2 }); - svgPath = string(abi.encodePacked("M", mid.x.int2str(), ",", mid.y.int2str())); + svgPath = string(abi.encodePacked("M", mid.x.toString(), ",", mid.y.toString())); for (uint256 i = 0; i < points.length; i++) { Point memory p1 = points[(i + 1) % points.length]; @@ -80,13 +79,13 @@ contract Head { abi.encodePacked( svgPath, "Q", - p1.x.int2str(), + p1.x.toString(), ",", - p1.y.int2str(), + p1.y.toString(), ",", - midPoint.x.int2str(), + midPoint.x.toString(), ",", - midPoint.y.int2str() + midPoint.y.toString() ) ); } diff --git a/packages/contracts/src/utils/String.sol b/packages/contracts/src/utils/String.sol deleted file mode 100644 index 0dd5413..0000000 --- a/packages/contracts/src/utils/String.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: GNU GPLv3 -pragma solidity 0.8.21; - -library String { - function uint2str(uint256 _i) internal pure returns (string memory) { - if (_i == 0) { - return "0"; - } - uint256 j = _i; - uint256 len; - while (j != 0) { - len++; - j /= 10; - } - bytes memory bstr = new bytes(len); - uint256 k = len; - while (_i != 0) { - k = k - 1; - uint8 temp = (48 + uint8(_i - _i / 10 * 10)); - bytes1 b1 = bytes1(temp); - bstr[k] = b1; - _i /= 10; - } - return string(bstr); - } - - function int2str(int256 _i) internal pure returns (string memory) { - if (_i >= 0) { - return uint2str(uint256(_i)); - } else { - return string(abi.encodePacked("-", uint2str(uint256(-_i)))); - } - } - - function str2uint(string memory _str) internal pure returns (uint256 res) { - for (uint256 i = 0; i < bytes(_str).length; i++) { - if ((uint8(bytes(_str)[i]) - 48) < 0 || (uint8(bytes(_str)[i]) - 48) > 9) { - return 0; - } - res += (uint8(bytes(_str)[i]) - 48) * 10 ** (bytes(_str).length - i - 1); - } - - return res; - } -}