Thing Enumerator is a control system for rudimentary objects called entries. It represents collections of entries in a tabular format, with each row representing one entry and each cell one attribute on that entry.
What is Thing Enumerator?
Thing Enumerator is a control system for rudimentary objects called entries. It represents collections of entries in a tabular format, with each row representing one entry and each cell one attribute on that entry.
What is Thing Enumerator any good for?
Well, OK, kind of a weird ask tonally. But it's great for visually modeling entities with relationships that might be difficult to convey with a simpler spreadsheet system.
Take this example:
Name | Color | Relationships | |
---|---|---|---|
Wren W. | Wren W. Vince O. Wren W. Char R. | ||
Vince O. | Wren W. Vince O. Vince O. Ben E. Vince O. Ben E. Jay C. Char R. | ||
Ben E. | Vince O. Ben E. Vince O. Ben E. Jay C. Char R. | ||
Jay C. | Jay C. Char R. Vince O. Ben E. Jay C. Char R. | ||
Char R. | Jay C. Char R. Vince O. Ben E. Jay C. Char R. Wren W. Char R. |
Participants | Type | |
---|---|---|
Wren W. Vince O. | Neighbors | |
Vince O. Ben E. | Unclear | |
Jay C. Char R. | Dating | |
Vince O. Ben E. Jay C. Char R. | In-group | |
Wren W. Char R. | Enemies | |
Nobody |
Modeling this kind of relationship in common spreadsheet software can be tedious, and it is often unfeasible or impossible to view several tables at once, which blows. So in Thing Enumerator projects, all tables are displayed at once.
Instructions
The instructions will be divided into three sections:
Also see Appendix A for text formatting matters.
I. Intratabular (table mechanics and actions)
A table has two characteristics of note: the schema and entries.
Schema
The schema is the list of fields represented on the table. Each field has an associated name and type. The following is the schema of the People table above:
The full selection of types supported by Thing Enumerator is listed below.
Name | Description | Example |
---|---|---|
Text | A line of text | Hello World ... Hello World |
Long text | Multi-line text | I love text formatting! |
Color | A web color | |
Entry from table* | A pointer to an entry from table (or no pointer) - see Section II | Wren W. |
Entries from table* | A collection of pointers to an entry from table - see Section II | Vince O. Ben E. Jay C. Char R. |
* Note: a table may never reference its own entries, i.e., these types must reference a table other than the one in whose schema they are present. (Recursive constructions are technically permitted, but there is little to be gleaned from these: undefined)
Entries
An entry in a table is one object whose contents follow the table's schema. A table may have any number of entries which will be displayed as rows.
Table actions
Action | Process |
---|---|
Create a table |
|
Rename a table* |
|
Move a table |
|
Delete a table* |
|
Create a field |
|
Rename a field* |
|
Change a field's type | This cannot be done directly. Delete the field and create a new field with the desired type. |
Delete a field* |
|
Create a new row |
|
Delete a row |
|
Edit a table cell value |
|
* Note: The first table, Colors, and its first field, Color, cannot be renamed or deleted.
II. Intertabular (references)
We have seen that entries are able to store references to other entries (that is, the Entry-from-table and Entries-from-table types). We will now explore this topic in a bit more depth.
How references work
While displayed as an arcane miniature version of the referenced entry (or entries), reference types are effectively stored as a pointer to another entry (or a collection of pointers, in the entries case.) It is important to note that the scope of references is to entire entries rather than individual cells of a table. Within a referenced entry, the first field is treated as the "index" and is displayed as the object of reference.
In the Relationships table above, the value Ben E. -- a reference to the third entry of the People table -- is stored as a construction meaning "row #3." This means that if row #3 of the People table is altered, this reference will update to match the new entry. If row #3 is deleted, then the reference will take on the appearance of the new third entry of the People table: Jay C.. As long as there is a row #3 to reference, its contents will be displayed here; if there is no longer such a row #3, the reference will be displayed as undefined.
Glossary of reference type visuals
The following table lists the various appearances of references and their meanings. Within this table, a reference to an entry is synonymous with a reference to a reference to that entry, a reference to a reference to a reference to that entry, etc.
Item | Meaning(s) | Example | Meaning of example |
---|---|---|---|
Grey margin containing grey swatch and "undefined" |
|
undefined | A reference to the sixth entry in the People table, which no longer exists. |
Colored margin containing colored swatch and text | A reference to a entry whose first (index) field is of type text or long-text. (The color is taken from the entry's leftmost color-type or reference-to-color-type field, or if there is no such field, the corresponding color from the Colors table.) | Ben E. | A reference to the third entry in the People table, where the first (index) field is of type text and reads "Ben E." and the leftmost color field is . |
Colored margin containing colored swatch | A reference to an entry whose first (index) field is of type color. The color is taken from the referenced entry. | A reference to the ninth entry in the Colors table, where the first (index) field is of type color and reads . | |
Grey margin containing grey swatch and "empty" | A reference to an empty collection of references. | empty | A reference to the sixth entry in the People table, which is empty. |
Colored margin containing a colored swatch and a sequence of several of the above | A reference to a collection of references. (The color is taken as the average color of the margins and inner swatches of all contained references.) | Vince O. Ben E. | A reference to the second entry in the Relationships table, where the first (index) field is of type "entries in People" and references the second ( Vince O.) and third ( Ben E.) of People. |
Sequence of several of the above | A collection of references. | undefined | A collection of references to the Colors table, respectively referencing its third (), fifth ( ), and nonexistent tenth ( undefined) entries. |
III. Extratabular (project-scope)
The Thing Enumerator also uses a save system accessible through the Projects menu. To access this menu, click on the button on the sidebar.
Projects on this site are saved to local storage, meaning they are persistent across sessions and stored in your browser rather than to this site. (Settings in are also stored this way.) To access any of your previous projects, use the Settings button in the Projects menu. Open
To transfer projects across browsers or across devices, or to send your projects to others, you can also utilize and Import project from JSON . Export project as JSON
Appendix A. Text Formatting
The following table lists text formatting syntaxes for the text and long-text entry types.
Type | Syntax | Example | Result |
---|---|---|---|
Italic | *text* | Hello *World* | Hello World |
Underline | _text_ | Hello _World_ | Hello World |
Superscript | ^text^ | Hello ^World^ | Hello World |
Color | @alias | Hello @Orange | Hello Orange |
@alias"text" | Hello @orange"World" | Hello World | |
Highlight | @alias[text] | Hello @orange[World] | Hello World |
Code line | `text` | Hello `World` | Hello World |
Heading | # text | Hello # World |
HelloWorld |
Blockquote | > text | Hello > World |
Hello World |
Bulleted list | - text - text - text etc. |
- He - llo - wo - rld |
|
Code block | ```text``` | Hello ```World``` |
Hello World |
Escape | \specialcharacter | Hello \*World\* | Hello *World* |
Note: all instances of "alias" refer to any of the newline-separated entries in the second field of the Colors table, e.g. Red, Yellow, or Purple. Case does not matter.
Appendix B. Contact
If something's not working right, or you have a question or a suggestion you'd like to express regarding this project, you can click here to visit the Neocities profile on which this project is stored, and you can leave me a comment there. Honestly though odds are if you're using this you know me, so you can just text me too.