Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement code aliases. #140

Open
bigeasy opened this issue Dec 2, 2020 · 0 comments
Open

Implement code aliases. #140

bigeasy opened this issue Dec 2, 2020 · 0 comments
Assignees

Comments

@bigeasy
Copy link
Owner

bigeasy commented Dec 2, 2020

Add the ability to define a code name that is not a generated code or symbol, used to create a string table.

@bigeasy bigeasy added this to the Convert to ES6. milestone Dec 2, 2020
@bigeasy bigeasy self-assigned this Dec 2, 2020
bigeasy pushed a commit that referenced this issue Dec 2, 2020
Started aliases, but they are suggesting more complicated rules for
inheritance, like aliases referencing aliases. Also need to figure out
inheritance of aliases from the parent.

See #140.
bigeasy pushed a commit that referenced this issue Dec 2, 2020
Don't imagine that people are going to create error classes from other
modules, but if they do, they should be careful not to use existing
templates since they are not public. Seems like maybe they should not be
inherited, though. The user can always define a set of common templates
in a module somewhere, as a builder function and import it to different
modules in their code, so I'm liable to back out of this inheritance.

Come to think of it, the messages are not public either. If you where to
inherit the messages associated with codes you'd end up having to
document the message formats. It really does make more sense to have a
builder function and to specify your own symbols.

Currently you could use someone else's `Error` class, like `TypeError`,
but you can't use their formatting.

See #140.
bigeasy pushed a commit that referenced this issue Dec 2, 2020
Thinking aloud about inheritance. Do not want to have descendent classes
inherit templates by default. Don't really want it to happen at all, but
certainly not by default. Looking to create a symbol based system, which
is probably something of an abuse, certainly is uninviting, but the
alternative is to do nothing and suggest the user defined reusable codes
as a code function they share between exceptions.

At least there's a mechanism. Who creates error hierarchies in
JavaScript anyway?

See #140.
See #133.
bigeasy pushed a commit that referenced this issue Dec 3, 2020
Working through code definition and started with updating `create`'s
`vargs` processing so that an array can include anything that is an
argument and gets unshifted onto the `vargs` so that definitions are
recursive. This means code functions can return arrays.

Also, there's an ambiguity between an initial code function and the
super class. They are both functions.

See #140.
See #133.
bigeasy pushed a commit that referenced this issue Dec 3, 2020
Merge `Codes` and `Prototype` into one object.

See #140.
See #133.
bigeasy pushed a commit that referenced this issue Dec 4, 2020
bigeasy pushed a commit that referenced this issue Dec 4, 2020
`codes` is a public interface. It no longer reports the templates
internal to the generated exception.

See #140.
See #133.
bigeasy pushed a commit that referenced this issue Dec 5, 2020
Also some notes on how we can implement code inheritance without all the
dotted path dereferencing. Take a departure from syntax bashing and we
can get through this.

See #97.
See #140.
bigeasy pushed a commit that referenced this issue Dec 5, 2020
Appears to be a final draft of aliases or templates. Still not sure what
to call them. Have a sketch of inheritance in the swipe.

See #140.
bigeasy pushed a commit that referenced this issue Dec 9, 2020
 * Delete unused swipe. See #97.
 * Remove `Context` class. Closes #144.
 * Documentation and test for `sprintf` errors. See #95. See #97.
 * Documentation on inheritance in `swipe.t.js`. See #97. See #133.
 * Clean up `README.md`. See #97.
 * Remove debugging message.
 * An integer argument sets stack trace limit. See #97. See #143.
 * Implement `toString()` and `inspect.util`. Closes #142.
 * Inheritance and aliases.
 * Import symbols using `symbol`. See #133.
 * Move existing inheritance into `swipe.t.js`. See #133.
 * Sorted out construction of aliases. See #140.
 * Rename `Merge.argument` to `combine`. See #140. See #97.
 * Move used verbiage to `swipe.t.js`. See #97.
 * Tidy newline printing in `readme.t.js`. See #97.
 * `codes` no longer reports templates. See #133. See #140.
 * Tidy declaration of codes lookup. See #133. See #140.
 * Options object can now go anywhere. See #117.
 * Sketch of plain code inheritance. See #133. See #141.
 * Non-enumerable properties in defaults. See #141.
 * Non-enumerable properties in constructor. See #141.
 * Corral class properties into `Prototype`. See #133. See #140.
 * `create` unshifts onto `vargs`. See #133. See #140.
 * Added thoughts about inheritance to docs. See #133. See #140.
 * Inheriting templates from super class. See #140.
 * Sketch of aliases. See #140.
 * Implement sprintf-only properties. Closes #127.
 * Document the appropriate use of error properties. See #97.
 * Derive from derived super class, inherit codes. Closes #133.
 * Moving some documentation around, diary entry. See #97.
 * Talk default properties and codes before JSON. See #97.
 * More documentation. See #97.
 * Convert nested Errors to Interrupt format. See #102.
 * Re-implementation of stack trace parser. See #102.
 * Sort out enumerability. Closes #128.
 * Thoughts on printing non-Error nested errors.
 * `code` returns an object. Closes #139.
 * Print not code if null, nor context if empty. Closes #137.
 * Reorganization, deliminate some dead code. See #97.
 * Additional documentation. See #97.
 * Create static function to get the error message. See #97. Closes #136.
 * Documentation and reorgainzation. See #97.
 * Remove old `interrupt.t.js` unit test. See #97.
 * Remove `assert`. See #131.
 * Actually using the circular reference JSON. See #130.
 * `Interrupt.Error` error codes for meta-errors. Closes #131.
 * Will not derive from `AggregateError`. Closes #116.
 * Implement a forgiving JSON serializer. Closes #130.
 * Use `Instances` instead of `MATERIAL`.
 * Created a context object for nested error context. Closes #135.
 * Display code in stack trace.
 * Add test temp directory to `.gitignore`.
 * Implement default properties by code. Closes #134.
 * Fix options merging. See #117.
 * Sketch of code inerhitence. See #133.
 * Sketch of audit, `sprintf` errors reported. See #114. Closes #122.
 * One rename of `properties` was skipped. See #129.
 * Reordered assistants in order of documentation. See #97.
 * Rename `context` to `properties`. Closes #129.
 * Currying appears to be finished. Closes #125.
 * Use the finalized deferred constructor. See #125. See #113. See #112. See #111.
 * Implement sync `try`/`catch` wapper. See #113.
 * Decide on `callback()` function signature. See #112.
 * Sketch of currying, implement `voptions`. See #125. See #111. Closes #126.
 * Settle on an argument order for constructor. See #117. Seem to have removed ambiguities. The first argument to the constructor
 * Documentation, discovered an ambiguity. See #97.
 * Sketch auditing, deferred construct. Assert docs. See #97. See #114. See #117.
 * Create `Symbol`s for error codes. Closes #124.
 * Fix `sprintf` format selection. See #117.
 * Fix `readme.t.js` example error formats. See #97.
 * Catch `sprintf` errors. See #117. See #122.
 * Assert that `Interrupt` is protected. Closes #123.
 * Rename `causes` to `errors. Closes #115.
 * Further sketch of named parameters. See #117.
 * Build with Node.js 15 on Travis CI. Closes #121.
 * Remove dead code.
 * Build with Node.js 15 on GitHub Actions. Closes #120.
 * Build with Node.js 14 on GitHub Actions. Closes #119.
 * Build with Node.js 14 at Travis CI. Closes #118.
 * Start named parameters, no constructor assertions. See #117. Closes #110.
 * Promise resolver, callback helper function.
 * Poking at the `readme.t.js`. See #97.
 * Change tagline. See #97.
 * Add a TODO. See #110.
 * Make `readme.t.js` a unit test. See #97.

Closes #145.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant