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 named parameters. #117

Open
bigeasy opened this issue Nov 25, 2020 · 0 comments
Open

Implement named parameters. #117

bigeasy opened this issue Nov 25, 2020 · 0 comments
Assignees

Comments

@bigeasy
Copy link
Owner

bigeasy commented Nov 25, 2020

No description provided.

@bigeasy bigeasy added this to the Convert to ES6. milestone Nov 25, 2020
@bigeasy bigeasy self-assigned this Nov 25, 2020
bigeasy pushed a commit that referenced this issue Nov 25, 2020
Remove constructor assertions. Do not assert that arguments are correct
when you're trying to create an exception. Bad time to be verifying
contracts and whatnot.

Start of named parameters. Using a parameters object internally. Will
make it available externally.

Closes #110.
See #117.
bigeasy pushed a commit that referenced this issue Nov 25, 2020
But some of the renames are getting in the way. I'm adding code that
will have to be renamed and that bothers me. Going to winnow down the
bug and rename issues and then, hopefully, finish up the `try`/`catch`
helper classes.

See #117.
bigeasy pushed a commit that referenced this issue Nov 25, 2020
Too bad I don't know how to report them. This issue isn't resolved until
there's some reporting of bad formats.

Made adjustments to `options`. It no longer does the format lookup, just
builds and merges an options array.

See #122.
See #117.
bigeasy pushed a commit that referenced this issue Nov 25, 2020
Was not no longer using the first argument as a format if it was not a
valid code.

Also, fixed an early debugging return in `readme.t.js`.

See #117.
bigeasy pushed a commit that referenced this issue Nov 25, 2020
Documenting `assert` for the sake of getting the deferred construction
right. There is an ambiguity with deferred construct in that it is
always just a function but callee is also a function. I'm creating many
special cases in the code trying to not interpret it as a callee.

I want to provided memoized resolvers, callbackers, etc. While
implementing one I made the `callee` an option and realized that it is a
rather uncommon option and could therefore always be an option. This
would be easier to document. There is no way to specify a callee as a
positional parameter, you must use an option object.

Did get an initial `audit` wrapper. Decided that it is enough to just
call an audit function since this is only ever intended for use in unit
testing, ever for use in production, never to test the exceptions of a
dependency. If those use cases arise you can use the audit facility, but
it should not be as simple as an environment variable, as if it was a
dormant production facility that ready to be switched on and off.

Going to update the documentation first, to see if it makes life easier,
then continue with the implementation of the wrapper functions.

See #117.
See #114.
See #97.
bigeasy pushed a commit that referenced this issue Nov 26, 2020
Seem to have removed ambiguities. The first argument to the constructor
must be an options array, code symbol, code string, or message format.
After that arguments can appear in any order. The options object versus
properties object ambiguity is resolved by the position. The properties
object cannot appear as the first argument and the options object can no
longer be repeated for merging.

Still need to be able to merge options objects programmatically, though.
Will create a separate function for this.

See #117.
bigeasy pushed a commit that referenced this issue Nov 28, 2020
Was prepsending the previous options object to variable argment array to
use the varabile argument merge, but if the first argument to the
variable argument was already an object it would be interpreted as
properties.

Rewrote the options merge/interpreter. Let the old one in place because
I have something `git stash`ed that I need to merge.

See #117.
bigeasy pushed a commit that referenced this issue Dec 4, 2020
No distinction between the options object and the properties objects.
Special arguments like `callee`, `type` and `_errors` are now
`'#callee'`, `'#type'`, and `'#errors'` whose naming convention
corresponds to the new private member feature of JavaScript. Easier to
document than the distinction between the two type-less objects, that
distinction being only their position the positional arguments.

Re-implemented options "parsing" but with preservation of property
traits (such as `enumerable`) and copious error checking and reporting.
The actual structure of an error is to be determined, but the conditions
are all there so when the time comes it is search and replace.

Now it ought to be easier to sort how to implement all the code
inheritance nonsense that I'll never use but ought to be there so that I
could use it if I wanted to. That is, so that its usefulness is
discoverable.

See #117.
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