polytypo 1.17.2 → 1.17.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/polytypo/data/VERSION +1 -1
  3. data/lib/polytypo/data/fixtures/bg.json +1 -1
  4. data/lib/polytypo/data/fixtures/cs.json +1 -1
  5. data/lib/polytypo/data/fixtures/de-CH.json +1 -1
  6. data/lib/polytypo/data/fixtures/de-DE.json +9 -26
  7. data/lib/polytypo/data/fixtures/el.json +1 -1
  8. data/lib/polytypo/data/fixtures/en-GB.json +1 -1
  9. data/lib/polytypo/data/fixtures/en-US.json +154 -516
  10. data/lib/polytypo/data/fixtures/es.json +1 -1
  11. data/lib/polytypo/data/fixtures/fi.json +1 -1
  12. data/lib/polytypo/data/fixtures/fr-CA.json +1 -1
  13. data/lib/polytypo/data/fixtures/fr.json +12 -37
  14. data/lib/polytypo/data/fixtures/hr.json +1 -1
  15. data/lib/polytypo/data/fixtures/hu.json +1 -1
  16. data/lib/polytypo/data/fixtures/it.json +1 -1
  17. data/lib/polytypo/data/fixtures/locale-resolution.json +1 -1
  18. data/lib/polytypo/data/fixtures/lt.json +1 -1
  19. data/lib/polytypo/data/fixtures/nl.json +1 -1
  20. data/lib/polytypo/data/fixtures/pl.json +1 -1
  21. data/lib/polytypo/data/fixtures/pt-BR.json +1 -1
  22. data/lib/polytypo/data/fixtures/pt-PT.json +1 -1
  23. data/lib/polytypo/data/fixtures/ro.json +1 -1
  24. data/lib/polytypo/data/fixtures/ru.json +1 -1
  25. data/lib/polytypo/data/fixtures/sk.json +1 -1
  26. data/lib/polytypo/data/fixtures/sl.json +1 -1
  27. data/lib/polytypo/data/fixtures/sr.json +1 -1
  28. data/lib/polytypo/data/fixtures/sv.json +1 -1
  29. data/lib/polytypo/data/fixtures/tr.json +1 -1
  30. data/lib/polytypo/data/fixtures/uk.json +1 -1
  31. data/lib/polytypo/data/locales/registry.json +1 -1
  32. data/lib/polytypo/data/rules/order.json +1 -1
  33. data/lib/polytypo/version.rb +1 -1
  34. metadata +1 -1
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "es",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "fi",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "fr-CA",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "fr",
4
4
  "cases": [
5
5
  {
@@ -752,9 +752,7 @@
752
752
  "rule": "nbsp",
753
753
  "mode": "markdown",
754
754
  "dialect": "commonmark",
755
- "frontmatterKeys": [
756
- "title"
757
- ],
755
+ "frontmatterKeys": ["title"],
758
756
  "in": "---\ntitle: \"Chapitre 1: le début\"\ndate: \"2026-09-25\"\n---\n\nVoici: le corps.\n",
759
757
  "out": "---\ntitle: \"Chapitre 1 : le début\"\ndate: \"2026-09-25\"\n---\n\nVoici : le corps.\n",
760
758
  "note": "modes.md §3.7.4 with the locale that made §3.7.3 skip the block in the first place: inside a listed quoted scalar a colon is content, so fr inserts its narrow no-break space, while the unlisted date field and the key itself keep every byte. That contrast is the whole argument for a caller-named list."
@@ -863,9 +861,7 @@
863
861
  "id": "fr-yaml-narrow-space-in-quoted",
864
862
  "rule": "nbsp",
865
863
  "mode": "yaml",
866
- "keys": [
867
- "description"
868
- ],
864
+ "keys": ["description"],
869
865
  "in": "description: \"Une note !\"\n",
870
866
  "out": "description: \"Une note !\"\n",
871
867
  "note": "modes.md §3.8.6: a quoted scalar's content is one span, and French spacing applies inside it exactly as in text mode."
@@ -874,9 +870,7 @@
874
870
  "id": "fr-yaml-no-space-across-colon-split",
875
871
  "rule": "nbsp",
876
872
  "mode": "yaml",
877
- "keys": [
878
- "description"
879
- ],
873
+ "keys": ["description"],
880
874
  "in": "description: prose:more prose\n",
881
875
  "out": "description: prose:more prose\n",
882
876
  "note": "modes.md §3.8.6: the `:` is outside every span, so the insertion `nbsp` would make before it lands on a span edge and is discarded by §3.4. This is the accepted cost of the split, and it is what keeps the scalar parseable."
@@ -885,9 +879,7 @@
885
879
  "id": "fr-yaml-guillemets-across-block-lines",
886
880
  "rule": "quotes",
887
881
  "mode": "yaml",
888
- "keys": [
889
- "description"
890
- ],
882
+ "keys": ["description"],
891
883
  "in": "description: |\n Il a dit \"bonjour\n monsieur\" et il est parti\n",
892
884
  "out": "description: |\n Il a dit « bonjour\n monsieur » et il est parti\n",
893
885
  "note": "modes.md §3.2 model C in a locale whose quotation output is guillemets plus U+00A0 rather than curly quotes — structurally different from the en-US case of the same shape."
@@ -953,9 +945,7 @@
953
945
  "id": "fr-yaml-plain-elision",
954
946
  "rule": "apostrophe",
955
947
  "mode": "yaml",
956
- "keys": [
957
- "description"
958
- ],
948
+ "keys": ["description"],
959
949
  "in": "description: l'idee et l'autre\n",
960
950
  "out": "description: l’idee et l’autre\n",
961
951
  "note": "modes.md §3.8.6 in a locale where the apostrophe is elision rather than possession: the same cell as en-us-yaml-plain-apostrophe, and §8 item 4's requirement that a construct be pinned in more than one locale rather than the same English output with the locale field changed."
@@ -964,9 +954,7 @@
964
954
  "id": "fr-yaml-single-quoted-escape-elision-stays",
965
955
  "rule": "apostrophe",
966
956
  "mode": "yaml",
967
- "keys": [
968
- "description"
969
- ],
957
+ "keys": ["description"],
970
958
  "in": "description: 'l''idee et l''autre'\n",
971
959
  "out": "description: 'l''idee et l''autre'\n",
972
960
  "note": "modes.md §3.8.6: in a locale where the apostrophe is elision, the unit is the elision, and it is outside every span. The scalar has nothing else to convert and comes back unchanged — the cost §7.13 measures, pinned so that it is a documented property and not a surprise."
@@ -975,9 +963,7 @@
975
963
  "id": "fr-yaml-single-quoted-escape-split",
976
964
  "rule": "dashes",
977
965
  "mode": "yaml",
978
- "keys": [
979
- "description"
980
- ],
966
+ "keys": ["description"],
981
967
  "in": "description: 'l''idee -- et ''l''autre...'\n",
982
968
  "out": "description: 'l''idee — et ''l''autre…'\n",
983
969
  "note": "modes.md §3.8.6: a spaced dash and an ellipsis interior to a span convert, either side of units; the elisions stay straight."
@@ -986,9 +972,7 @@
986
972
  "id": "fr-yaml-single-quoted-escape-growth-declined",
987
973
  "rule": "dashes",
988
974
  "mode": "yaml",
989
- "keys": [
990
- "description"
991
- ],
975
+ "keys": ["description"],
992
976
  "in": "description: 'a''--''b'\n",
993
977
  "out": "description: 'a''--''b'\n",
994
978
  "note": "modes.md §3.8.6 and §3.4: `fr` is a `-spaced` locale, so the dash would grow from 2 to 3 code points against a unit. The edge-growth rule discards it, as it does against `:` and `#`. The en-US case with the same input is applied, which is what makes this one discriminate."
@@ -997,9 +981,7 @@
997
981
  "id": "fr-yaml-single-quoted-no-escape",
998
982
  "rule": "dashes",
999
983
  "mode": "yaml",
1000
- "keys": [
1001
- "description"
1002
- ],
984
+ "keys": ["description"],
1003
985
  "in": "description: 'deux -- trois'\n",
1004
986
  "out": "description: 'deux — trois'\n",
1005
987
  "note": "modes.md §3.8.6: a single-quoted scalar with nothing doubled inside it is claimed like any other. The style itself never disables the mode — only the doubling does, which is what the neighbouring case pins."
@@ -1018,10 +1000,7 @@
1018
1000
  "rule": "quotes",
1019
1001
  "mode": "markdown",
1020
1002
  "dialect": "commonmark",
1021
- "frontmatterKeys": [
1022
- "title",
1023
- "slug"
1024
- ],
1003
+ "frontmatterKeys": ["title", "slug"],
1025
1004
  "in": "---\ntitle: \"a\rb\"\nslug: c \"d\"\n---\n\nBody \"q\" here.\n",
1026
1005
  "out": "---\ntitle: \"a\rb\"\nslug: c « d »\n---\n\nBody « q » here.\n",
1027
1006
  "note": "modes.md §3.7.4 per-line U+000D bail in a locale whose quotation marks carry their own spacing, so the declined line and the converted one are visibly different constructions rather than the same English output relabelled (§8 item 4)."
@@ -1030,11 +1009,7 @@
1030
1009
  "id": "fr-yaml-lone-cr-costs-one-line",
1031
1010
  "rule": "quotes",
1032
1011
  "mode": "yaml",
1033
- "keys": [
1034
- "title",
1035
- "slug",
1036
- "summary"
1037
- ],
1012
+ "keys": ["title", "slug", "summary"],
1038
1013
  "in": "title: a \"b\"\nslug: c\rd \"e\"\n",
1039
1014
  "out": "title: a « b »\nslug: c\rd \"e\"\n",
1040
1015
  "note": "modes.md §3.8.4 step 9 in a locale whose quotation marks carry their own spacing: the line with the lone U+000D is declined and the line before it converts, so the cost is one line and not the document."
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "hr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "hu",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "it",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "cases": [
4
4
  {
5
5
  "id": "exact-en-us",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "lt",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "nl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "pl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "pt-BR",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "pt-PT",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "ro",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "ru",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "sk",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "sl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "sr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "sv",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "tr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "locale": "uk",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "$comment": "Locale resolution input. Algorithm is specified in spec/rules/locale-resolution.md and is identical in every runtime — never delegate it to a platform locale-negotiation library. \"spec\" here must track spec/VERSION exactly — it is not itself the global version source; scripts/validate-spec.mjs enforces the match.",
4
4
  "locales": [
5
5
  "en-US",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.17.2",
2
+ "spec": "1.17.3",
3
3
  "$comment": "Single source of truth for pipeline order. Rules run in ascending `order`. Disabling a rule removes it from the sequence and never reorders the rest. Rule ids are public API (see docs/ARCHITECTURE.md section 5). \"spec\" here must track spec/VERSION exactly — it is not itself the global version source; scripts/validate-spec.mjs enforces the match.",
4
4
  "rules": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Polytypo
4
- VERSION = "1.17.2"
4
+ VERSION = "1.17.3"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polytypo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.17.2
4
+ version: 1.17.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iurii Rogulia