X-Git-Url: https://git.ladys.computer/Pisces/blobdiff_plain/ee0f6916f2f56f17bd232f964fec9a4c7ed6ec89..e1cb83c479df2a3e4a5e918867a135ff9dde8121:/symbol.js diff --git a/symbol.js b/symbol.js index 514b526..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 { makeCallable } 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( + 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 getSymbolDescription = makeCallable( - getOwnPropertyDescriptor(Symbol.prototype, "description").get, - "getSymbolDescription", +export const symbolValue = createCallableFunction( + Symbol.prototype.valueOf, + { name: "symbolValue" }, );