@heroiclands/package-build 25.5.5 → 25.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/assets/styles/content-base.css +1 -1
- package/docs/api.md +24 -16
- package/docs/authoring/frontmatter.md +1 -1
- package/docs/authoring/links-and-markup.md +10 -9
- package/docs/content-format.md +40 -1
- package/docs/diagnostics.md +2 -2
- package/docs/encoding-core.md +43 -5
- package/docs/guides/reference-pages.md +4 -1
- package/docs/guides/site.md +1 -1
- package/docs/reference/format-details.md +239 -194
- package/docs/reference/note-types.md +187 -174
- package/docs/reference/theme-pages.md +1 -0
- package/engine/content-format.yaml +9 -7
- package/engine/content-html.mjs +3 -2
- package/engine/content-index.mjs +23 -0
- package/engine/content-links.mjs +8 -0
- package/engine/content-render.mjs +2 -2
- package/engine/content-tables.mjs +12 -5
- package/engine/culture-reach.mjs +3 -0
- package/engine/declared-sections.mjs +100 -0
- package/engine/derived-sections.mjs +36 -2
- package/engine/dictionary-rows.mjs +2 -1
- package/engine/encoding-template.mjs +28 -0
- package/engine/encoding-terms.mjs +20 -12
- package/engine/encoding.mjs +147 -17
- package/engine/generated-sections.mjs +2 -0
- package/engine/holdings.mjs +107 -3
- package/engine/index-records.mjs +3 -1
- package/engine/index.mjs +1 -1
- package/engine/language-data.mjs +0 -1
- package/engine/language-rows.mjs +1 -3
- package/engine/language-terms.mjs +7 -10
- package/engine/map-dot.mjs +22 -0
- package/engine/markdown-blocks.mjs +23 -8
- package/engine/metadata-index.mjs +1 -0
- package/engine/note-addresses.mjs +16 -0
- package/engine/note-vocabulary.mjs +19 -8
- package/engine/office-holders.mjs +76 -0
- package/engine/page-breaks.mjs +36 -8
- package/engine/pdf-render.mjs +4 -3
- package/engine/place-kinds.mjs +106 -0
- package/engine/settlement-tables.mjs +410 -675
- package/engine/settlement-terms.mjs +118 -0
- package/engine/site-build.mjs +2 -4
- package/engine/sql-tables.mjs +101 -7
- package/engine/standing-terms.mjs +9 -5
- package/engine/standings.mjs +83 -31
- package/engine/unique-items.mjs +85 -0
- package/package.json +9 -4
- package/site-theme/data/banner-kinds.yaml +2 -0
- package/sohl/actors.mjs +4 -3
- package/types/engine/content-html.d.mts +2 -1
- package/types/engine/content-scripts.d.mts +6 -0
- package/types/engine/culture-reach.d.mts +3 -0
- package/types/engine/declared-sections.d.mts +30 -0
- package/types/engine/derived-sections.d.mts +5 -1
- package/types/engine/encoding-lexicon.d.mts +6 -0
- package/types/engine/encoding-template.d.mts +6 -0
- package/types/engine/encoding.d.mts +12 -0
- package/types/engine/holdings.d.mts +34 -2
- package/types/engine/index-records.d.mts +2 -1
- package/types/engine/language-terms.d.mts +5 -1
- package/types/engine/markdown-blocks.d.mts +5 -1
- package/types/engine/office-holders.d.mts +33 -0
- package/types/engine/page-breaks.d.mts +8 -0
- package/types/engine/place-kinds.d.mts +18 -0
- package/types/engine/settlement-tables.d.mts +25 -158
- package/types/engine/settlement-terms.d.mts +53 -0
- package/types/engine/sql-tables.d.mts +35 -3
- package/types/engine/standing-terms.d.mts +3 -2
- package/types/engine/standings.d.mts +14 -2
- package/types/engine/unique-items.d.mts +12 -0
- package/vendor/markdownlint.mjs +855 -569
|
@@ -90,7 +90,7 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
90
90
|
| Key | Shape | Required | Meaning |
|
|
91
91
|
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
92
92
|
| `data.affiliations.<Address>.rank` | the level on that body's own ladder, as a whole number — an ordinary member is `1`, and `0` is the rung for someone cast out | yes | The level on the body's own `governance.ranks` ladder. |
|
|
93
|
-
| `data.affiliations.<Address>.office` | a post from that body's `governance.offices
|
|
93
|
+
| `data.affiliations.<Address>.office` | a post from that body's `governance.offices`, or a list of them | no | A post the body names in its `governance.offices`, where one is held, or a list of the posts one being holds in that body. |
|
|
94
94
|
| `data.affiliations.<Address>.societies` | a list of society names | no | The societies the membership is held in, by name. SoHL carries one, the first, as the affiliation item's `system.society`. |
|
|
95
95
|
|
|
96
96
|
**System mappings**
|
|
@@ -250,16 +250,17 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
250
250
|
|
|
251
251
|
**Subtypes:** None.
|
|
252
252
|
|
|
253
|
-
| Field | Shape | Meaning
|
|
254
|
-
| ----------------------- | ----------------------- |
|
|
255
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
256
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
257
|
-
| `data.weight` | number | What the thing weighs.
|
|
258
|
-
| `data.value` | number | What the thing is worth.
|
|
259
|
-
| `data.quality` | number | How well it is made.
|
|
260
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
261
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
262
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
253
|
+
| Field | Shape | Meaning |
|
|
254
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
255
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
256
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
257
|
+
| `data.weight` | number | What the thing weighs. |
|
|
258
|
+
| `data.value` | number | What the thing is worth. |
|
|
259
|
+
| `data.quality` | number | How well it is made. |
|
|
260
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
261
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
262
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
263
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
263
264
|
|
|
264
265
|
**System mappings**
|
|
265
266
|
|
|
@@ -294,19 +295,20 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
294
295
|
|
|
295
296
|
**Subtypes:** `mundane`, `exotic`, `elixir`.
|
|
296
297
|
|
|
297
|
-
| Field | Shape | Meaning
|
|
298
|
-
| ----------------------- | ----------------------- |
|
|
299
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
300
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
301
|
-
| `data.weight` | number | What the thing weighs.
|
|
302
|
-
| `data.value` | number | What the thing is worth.
|
|
303
|
-
| `data.quality` | number | How well it is made.
|
|
304
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
305
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
306
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
307
|
-
| `data.
|
|
308
|
-
| `data.
|
|
309
|
-
| `data.
|
|
298
|
+
| Field | Shape | Meaning |
|
|
299
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
300
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
301
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
302
|
+
| `data.weight` | number | What the thing weighs. |
|
|
303
|
+
| `data.value` | number | What the thing is worth. |
|
|
304
|
+
| `data.quality` | number | How well it is made. |
|
|
305
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
306
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
307
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
308
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
309
|
+
| `data.quantity` | number | How many of the thing there are; one when unstated. |
|
|
310
|
+
| `data.potency` | string | Potency — `na`, `mild`, `strong` or `great`. |
|
|
311
|
+
| `data.strength` | number | Strength; the higher, the stronger. |
|
|
310
312
|
|
|
311
313
|
**System mappings**
|
|
312
314
|
|
|
@@ -322,17 +324,18 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
322
324
|
|
|
323
325
|
**Subtypes:** None.
|
|
324
326
|
|
|
325
|
-
| Field | Shape | Meaning
|
|
326
|
-
| ----------------------- | ----------------------- |
|
|
327
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
328
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
329
|
-
| `data.weight` | number | What the thing weighs.
|
|
330
|
-
| `data.value` | number | What the thing is worth.
|
|
331
|
-
| `data.quality` | number | How well it is made.
|
|
332
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
333
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
334
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
335
|
-
| `data.
|
|
327
|
+
| Field | Shape | Meaning |
|
|
328
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
329
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
330
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
331
|
+
| `data.weight` | number | What the thing weighs. |
|
|
332
|
+
| `data.value` | number | What the thing is worth. |
|
|
333
|
+
| `data.quality` | number | How well it is made. |
|
|
334
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
335
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
336
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
337
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
338
|
+
| `data.capacity` | number | How much it holds. |
|
|
336
339
|
|
|
337
340
|
**System mappings**
|
|
338
341
|
|
|
@@ -350,17 +353,18 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
350
353
|
|
|
351
354
|
**Subtypes:** None.
|
|
352
355
|
|
|
353
|
-
| Field | Shape | Meaning
|
|
354
|
-
| ----------------------- | ----------------------- |
|
|
355
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
356
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
357
|
-
| `data.weight` | number | What the thing weighs.
|
|
358
|
-
| `data.value` | number | What the thing is worth.
|
|
359
|
-
| `data.quality` | number | How well it is made.
|
|
360
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
361
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
362
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
363
|
-
| `data.
|
|
356
|
+
| Field | Shape | Meaning |
|
|
357
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
358
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
359
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
360
|
+
| `data.weight` | number | What the thing weighs. |
|
|
361
|
+
| `data.value` | number | What the thing is worth. |
|
|
362
|
+
| `data.quality` | number | How well it is made. |
|
|
363
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
364
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
365
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
366
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
367
|
+
| `data.quantity` | number | How many of the thing there are; one when unstated. |
|
|
364
368
|
|
|
365
369
|
**System mappings**
|
|
366
370
|
|
|
@@ -425,17 +429,18 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
425
429
|
|
|
426
430
|
**Subtypes:** `none`, `arrow`, `bolt`, `bullet`, `dart`, `other`.
|
|
427
431
|
|
|
428
|
-
| Field | Shape | Meaning
|
|
429
|
-
| ----------------------- | ----------------------- |
|
|
430
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
431
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
432
|
-
| `data.weight` | number | What the thing weighs.
|
|
433
|
-
| `data.value` | number | What the thing is worth.
|
|
434
|
-
| `data.quality` | number | How well it is made.
|
|
435
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
436
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
437
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
438
|
-
| `data.
|
|
432
|
+
| Field | Shape | Meaning |
|
|
433
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
434
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
435
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
436
|
+
| `data.weight` | number | What the thing weighs. |
|
|
437
|
+
| `data.value` | number | What the thing is worth. |
|
|
438
|
+
| `data.quality` | number | How well it is made. |
|
|
439
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
440
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
441
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
442
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
443
|
+
| `data.quantity` | number | How many of the thing there are; one when unstated. |
|
|
439
444
|
|
|
440
445
|
**System mappings**
|
|
441
446
|
|
|
@@ -473,7 +478,7 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
473
478
|
| `data.tongues` | list of `{ tag, meaning, language? }` | The tags a register row's `tongue` may name, each with what it means. A language skill note only. |
|
|
474
479
|
| `data.register` | list of `{ name, tongue?, kind?, built?, gloss?, why? }` | Every name the setting gives in the language's reach, with its tongue and pieces; the notes carrying each name are derived. A language skill note only. |
|
|
475
480
|
| `data.retired` | list of `{ form, instead?, why }` | The forms the setting does not write, and why. A language skill note only. |
|
|
476
|
-
| `data.scope` | a map — `{ folders?, cultures?, lore?, parents?, addresses?,
|
|
481
|
+
| `data.scope` | a map — `{ folders?, cultures?, lore?, parents?, addresses?, types?, skip? }` | The notes the register covers. A language skill note only. |
|
|
477
482
|
| `data.sounds` | a map — `{ letters?, edges?, clusters?, stress?, finals?, syllables?, joining?, joins?, marks?, skeleton?, frames?, readPast?, mutations? }` | The letters the language writes and the rules its words keep. A language skill note only. |
|
|
478
483
|
| `data.soundChanges` | list of `{ name, from?, to?, takes?, steps }` | Named sets of ordered changes, each making one tongue's words from another's. A language skill note only. |
|
|
479
484
|
| `data.elements` | list of `{ form, variants?, position?, kind?, sense, examples?, word?, joining? }` | The elements the language's names are built from. A language skill note only. |
|
|
@@ -576,7 +581,6 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
576
581
|
| `data.scope.lore` | a list of lore Addresses | no | Every note whose `data.lore` names one of these notes. |
|
|
577
582
|
| `data.scope.parents` | a list of Addresses | no | Every note whose `data.parents` names one of these notes. |
|
|
578
583
|
| `data.scope.addresses` | a list of Addresses | no | These notes themselves. |
|
|
579
|
-
| `data.scope.paths` | a list of content paths | no | Every note whose file sits below one of these paths of the content tree. |
|
|
580
584
|
| `data.scope.types` | a list of note types | no | The note types the register covers; where stated, a note of another type is out of scope whatever else catches it. |
|
|
581
585
|
| `data.scope.skip` | a list of Addresses | no | Notes out of scope whatever else catches them. |
|
|
582
586
|
| `data.sounds.letters` | list of `{ letters, kind, like?, place?, ipa?, tongue? }` | no | The letters the language writes, and the sounds they stand for. |
|
|
@@ -632,7 +636,7 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
632
636
|
| `data.sounds.marks` | list of `{ mark, letters, kind, limit }` | no | The marks the language writes on its letters. |
|
|
633
637
|
| `data.sounds.marks[].mark` | a string, such as `acute` | yes | The mark's name. |
|
|
634
638
|
| `data.sounds.marks[].letters` | a list of letters | yes | The letters that carry it. |
|
|
635
|
-
| `data.sounds.marks[].kind` | one of stress, length, apart
|
|
639
|
+
| `data.sounds.marks[].kind` | one of stress, length, apart, quality, tone | yes | What the mark says of its letter. |
|
|
636
640
|
| `data.sounds.marks[].limit` | one of one, any | yes | How many a word may carry: `one` at most, or `any`. |
|
|
637
641
|
| `data.sounds.skeleton` | list of `{ second, between? }` | no | The vowel set between a root's second and third consonants. |
|
|
638
642
|
| `data.sounds.skeleton[].second` | a list of sounds, or `any` | yes | The second consonants of a root the row holds for; `any` for every other. |
|
|
@@ -754,16 +758,17 @@ These fields are accepted by every note type. A field's value can still be irrel
|
|
|
754
758
|
|
|
755
759
|
**Subtypes:** None.
|
|
756
760
|
|
|
757
|
-
| Field | Shape | Meaning
|
|
758
|
-
| ----------------------- | ----------------------- |
|
|
759
|
-
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`.
|
|
760
|
-
| `data.templatePriority` | number | Template priority; unset means the note is not a template.
|
|
761
|
-
| `data.weight` | number | What the thing weighs.
|
|
762
|
-
| `data.value` | number | What the thing is worth.
|
|
763
|
-
| `data.quality` | number | How well it is made.
|
|
764
|
-
| `data.durability` | number | How much wear it takes before it fails.
|
|
765
|
-
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`.
|
|
766
|
-
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`.
|
|
761
|
+
| Field | Shape | Meaning |
|
|
762
|
+
| ----------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
763
|
+
| `data.icon` | an Address | The document's profile art — an `icon` address, resolved into `img`. |
|
|
764
|
+
| `data.templatePriority` | number | Template priority; unset means the note is not a template. |
|
|
765
|
+
| `data.weight` | number | What the thing weighs. |
|
|
766
|
+
| `data.value` | number | What the thing is worth. |
|
|
767
|
+
| `data.quality` | number | How well it is made. |
|
|
768
|
+
| `data.durability` | number | How much wear it takes before it fails. |
|
|
769
|
+
| `data.made` | an Address of one event | The event in which the thing was made — `lore-forging`, or one event of a note as `place-ironfells#raising`. |
|
|
770
|
+
| `data.lost` | an Address of one event | The event in which the thing was lost — `lore-flood`, or one event of a note as `place-ironfells#sack`. |
|
|
771
|
+
| `data.unique` | `true` or `false` | `true` for a one-of-a-kind item, such as a named weapon; its note links the places and beings involved. Absent, the item is common. |
|
|
767
772
|
|
|
768
773
|
**System mappings**
|
|
769
774
|
|
|
@@ -897,7 +902,7 @@ Lore records in-world knowledge. A `culture` describes a people; a `custom` desc
|
|
|
897
902
|
|
|
898
903
|
### place
|
|
899
904
|
|
|
900
|
-
**Subtypes:** `world`, `region`, `settlement`, `site`, `structure`, `feature`, `celestial`.
|
|
905
|
+
**Subtypes:** `world`, `region`, `district`, `settlement`, `site`, `structure`, `feature`, `route`, `celestial`.
|
|
901
906
|
|
|
902
907
|
| Field | Shape | Meaning |
|
|
903
908
|
| -------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -909,6 +914,7 @@ Lore records in-world knowledge. A `culture` describes a people; a `custom` desc
|
|
|
909
914
|
| `data.culture` | an Address | The people this place belongs to, as a culture lore note. |
|
|
910
915
|
| `data.population` | number | Approximate population, to two significant digits. |
|
|
911
916
|
| `data.government` | an Address or null | The governing affiliation Address; the default target type is affiliation. Explicit null means complete anarchy. A positive population with no government key produces an advisory. |
|
|
917
|
+
| `data.settlements` | { rows, tail } | A region's settlement rows and the sentence stating what they leave out; the table is generated from this declaration. |
|
|
912
918
|
| `data.market` | number | What trade the settlement supports, on a scale of six: 1 hamlet, 2 village, 3 town, 4 market town, 5 city, 6 great city. |
|
|
913
919
|
| `data.borders` | list of `{ to, bearing }` entries | Places sharing a frontier with this one — each the other's shortcode and where it lies from here. |
|
|
914
920
|
| `data.routes` | list of `{ to, bearing, mode, days, terrain?, leagues? }` entries | Journeys from this place's centre — where the destination lies, how it is travelled, and about how many days it takes. |
|
|
@@ -929,54 +935,62 @@ Lore records in-world knowledge. A `culture` describes a people; a `custom` desc
|
|
|
929
935
|
|
|
930
936
|
**Inner keys** — a key a field's value does not declare is an error at its own line and column.
|
|
931
937
|
|
|
932
|
-
| Key | Shape | Required | Meaning
|
|
933
|
-
| ------------------------------------------ | ------------------------------------------------------------------------------------- | -------- |
|
|
934
|
-
| `data.events[].id` | an address segment | no | The event's name within its note — lowercase letters and digits.
|
|
935
|
-
| `data.events[].kind` | one `eventKind` value | no | What sort of thing happened.
|
|
936
|
-
| `data.events[].depth` | one `depth` value | no | How far the event's history reaches.
|
|
937
|
-
| `data.events[].when` | a date, or `"0.<day>"` | yes | When it happened, or the anchor and first instance of an event that recurs.
|
|
938
|
-
| `data.events[].until` | a date | no | When a continuous event ended, or where a recurring series stopped.
|
|
939
|
-
| `data.events[].recurs` | `{ every }` or `{ on }` | no | How further occurrences are found; absent for an event that happened once.
|
|
940
|
-
| `data.events[].recurs.every` | a whole number of years, 1 or more | no | A period counted on the canonical axis from `when`.
|
|
941
|
-
| `data.events[].recurs.on` | a list of dates, strictly increasing, each later than `when` | no | Recorded occurrences beyond the first, in place of a period.
|
|
942
|
-
| `data.events[].summary` | a string | yes | What happened, stated plainly.
|
|
943
|
-
| `data.events[].standing` | one `standing` value | no | What the world's evidence supports.
|
|
944
|
-
| `data.events[].names` | `{ name, by, gloss? }[]` | no | The event's names in the world, each with who uses it.
|
|
945
|
-
| `data.events[].names[].name` | a string | yes | One name the event goes by in the world.
|
|
946
|
-
| `data.events[].names[].by` | an Address naming an `affiliation`, `lore`, `place`, `being` or `skill` note | yes | Who uses that name — a people, a polity, a faith, a place, a tongue.
|
|
947
|
-
| `data.events[].names[].gloss` | a string | no | What the name means, or how it is used.
|
|
948
|
-
| `data.events[].where` | `{ locus?, reach? }` | no | Where it happened, and where it was felt.
|
|
949
|
-
| `data.events[].where.locus` | a list of Addresses, each defaulting to `place` | no | Where the event physically happened; each resolves to a place.
|
|
950
|
-
| `data.events[].where.reach` | `{ place, how, knowledge, attributedTo? }[]` | no | Where the event was felt, and whether each place knows why.
|
|
951
|
-
| `data.events[].where.reach[].place` | an Address, defaulting to `place` | yes | A place where the event was felt.
|
|
952
|
-
| `data.events[].where.reach[].how` | a string | yes | One clause: a consequence someone in that place could notice.
|
|
953
|
-
| `data.events[].where.reach[].knowledge` | one `knowledge` value | yes | Whether that place connects what it felt to this event.
|
|
954
|
-
| `data.events[].where.reach[].attributedTo` | an Address, defaulting to `lore`, naming an event or a `lore` note | no | Only beside `knowledge: misattributed` — the cause that place names instead.
|
|
955
|
-
| `data.events[].who` | `{ ref, role }[]` | no | Who took part, and as what.
|
|
956
|
-
| `data.events[].who[].ref` | an Address naming a `being`, `affiliation` or `lore` note | yes | A participant — a being, a people, an affiliation.
|
|
957
|
-
| `data.events[].who[].role` | one `role` value | yes | What the participant was to the event.
|
|
958
|
-
| `data.events[].follows` | `{ event, how, note? }[]` | no | The earlier events this one follows from.
|
|
959
|
-
| `data.events[].follows[].event` | an Address, defaulting to `lore`, anchored to an `event` where its note holds several | yes | The earlier event; it resolves to exactly one event.
|
|
960
|
-
| `data.events[].follows[].how` | one `followsHow` value | yes | How this event follows from it.
|
|
961
|
-
| `data.events[].follows[].note` | a string | no | One clause saying what connects the two.
|
|
962
|
-
| `data.events[].accounts` | `{ by, says, agrees, withholds? }[]` | no | What each people, polity, faith or place says about it.
|
|
963
|
-
| `data.events[].accounts[].by` | an Address naming an `affiliation`, `lore`, `place` or `being` note | yes | Who holds the account.
|
|
964
|
-
| `data.events[].accounts[].says` | a string | yes | What they say happened, in their terms.
|
|
965
|
-
| `data.events[].accounts[].agrees` | one `agrees` value | yes | How far their account agrees with `summary`.
|
|
966
|
-
| `data.events[].accounts[].withholds` | a string | no | What they decline to say.
|
|
967
|
-
| `data.events[].unresolved` | a list of strings | no | What the world itself has not settled.
|
|
968
|
-
| `data.events[].sources` | a list of Addresses | no | The notes that state or support the event; each resolves.
|
|
969
|
-
| `data.events[].stated` | `{ calendar, text }` | no | The date as one tradition writes it in its own reckoning.
|
|
970
|
-
| `data.events[].stated.calendar` | an Address, or a lore shortcode | yes | The calendar that tradition reckons in — a `lore` note with `subType: calendar`.
|
|
971
|
-
| `data.events[].stated.text` | a string | yes | The date as that tradition writes it.
|
|
972
|
-
| `data.
|
|
973
|
-
| `data.
|
|
974
|
-
| `data.
|
|
975
|
-
| `data.
|
|
976
|
-
| `data.
|
|
977
|
-
| `data.
|
|
978
|
-
| `data.
|
|
979
|
-
| `data.
|
|
938
|
+
| Key | Shape | Required | Meaning |
|
|
939
|
+
| ------------------------------------------ | ------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------- |
|
|
940
|
+
| `data.events[].id` | an address segment | no | The event's name within its note — lowercase letters and digits. |
|
|
941
|
+
| `data.events[].kind` | one `eventKind` value | no | What sort of thing happened. |
|
|
942
|
+
| `data.events[].depth` | one `depth` value | no | How far the event's history reaches. |
|
|
943
|
+
| `data.events[].when` | a date, or `"0.<day>"` | yes | When it happened, or the anchor and first instance of an event that recurs. |
|
|
944
|
+
| `data.events[].until` | a date | no | When a continuous event ended, or where a recurring series stopped. |
|
|
945
|
+
| `data.events[].recurs` | `{ every }` or `{ on }` | no | How further occurrences are found; absent for an event that happened once. |
|
|
946
|
+
| `data.events[].recurs.every` | a whole number of years, 1 or more | no | A period counted on the canonical axis from `when`. |
|
|
947
|
+
| `data.events[].recurs.on` | a list of dates, strictly increasing, each later than `when` | no | Recorded occurrences beyond the first, in place of a period. |
|
|
948
|
+
| `data.events[].summary` | a string | yes | What happened, stated plainly. |
|
|
949
|
+
| `data.events[].standing` | one `standing` value | no | What the world's evidence supports. |
|
|
950
|
+
| `data.events[].names` | `{ name, by, gloss? }[]` | no | The event's names in the world, each with who uses it. |
|
|
951
|
+
| `data.events[].names[].name` | a string | yes | One name the event goes by in the world. |
|
|
952
|
+
| `data.events[].names[].by` | an Address naming an `affiliation`, `lore`, `place`, `being` or `skill` note | yes | Who uses that name — a people, a polity, a faith, a place, a tongue. |
|
|
953
|
+
| `data.events[].names[].gloss` | a string | no | What the name means, or how it is used. |
|
|
954
|
+
| `data.events[].where` | `{ locus?, reach? }` | no | Where it happened, and where it was felt. |
|
|
955
|
+
| `data.events[].where.locus` | a list of Addresses, each defaulting to `place` | no | Where the event physically happened; each resolves to a place. |
|
|
956
|
+
| `data.events[].where.reach` | `{ place, how, knowledge, attributedTo? }[]` | no | Where the event was felt, and whether each place knows why. |
|
|
957
|
+
| `data.events[].where.reach[].place` | an Address, defaulting to `place` | yes | A place where the event was felt. |
|
|
958
|
+
| `data.events[].where.reach[].how` | a string | yes | One clause: a consequence someone in that place could notice. |
|
|
959
|
+
| `data.events[].where.reach[].knowledge` | one `knowledge` value | yes | Whether that place connects what it felt to this event. |
|
|
960
|
+
| `data.events[].where.reach[].attributedTo` | an Address, defaulting to `lore`, naming an event or a `lore` note | no | Only beside `knowledge: misattributed` — the cause that place names instead. |
|
|
961
|
+
| `data.events[].who` | `{ ref, role }[]` | no | Who took part, and as what. |
|
|
962
|
+
| `data.events[].who[].ref` | an Address naming a `being`, `affiliation` or `lore` note | yes | A participant — a being, a people, an affiliation. |
|
|
963
|
+
| `data.events[].who[].role` | one `role` value | yes | What the participant was to the event. |
|
|
964
|
+
| `data.events[].follows` | `{ event, how, note? }[]` | no | The earlier events this one follows from. |
|
|
965
|
+
| `data.events[].follows[].event` | an Address, defaulting to `lore`, anchored to an `event` where its note holds several | yes | The earlier event; it resolves to exactly one event. |
|
|
966
|
+
| `data.events[].follows[].how` | one `followsHow` value | yes | How this event follows from it. |
|
|
967
|
+
| `data.events[].follows[].note` | a string | no | One clause saying what connects the two. |
|
|
968
|
+
| `data.events[].accounts` | `{ by, says, agrees, withholds? }[]` | no | What each people, polity, faith or place says about it. |
|
|
969
|
+
| `data.events[].accounts[].by` | an Address naming an `affiliation`, `lore`, `place` or `being` note | yes | Who holds the account. |
|
|
970
|
+
| `data.events[].accounts[].says` | a string | yes | What they say happened, in their terms. |
|
|
971
|
+
| `data.events[].accounts[].agrees` | one `agrees` value | yes | How far their account agrees with `summary`. |
|
|
972
|
+
| `data.events[].accounts[].withholds` | a string | no | What they decline to say. |
|
|
973
|
+
| `data.events[].unresolved` | a list of strings | no | What the world itself has not settled. |
|
|
974
|
+
| `data.events[].sources` | a list of Addresses | no | The notes that state or support the event; each resolves. |
|
|
975
|
+
| `data.events[].stated` | `{ calendar, text }` | no | The date as one tradition writes it in its own reckoning. |
|
|
976
|
+
| `data.events[].stated.calendar` | an Address, or a lore shortcode | yes | The calendar that tradition reckons in — a `lore` note with `subType: calendar`. |
|
|
977
|
+
| `data.events[].stated.text` | a string | yes | The date as that tradition writes it. |
|
|
978
|
+
| `data.settlements.rows` | a list of settlement rows | yes | One row per settlement. |
|
|
979
|
+
| `data.settlements.rows[].place` | a place Address | no | The existing settlement note; exclusive with name. |
|
|
980
|
+
| `data.settlements.rows[].name` | plain text | no | A settlement without a note; exclusive with place. |
|
|
981
|
+
| `data.settlements.rows[].market` | a market class, 1 to 6 | yes | What trade the settlement supports. |
|
|
982
|
+
| `data.settlements.rows[].population` | a positive whole number | yes | How many people live here. |
|
|
983
|
+
| `data.settlements.rows[].heldBy` | an affiliation or being Address | no | What holds the settlement's land, where its culture holds land; what the holder is says how it is held. |
|
|
984
|
+
| `data.settlements.rows[].for` | plain text | no | Optional reason the settlement exists. |
|
|
985
|
+
| `data.settlements.tail` | a nonempty sentence | yes | What the table leaves out. |
|
|
986
|
+
| `data.borders[].to` | the other place — its shortcode, or its Address | yes | The other place, by Address; the type defaults to `place`. |
|
|
987
|
+
| `data.borders[].bearing` | one of N, NE, E, SE, S, SW, W, NW | yes | Where the other place lies from here. |
|
|
988
|
+
| `data.routes[].to` | the other place — its shortcode, or its Address | yes | The other place, by Address; the type defaults to `place`. |
|
|
989
|
+
| `data.routes[].bearing` | one of N, NE, E, SE, S, SW, W, NW | yes | Where the other place lies from here. |
|
|
990
|
+
| `data.routes[].mode` | one of land, boat, ship | yes | How the journey is travelled. |
|
|
991
|
+
| `data.routes[].days` | one of 1, 2, 3, 5, 10, 20, 30, 45, 60, 90, 180, 360 | yes | About how many days the journey takes, under normal conditions. |
|
|
992
|
+
| `data.routes[].terrain` | a list of terrains in travel order | no | The terrains crossed, in travel order, each crossable by the mode. |
|
|
993
|
+
| `data.routes[].leagues` | a distance in leagues | no | The distance, in leagues. |
|
|
980
994
|
|
|
981
995
|
### scenario
|
|
982
996
|
|
|
@@ -989,7 +1003,6 @@ Lore records in-world knowledge. A `culture` describes a people; a `custom` desc
|
|
|
989
1003
|
| `data.cast` | list of Addresses | Beings who appear in it. |
|
|
990
1004
|
| `data.factions` | list of Addresses | Affiliations with a stake in it. |
|
|
991
1005
|
| `data.follows` | list of Addresses | Scenarios that should be played before this one. |
|
|
992
|
-
| `data.status` | string | `draft`, `playtested` or `published`. |
|
|
993
1006
|
| `data.party.size` | string | `solo`, `small`, `standard`, `large` or `host`. |
|
|
994
1007
|
| `data.party.archetypes` | list of strings | Archetypes the scenario is written for. |
|
|
995
1008
|
|
|
@@ -1014,60 +1027,60 @@ Lore records in-world knowledge. A `culture` describes a people; a `custom` desc
|
|
|
1014
1027
|
|
|
1015
1028
|
**Inner keys** — a key a field's value does not declare is an error at its own line and column.
|
|
1016
1029
|
|
|
1017
|
-
| Key | Shape | Required | Meaning
|
|
1018
|
-
| ------------------------------------------------------ | --------------------------------------------------------------------- | -------- |
|
|
1019
|
-
| `data.rules.normalization` | "NFC" | yes | Required value: "NFC".
|
|
1020
|
-
| `data.rules.matching` | "longest-first" | yes | Required value: "longest-first".
|
|
1021
|
-
| `data.rules.roundTrip` | a string | no | Exact by default; canonical permits aliases and empty code sequences and decodes an authored conventional spelling.
|
|
1022
|
-
| `data.rules.word-separators` | a list of nonempty NFC source sequences | no | Source word dividers written as shared spaces, after contextual alternatives; cannot also be ordinary mappings or replace shared punctuation.
|
|
1023
|
-
| `data.rules.case` | a map | no | Case handling for letters and consonant groups.
|
|
1024
|
-
| `data.rules.case.single-letter` | "preserve" | yes | Required value: "preserve".
|
|
1025
|
-
| `data.rules.case.consonant-group` | "lowercase-or-initial-uppercase" | yes | Required value: "lowercase-or-initial-uppercase".
|
|
1026
|
-
| `data.rules.case.other-group-cases` | "forbidden" | yes | Required value: "forbidden".
|
|
1027
|
-
| `data.rules.stress` | a map | no | The font's nonprinting stress modifier after an acute vowel.
|
|
1028
|
-
| `data.rules.stress.modifier` | a string | yes | The font code for U+E0114.
|
|
1029
|
-
| `data.rules.stress.position` | "after-stressed-vowel" | yes | Required value: "after-stressed-vowel".
|
|
1030
|
-
| `data.rules.stress.printing` | false | yes | Required value: false.
|
|
1031
|
-
| `data.rules.stress.effect` | "stress-only" | yes | Required value: "stress-only".
|
|
1032
|
-
| `data.rules.stress.changes-sound` | false | yes | Required value: false.
|
|
1033
|
-
| `data.rules.stress.changes-length` | false | yes | Required value: false.
|
|
1034
|
-
| `data.rules.stress.vowel-group-position` | "first-vowel" | yes | Required value: "first-vowel".
|
|
1035
|
-
| `data.rules.vowel-groups` | a map | no | Explicit recognized vowel groups and their acute placement.
|
|
1036
|
-
| `data.rules.vowel-groups.reading` | "established" | yes | Required value: "established".
|
|
1037
|
-
| `data.rules.vowel-groups.allow-splitting` | false | yes | Required value: false.
|
|
1038
|
-
| `data.rules.vowel-groups.unrecognized-adjacent-vowels` | "separate" | yes | Required value: "separate".
|
|
1039
|
-
| `data.rules.vowel-groups.groups` | a list of vowel groups | yes | The complete authored group inventory.
|
|
1040
|
-
| `data.rules.diaeresis` | a map | no | Whether diaeresis
|
|
1041
|
-
| `data.rules.diaeresis.allowed` | true or false | yes | False forbids the
|
|
1042
|
-
| `data.rules.grave-accent` | a map | no | Whether grave-accent mappings are allowed.
|
|
1043
|
-
| `data.rules.grave-accent.allowed` | true or false | yes | False forbids the accent; true permits explicitly mapped and accepted characters.
|
|
1044
|
-
| `data.rules.contextual-mappings` | a list of conditional mappings | no | Alternatives conditioned on the following letter or source position, applied before unconditional mappings.
|
|
1045
|
-
| `data.rules.contextual-mappings[].match` | a string | yes | The source sequence.
|
|
1046
|
-
| `data.rules.contextual-mappings[].before` | a string | no | Match before a declared vowel or another letter.
|
|
1047
|
-
| `data.rules.contextual-mappings[].at` | a string | no | Match at word start, word end or line start.
|
|
1048
|
-
| `data.rules.contextual-mappings[].emit` | a glyph code or list of codes (empty only with canonical round trips) | yes | The font codes written by this alternative.
|
|
1049
|
-
| `data.rules.y` | a map | no | The consonant reading of y.
|
|
1050
|
-
| `data.rules.y.kind` | "consonant" | yes | Required value: "consonant".
|
|
1051
|
-
| `data.rules.y.sound` | "y in yes" | yes | Required value: "y in yes".
|
|
1052
|
-
| `data.rules.y.vowel-reading` | false | yes | Required value: false.
|
|
1053
|
-
| `data.concepts[].id` | lowercase letters, digits and `-` | yes | The concept's id, which a word's `concept` names. Unique in the package.
|
|
1054
|
-
| `data.concepts[].gloss` | a short gloss, such as `a smell; a scent` | yes | What the concept means, in brief.
|
|
1055
|
-
| `data.concepts[].group` | a group name, such as `senses` | yes | The group the report lists the concept under.
|
|
1056
|
-
| `data.sounds.letters` | list of `{ letters, kind, like?, place?, ipa?, tongue? }` | no | The letters the language writes, and the sounds they stand for.
|
|
1057
|
-
| `data.sounds.letters[].letters` | a list of letters | yes | The letters or digraphs the row describes, as written.
|
|
1058
|
-
| `data.sounds.letters[].kind` | a string, such as `consonant` or `long vowel` | yes | What kind of sound they write.
|
|
1059
|
-
| `data.sounds.letters[].like` | a string | no | What they sound like; absent where the row states only their kind and place.
|
|
1060
|
-
| `data.sounds.letters[].place` | a string, such as `lips` or `tongue-tip` | no | Where in the mouth they are made.
|
|
1061
|
-
| `data.sounds.letters[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | The sounds they write, in the International Phonetic Alphabet.
|
|
1062
|
-
| `data.sounds.letters[].tongue` | a tag or a language note's Address, or a list of them | no | The tongues that write them, each a tag `data.tongues` declares or the Address of a language note; every one where absent. A `doc` note's rows name language notes only.
|
|
1063
|
-
| `data.sounds.marks` | list of `{ mark, letters, kind, limit }` | no | The marks the language writes on its letters.
|
|
1064
|
-
| `data.sounds.marks[].mark` | a string, such as `acute` | yes | The mark's name.
|
|
1065
|
-
| `data.sounds.marks[].letters` | a list of letters | yes | The letters that carry it.
|
|
1066
|
-
| `data.sounds.marks[].kind` | one of stress, length, apart
|
|
1067
|
-
| `data.sounds.marks[].limit` | one of one, any | yes | How many a word may carry: `one` at most, or `any`.
|
|
1068
|
-
| `data.metres[].name` | string | yes | What a verse div's `scan=` names the metre by: lowercase letters, digits and `-`, unique in the package.
|
|
1069
|
-
| `data.metres[].beats` | a whole number above zero | yes | The beats of one line.
|
|
1070
|
-
| `data.metres[].kind` | one of accentual | yes | How the beats are counted: `accentual`, one beat for each stressed syllable the language's stress rule and the beat convention give.
|
|
1030
|
+
| Key | Shape | Required | Meaning |
|
|
1031
|
+
| ------------------------------------------------------ | --------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1032
|
+
| `data.rules.normalization` | "NFC" | yes | Required value: "NFC". |
|
|
1033
|
+
| `data.rules.matching` | "longest-first" | yes | Required value: "longest-first". |
|
|
1034
|
+
| `data.rules.roundTrip` | a string | no | Exact by default; canonical permits aliases and empty code sequences and decodes an authored conventional spelling. |
|
|
1035
|
+
| `data.rules.word-separators` | a list of nonempty NFC source sequences | no | Source word dividers written as shared spaces, after contextual alternatives; cannot also be ordinary mappings or replace shared punctuation. |
|
|
1036
|
+
| `data.rules.case` | a map | no | Case handling for letters and consonant groups. |
|
|
1037
|
+
| `data.rules.case.single-letter` | "preserve" | yes | Required value: "preserve". |
|
|
1038
|
+
| `data.rules.case.consonant-group` | "lowercase-or-initial-uppercase" | yes | Required value: "lowercase-or-initial-uppercase". |
|
|
1039
|
+
| `data.rules.case.other-group-cases` | "forbidden" | yes | Required value: "forbidden". |
|
|
1040
|
+
| `data.rules.stress` | a map | no | The font's nonprinting stress modifier after an acute vowel. |
|
|
1041
|
+
| `data.rules.stress.modifier` | a string | yes | The font code for U+E0114. |
|
|
1042
|
+
| `data.rules.stress.position` | "after-stressed-vowel" | yes | Required value: "after-stressed-vowel". |
|
|
1043
|
+
| `data.rules.stress.printing` | false | yes | Required value: false. |
|
|
1044
|
+
| `data.rules.stress.effect` | "stress-only" | yes | Required value: "stress-only". |
|
|
1045
|
+
| `data.rules.stress.changes-sound` | false | yes | Required value: false. |
|
|
1046
|
+
| `data.rules.stress.changes-length` | false | yes | Required value: false. |
|
|
1047
|
+
| `data.rules.stress.vowel-group-position` | "first-vowel" | yes | Required value: "first-vowel". |
|
|
1048
|
+
| `data.rules.vowel-groups` | a map | no | Explicit recognized vowel groups and their acute placement. |
|
|
1049
|
+
| `data.rules.vowel-groups.reading` | "established" | yes | Required value: "established". |
|
|
1050
|
+
| `data.rules.vowel-groups.allow-splitting` | false | yes | Required value: false. |
|
|
1051
|
+
| `data.rules.vowel-groups.unrecognized-adjacent-vowels` | "separate" | yes | Required value: "separate". |
|
|
1052
|
+
| `data.rules.vowel-groups.groups` | a list of vowel groups | yes | The complete authored group inventory. |
|
|
1053
|
+
| `data.rules.diaeresis` | a map | no | Whether diaeresis vowels are allowed, and how they are written. |
|
|
1054
|
+
| `data.rules.diaeresis.allowed` | true or false | yes | False forbids the diaeresis; true derives plain-vowel mappings and restores splits where a declared group's native mapping distinguishes joined and separate vowels. Exact conversion refuses an unrecoverable derived group split; canonical conversion keeps its conventional reading. |
|
|
1055
|
+
| `data.rules.grave-accent` | a map | no | Whether grave-accent mappings are allowed. |
|
|
1056
|
+
| `data.rules.grave-accent.allowed` | true or false | yes | False forbids the accent; true permits explicitly mapped and accepted characters. |
|
|
1057
|
+
| `data.rules.contextual-mappings` | a list of conditional mappings | no | Alternatives conditioned on the following letter or source position, applied before unconditional mappings. |
|
|
1058
|
+
| `data.rules.contextual-mappings[].match` | a string | yes | The source sequence. |
|
|
1059
|
+
| `data.rules.contextual-mappings[].before` | a string | no | Match before a declared vowel or another letter. |
|
|
1060
|
+
| `data.rules.contextual-mappings[].at` | a string | no | Match at word start, word end or line start. |
|
|
1061
|
+
| `data.rules.contextual-mappings[].emit` | a glyph code or list of codes (empty only with canonical round trips) | yes | The font codes written by this alternative. |
|
|
1062
|
+
| `data.rules.y` | a map | no | The consonant reading of y. |
|
|
1063
|
+
| `data.rules.y.kind` | "consonant" | yes | Required value: "consonant". |
|
|
1064
|
+
| `data.rules.y.sound` | "y in yes" | yes | Required value: "y in yes". |
|
|
1065
|
+
| `data.rules.y.vowel-reading` | false | yes | Required value: false. |
|
|
1066
|
+
| `data.concepts[].id` | lowercase letters, digits and `-` | yes | The concept's id, which a word's `concept` names. Unique in the package. |
|
|
1067
|
+
| `data.concepts[].gloss` | a short gloss, such as `a smell; a scent` | yes | What the concept means, in brief. |
|
|
1068
|
+
| `data.concepts[].group` | a group name, such as `senses` | yes | The group the report lists the concept under. |
|
|
1069
|
+
| `data.sounds.letters` | list of `{ letters, kind, like?, place?, ipa?, tongue? }` | no | The letters the language writes, and the sounds they stand for. |
|
|
1070
|
+
| `data.sounds.letters[].letters` | a list of letters | yes | The letters or digraphs the row describes, as written. |
|
|
1071
|
+
| `data.sounds.letters[].kind` | a string, such as `consonant` or `long vowel` | yes | What kind of sound they write. |
|
|
1072
|
+
| `data.sounds.letters[].like` | a string | no | What they sound like; absent where the row states only their kind and place. |
|
|
1073
|
+
| `data.sounds.letters[].place` | a string, such as `lips` or `tongue-tip` | no | Where in the mouth they are made. |
|
|
1074
|
+
| `data.sounds.letters[].ipa` | a string in the International Phonetic Alphabet, such as `ʃ` | no | The sounds they write, in the International Phonetic Alphabet. |
|
|
1075
|
+
| `data.sounds.letters[].tongue` | a tag or a language note's Address, or a list of them | no | The tongues that write them, each a tag `data.tongues` declares or the Address of a language note; every one where absent. A `doc` note's rows name language notes only. |
|
|
1076
|
+
| `data.sounds.marks` | list of `{ mark, letters, kind, limit }` | no | The marks the language writes on its letters. |
|
|
1077
|
+
| `data.sounds.marks[].mark` | a string, such as `acute` | yes | The mark's name. |
|
|
1078
|
+
| `data.sounds.marks[].letters` | a list of letters | yes | The letters that carry it. |
|
|
1079
|
+
| `data.sounds.marks[].kind` | one of stress, length, apart, quality, tone | yes | What the mark says of its letter. |
|
|
1080
|
+
| `data.sounds.marks[].limit` | one of one, any | yes | How many a word may carry: `one` at most, or `any`. |
|
|
1081
|
+
| `data.metres[].name` | string | yes | What a verse div's `scan=` names the metre by: lowercase letters, digits and `-`, unique in the package. |
|
|
1082
|
+
| `data.metres[].beats` | a whole number above zero | yes | The beats of one line. |
|
|
1083
|
+
| `data.metres[].kind` | one of accentual | yes | How the beats are counted: `accentual`, one beat for each stressed syllable the language's stress rule and the beat convention give. |
|
|
1071
1084
|
|
|
1072
1085
|
### macro
|
|
1073
1086
|
|