summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Lady [Tue, 20 Jun 2023 01:17:28 +0000 (18:17 -0700)]
Add methods to get the system of a Tag
Lady [Tue, 20 Jun 2023 01:15:50 +0000 (18:15 -0700)]
Return undefined not null when resolving fails
If an identifier is not in use, its resolved value should be
`undefined`.
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.
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).
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.
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.
Lady [Mon, 29 May 2023 07:44:00 +0000 (00:44 -0700)]
Return this on Tag add/delete methods
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.
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.
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.
Lady [Sat, 27 May 2023 06:42:55 +0000 (23:42 -0700)]
Initial {memory ∣ storage} model
Lady [Sat, 27 May 2023 06:40:15 +0000 (23:40 -0700)]
Initial commit
This page took 0.026484 seconds and 4 git commands to generate.