]> Lady’s Gitweb - Etiquette/log
Etiquette
17 months agoGive Tag constructors a superclass
Lady [Wed, 14 Jun 2023 04:42:16 +0000 (21:42 -0700)]
Give Tag constructors a superclass

This “simplifies” the static method definitions on Tag constructors
by giving the constructors themselves private fields and using a method
implementation common to all of them (on their prototype chain), rather
than manually defining each with partial application during initial
constructor generation.

This is also somewhat desirable as it means that the expected situation
of :—

```js
Object.getPrototypeOf(Tag).prototype ==
  Object.getPrototypeOf(Object.getPrototypeOf(new Tag))
```

—: is true, which was not formerly the case.

17 months agoUse configurable metadata for model
Lady [Wed, 14 Jun 2023 02:48:09 +0000 (19:48 -0700)]
Use configurable metadata for model

Instead of hardcoding properties and methods, use a schema to generate
them. This makes the code significantly dry·er at the cost of some
slightly obtuse metaprogramming.

The schema format is somewhat minimal and makes some assumptions; this
is not intended as a generalist O·W·L processor or anything of the
sort.

Previously, `TagSystem::Tag` returned a bound class constructor. With
this commit, it instead returns a (manually‐defined) constructor
function which effectively does the partial application in its function
body. Each constructor has its own unique prototype object (inheriting
from `Tag.prototype`) and its own static methods (bound forms of `Tag`
static methods). Constructors themselves inherit from
`Function.prototype` (for now).

17 months agoAlways return (the same) objects for langstrings
Lady [Wed, 14 Jun 2023 02:02:55 +0000 (19:02 -0700)]
Always return (the same) objects for langstrings

Instead of returning a string literal in some cases and a `String`
object in others, always return an object when processing language
strings. Use a cache and registry to always return the same object for
any given value and language, to allow `Set` operations to work as
expected.

17 months agoAdd `::iriSpace` and use it in I·R·I handling
Lady [Mon, 29 May 2023 20:11:45 +0000 (13:11 -0700)]
Add `::iriSpace` and use it in I·R·I handling

This can be recorded as a VoID property and is necessary for converting
I·R·I’s back into their identifiers.

17 months agoReturn this on Tag add/delete methods
Lady [Mon, 29 May 2023 07:44:00 +0000 (00:44 -0700)]
Return this on Tag add/delete methods

17 months agoAllow “silent” persisting of tags
Lady [Mon, 29 May 2023 06:16:00 +0000 (23:16 -0700)]
Allow “silent” persisting of tags

This simplifies the algorithm a little bit in the case that no output
is needed. Diffs are still necessary for properties with inverses.

17 months agoInitial Tag model
Lady [Mon, 29 May 2023 05:18:55 +0000 (22:18 -0700)]
Initial Tag model

Work is still needed here to allow `TagSystem`s to replay the
activities generated by persisting tags, but the `Tag` part of this is
close and working.

17 months agoSmall improvements to storage
Lady [Mon, 29 May 2023 05:09:47 +0000 (22:09 -0700)]
Small improvements to storage

- Restructuring of I·D minting for readability.

- Test to ensure `Storage` must be called as a constructor.

- `000-0000` is now reserved (deleted) by default.

- Formatting and documentation improvements.

17 months agoInitial {memory ∣ storage} model
Lady [Sat, 27 May 2023 06:42:55 +0000 (23:42 -0700)]
Initial {memory ∣ storage} model

17 months agoInitial commit
Lady [Sat, 27 May 2023 06:40:15 +0000 (23:40 -0700)]
Initial commit

This page took 0.022457 seconds and 4 git commands to generate.