X-Git-Url: https://git.ladys.computer/Pisces/blobdiff_plain/54f1b076f8eb62b58bd28762e14ae5d848e5ea2a..refs/heads/current:/symbol.js?ds=sidebyside diff --git a/symbol.js b/symbol.js index 343e409..2bd3717 100644 --- a/symbol.js +++ b/symbol.js @@ -8,15 +8,44 @@ // file, You can obtain one at . import { createCallableFunction } from "./function.js"; -import { getOwnPropertyDescriptor } from "./object.js"; /** * Returns the description for the provided symbol. * * ※ 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" }, );