X-Git-Url: https://git.ladys.computer/Pisces/blobdiff_plain/54f1b076f8eb62b58bd28762e14ae5d848e5ea2a..e1cb83c479df2a3e4a5e918867a135ff9dde8121:/symbol.js diff --git a/symbol.js b/symbol.js index 343e409..d303aec 100644 --- a/symbol.js +++ b/symbol.js @@ -1,22 +1,56 @@ -// ♓🌟 Piscēs ∷ symbol.js -// ==================================================================== -// -// Copyright © 2023 Lady [@ Lady’s Computer]. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at . +// SPDX-FileCopyrightText: 2023, 2025 Lady +// SPDX-License-Identifier: MPL-2.0 +/** + * ⁌ ♓🧩 Piscēs ∷ symbol.js + * + * Copyright © 2023, 2025 Lady [@ Ladys Computer]. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at . + */ import { createCallableFunction } from "./function.js"; -import { getOwnPropertyDescriptor } from "./object.js"; + +const PISCĒS = "♓🧩 Piscēs"; /** * Returns the description for the provided symbol. * - * ※ This is effectively an alias for the `Symbol::description` + * ※ This is effectively an alias for the `Symbol::description´ * getter. + * + * ☡ This function throws if the provided argument is not a symbol. */ export const getSymbolDescription = createCallableFunction( - getOwnPropertyDescriptor(Symbol.prototype, "description").get, - "getSymbolDescription", + Object.getOwnPropertyDescriptor(Symbol.prototype, "description").get, + { name: "getSymbolDescription" }, +); + +/** + * Returns a string representation of the provided symbol. + * + * ※ Use `getSymbolDescription´ instead if you just want the text + * description of a symbol. + * + * ※ This is effectively an alias for the `Symbol::toString´. + * + * ☡ This function throws if the provided argument is not a symbol. + */ +export const symbolToString = createCallableFunction( + Symbol.prototype.toString, + { name: "symbolToString" }, +); + +/** + * Returns the value of the provided symbol. + * + * ※ This is effectively an alias for the `Symbol::valueOf´. + * + * ☡ This function throws if the provided argument is not a symbol and + * does not have a `[[SymbolData]]´ slot. + */ +export const symbolValue = createCallableFunction( + Symbol.prototype.valueOf, + { name: "symbolValue" }, );