@heroiclands/package-build 25.1.2 → 25.1.3
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 +7 -0
- package/docs/encoding-core.md +11 -0
- package/docs/reference/format-details.md +30 -2
- package/docs/reference/note-types.md +258 -257
- package/engine/encoding-lexicon.mjs +12 -2
- package/engine/language-names.mjs +67 -8
- package/engine/note-vocabulary.mjs +22 -2
- package/package.json +1 -1
- package/types/engine/language-names.d.mts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @heroiclands/package-build
|
|
2
2
|
|
|
3
|
+
## 25.1.3
|
|
4
|
+
|
|
5
|
+
**Spelling checks**
|
|
6
|
+
|
|
7
|
+
- A language written in a script made only of glyph codes no longer fails the spelling check on its roman words and names.
|
|
8
|
+
- English names a language uses, such as bynames, go under `data.names.en`, are never checked against the language's encoding, and a name pattern reaches them as `{en.epithet}`.
|
|
9
|
+
|
|
3
10
|
## 25.1.2
|
|
4
11
|
|
|
5
12
|
**Build speed**
|
package/docs/encoding-core.md
CHANGED
|
@@ -125,6 +125,17 @@ abstract roots are excluded. Bound-element edge hyphens mark joining positions.
|
|
|
125
125
|
These are bare Roman checks, so a native writing cannot bypass spelling rules.
|
|
126
126
|
Different case and multiword names retain their authored spelling.
|
|
127
127
|
|
|
128
|
+
A **codes-only** encoding accepts no letter: a script written entirely as
|
|
129
|
+
glyph codes, such as `⟦ONE⟧`, with no letter in its `accepts` or mappings. The
|
|
130
|
+
language's Roman words and names are not checked against it, since none of
|
|
131
|
+
them is written in it. Its own native writings are checked as any other
|
|
132
|
+
encoding's are: a code the font does not draw, or a second writing for one
|
|
133
|
+
encoding and face, is an error at the writing. A language holding both kinds of
|
|
134
|
+
encoding has its Roman forms checked against the lettered one only.
|
|
135
|
+
|
|
136
|
+
English names under a language's `data.names.en` are not encoded and are not
|
|
137
|
+
checked against any encoding.
|
|
138
|
+
|
|
128
139
|
Every encoding inherits the shared standard's fifteen Roman punctuation
|
|
129
140
|
mappings, verse and name controls, and literal boundaries. `‼` marks an
|
|
130
141
|
imperative and `!` an exclamation. An explicit mapping can give a standard
|
|
@@ -4808,6 +4808,12 @@ language:
|
|
|
4808
4808
|
every given list together where that gender has none. `{given.<gender>}`
|
|
4809
4809
|
draws from that gender's list whatever the person's gender, as a patronymic
|
|
4810
4810
|
draws a father's name.
|
|
4811
|
+
- `en` holds English names, in groups of lists. A group is named by letters,
|
|
4812
|
+
digits and underscores, beginning with a letter, and a pattern reaches it by
|
|
4813
|
+
its dotted path: `{en.epithet}` draws from `en.epithet` as `{given.male}`
|
|
4814
|
+
draws from the male given names. The English names are never encoded in the
|
|
4815
|
+
tongue's script and are never checked against its spelling. A bare `{en}`
|
|
4816
|
+
names no list.
|
|
4811
4817
|
- Every other key is a list of names that the placeholder of the same name
|
|
4812
4818
|
draws from. A list name is letters, digits and underscores, beginning with a
|
|
4813
4819
|
letter.
|
|
@@ -4842,6 +4848,25 @@ person's gender: _Agosi ez Zileti_ fits a woman and not a man, and _Aguri ez
|
|
|
4842
4848
|
Lut_ fits nobody, because _Lut_ is not in `place`. Names compare in Unicode
|
|
4843
4849
|
NFC, so a precomposed and a decomposed accent are the same letter.
|
|
4844
4850
|
|
|
4851
|
+
A tongue whose people carry English bynames states them under `en`:
|
|
4852
|
+
|
|
4853
|
+
```yaml
|
|
4854
|
+
shortcode: northlng
|
|
4855
|
+
name: { full: Northern Language }
|
|
4856
|
+
type: skill
|
|
4857
|
+
subType: language
|
|
4858
|
+
data:
|
|
4859
|
+
names:
|
|
4860
|
+
pattern: "{given} the {en.epithet}"
|
|
4861
|
+
given:
|
|
4862
|
+
female: [Astrid, Gróa]
|
|
4863
|
+
male: [Ulf, Thornak]
|
|
4864
|
+
en:
|
|
4865
|
+
epithet: [cruel, cutthroat, merciless]
|
|
4866
|
+
```
|
|
4867
|
+
|
|
4868
|
+
A person drawn from these lists is called something like _Ulf the cutthroat_.
|
|
4869
|
+
|
|
4845
4870
|
A tongue whose people carry a parent's name, with an ending that depends on
|
|
4846
4871
|
their own gender, keys its patterns by gender:
|
|
4847
4872
|
|
|
@@ -4869,7 +4894,8 @@ pattern.
|
|
|
4869
4894
|
`package-build lint` checks the lists, with a finding at the pattern, list,
|
|
4870
4895
|
name or key at fault: a pattern with an unmatched brace or no placeholder, a
|
|
4871
4896
|
placeholder that names no list, a `{given.<gender>}` whose gender has no given
|
|
4872
|
-
list, a dotted placeholder on a list other than `given
|
|
4897
|
+
list, a dotted placeholder on a list other than `given` or `en`, an
|
|
4898
|
+
`{en.<list>}` naming no list of `en`, a bare `{en}`, a list that no pattern
|
|
4873
4899
|
names, a list name a placeholder cannot spell, an empty list of patterns or of
|
|
4874
4900
|
names, an empty name, a missing `pattern` or `given`, a missing `female` or
|
|
4875
4901
|
`male` list, and a `pattern` or `given` key that is not a gender.
|
|
@@ -5928,10 +5954,12 @@ SoHL sets `system.quantity` to `1` for each compendium item.
|
|
|
5928
5954
|
| `templatePriority` | `number` | Template priority, _null_ = not a template |
|
|
5929
5955
|
| `masteryLevel` | `number` | HM3 mastery level |
|
|
5930
5956
|
| `parentSkill` | `Address` | Parent skill this skill specializes |
|
|
5931
|
-
| `names` | `{ pattern, given, <name>... }`
|
|
5957
|
+
| `names` | `{ pattern, given, en?, <name>... }` | `language` only: how its speakers are named, for `package-build npc new` — see [name lists](#name-lists) |
|
|
5932
5958
|
| `names.pattern` | `string`, `string[]` or map of `gender` words to either, required | Placeholders such as `{given}`, `{given.male}` and `{clan}`, each naming a list, with literal text around them; a list states several forms, a map each gender's forms |
|
|
5933
5959
|
| `names.given` | map of `gender` words to lists of names, required | Given names by gender; `female` and `male` are required |
|
|
5934
5960
|
| `names.given.<name>` | `string[]` | The given names of one gender |
|
|
5961
|
+
| `names.en` | map of list names to lists of English names | English names, never encoded in the tongue's script; a pattern draws from one list as `{en.<list>}` |
|
|
5962
|
+
| `names.en.<name>` | `string[]` | A list of English names, such as `epithet` |
|
|
5935
5963
|
| `names.<name>` | `string[]` | A list the placeholder of the same name draws from |
|
|
5936
5964
|
| `family` | `Address` | `language` only: the parent language, naming a skill note with `subType: language`; this language reads the parent's words as its own — see [a language's words](#a-languages-words) |
|
|
5937
5965
|
| `abbreviation` | `string` | `language` only: the tag a dictionary prints for it, as `Prov.`; its full name where unstated — see [dictionaries and glossaries](#dictionaries-and-glossaries) |
|