polytypo 1.16.0 → 1.17.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.
Files changed (36) 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 +1 -1
  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 +1 -1
  10. data/lib/polytypo/data/fixtures/es.json +20 -4
  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 +1 -1
  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/es.json +2 -2
  32. data/lib/polytypo/data/locales/registry.json +1 -1
  33. data/lib/polytypo/data/rules/dashes.md +3 -2
  34. data/lib/polytypo/data/rules/order.json +1 -1
  35. data/lib/polytypo/version.rb +1 -1
  36. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0bb45c49f6324b998cbae334a40be29c07ebd0b09ce9192016c4ac18e7a0b406
4
- data.tar.gz: 247abf209c0ce1d5ba1e7210912991f9f02cf6fccff0a07d773b69d17009e5fa
3
+ metadata.gz: 425cf39df821d3cebeaf6a7decfd7d5c3620f4b068a4c39aae67fe0557f71cec
4
+ data.tar.gz: 10cc3f7f0b1d42d4ef122eb26b56e002ab155397fd8ade250b200ef39e25e8db
5
5
  SHA512:
6
- metadata.gz: 0c3e8783b3e6f50fb2012b0fbb792e776d872cd5cb9d9354edc806cfc750813653bdf4c85ea56794e4523e9d2e54bafa22a08f1783775271e9283124bd5986ea
7
- data.tar.gz: 963149a6046f54878cf503e259927d4ec07e19b60ead0234c90aa80b01589946a802331eb52f1fde08e432202b10b352868460929d7e4a6a8af766a46b47d7ae
6
+ metadata.gz: 87b57ce75053bc07efe2fdd934b7746319328b9030f3685dc29c7b21cf910e57fb6950216774c5d8d5ebc62ddd4d1bcd4b41a64f587c8986cce992eee1b1094b
7
+ data.tar.gz: f6a62f02aaf26c6976d4fb41690785de8591f15148924502873cdbb96966902314d48a7f759c4cf93c3ec429873881f21dc0ef8b99c9eb9e25ba0dcb06530ba2
@@ -1 +1 @@
1
- 1.16.0
1
+ 1.17.1
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "bg",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "cs",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "de-CH",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "de-DE",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "el",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "en-GB",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "en-US",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "es",
4
4
  "cases": [
5
5
  {
@@ -43,12 +43,28 @@
43
43
  "note": "abbreviatedAfterTerminal = false: la forma de dos puntos tras «?» que usa el ruso no existe en español, así que los dos puntos se completan a U+2026 en vez de conservarse."
44
44
  },
45
45
  {
46
- "id": "es-dashes-parenthetical-none",
46
+ "id": "es-dashes-parenthetical-em-spaced-known-deviation",
47
47
  "rule": "dashes",
48
48
  "mode": "text",
49
49
  "in": "El plan - si existe - fracasa.",
50
- "out": "El plan - si existe - fracasa.",
51
- "note": "dash.parenthetical = \"none\": el DPD prescribe raya con espacios FUERA del par y ninguno dentro, asimetría que el enum no expresa; mientras tanto la regla no toca nada. Véase la voz dashes de es.json."
50
+ "out": "El plan — si existe — fracasa.",
51
+ "note": "dash.parenthetical = \"em-spaced\", una aproximación fijada por decisión del operador (spec 1.17.1). El DPD prescribe raya con espacios FUERA del par y ninguno dentro («El plan —si existe— fracasa.»); el enum no expresa esa asimetría, así que la salida lleva dos espacios interiores que la norma no admite. Se prefiere a dejar el guion U+002D del autor. Véase la voz dashes de es.json."
52
+ },
53
+ {
54
+ "id": "es-dashes-double-hyphen-em-spaced-known-deviation",
55
+ "rule": "dashes",
56
+ "mode": "text",
57
+ "in": "Caminamos -- casi 3 km -- y estaba cerrada.",
58
+ "out": "Caminamos — casi 3 km — y estaba cerrada.",
59
+ "note": "Misma aproximación que es-dashes-parenthetical-em-spaced-known-deviation, con la forma «--» que se teclea a menudo; los espacios interiores no son los del DPD."
60
+ },
61
+ {
62
+ "id": "es-dashes-compound-hyphen",
63
+ "rule": "dashes",
64
+ "mode": "text",
65
+ "in": "un texto hispano-árabe",
66
+ "out": "un texto hispano-árabe",
67
+ "note": "Guardia P1 de dashes.md §3.2: un guion desnudo y sin espacios es una palabra compuesta y no se toca."
52
68
  },
53
69
  {
54
70
  "id": "es-ranges-guion-none",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "fi",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "fr-CA",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "fr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "hr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "hu",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "it",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "cases": [
4
4
  {
5
5
  "id": "exact-en-us",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "lt",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "nl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "pl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "pt-BR",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "pt-PT",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "ro",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "ru",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "sk",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "sl",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "sr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "sv",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "tr",
4
4
  "cases": [
5
5
  {
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
3
3
  "locale": "uk",
4
4
  "cases": [
5
5
  {
@@ -19,7 +19,7 @@
19
19
  }
20
20
  },
21
21
  "dash": {
22
- "parenthetical": "none",
22
+ "parenthetical": "em-spaced",
23
23
  "range": "none"
24
24
  },
25
25
  "ellipsis": {
@@ -67,7 +67,7 @@
67
67
  "rule": "dashes",
68
68
  "cite": "RAE y ASALE, Diccionario panhispánico de dudas, entrada «raya», apartado 2: «Como el resto de los signos dobles, se escriben pegadas a la primera y a la última palabra del periodo que enmarcan, y separadas por un espacio de la palabra o signo que las precede o las sigue»",
69
69
  "url": "https://www.rae.es/dpd/raya",
70
- "note": "parenthetical = \"none\" POR UN LÍMITE DEL ESQUEMA, no por falta de fuente: la fuente es explícita y prescribe espacios ORDINARIOS FUERA del par y ninguno en los bordes interiores («Llegó —por fin— a casa»). El enum no expresa esa asimetría: \"em-spaced\" pone un espacio a cada lado de CADA raya, que es lo que la frase prohíbe, y \"em-tight\" suprime los exteriores que la frase exige. Mismo caso que el griego (dashes.md §6) y que el italiano de este mismo lote; al repetirse en tres idiomas independientes deja de ser una rareza y pasa a ser una carencia del esquema, registrada aparte para resolverse en su propia versión. Mientras tanto \"none\" es lo único que el archivo puede decir con verdad, y no autoriza a aproximar. Consultado el 18.09.2026."
70
+ "note": "parenthetical = \"em-spaced\" ES UNA APROXIMACIÓN CONSCIENTE, no la norma, y se fijó por decisión del operador (27.10.2026). La fuente es explícita y prescribe espacios ORDINARIOS FUERA del par y ninguno en los bordes interiores («Llegó —por fin— a casa»). El enum no expresa esa asimetría: \"em-spaced\" pone un espacio a cada lado de CADA raya, de modo que el texto resultante lleva dos espacios interiores que el DPD no admite («Llegó — por fin — a casa»); \"em-tight\" suprimiría los exteriores que la frase exige y pegaría la raya a la palabra anterior, que es peor. Se eligió \"em-spaced\" porque conserva la longitud correcta del signo (U+2014, no el guion U+002D que el autor escribió) y los espacios exteriores, y solo falla en los interiores. Mientras el esquema no pueda expresar la asimetría, este valor sigue siendo una aproximación y no indica que el DPD prescriba espacios interiores. Hasta spec 1.16.0 el valor era \"none\" (la regla no tocaba nada). Consultado el 18.09.2026."
71
71
  },
72
72
  {
73
73
  "rule": "ranges",
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
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",
@@ -902,8 +902,9 @@ never reaches a digit-flanked token at all.
902
902
 
903
903
  The first locale with `"none"` on **both** fields, so the rule is a **total no-op** for it in the
904
904
  same provable sense `hyphen` is a no-op for a locale with empty lists. It is no longer the only
905
- one: `es` (spec 1.3.0) and `tr` (spec 1.6.0) are both-`none` too, each for its own reason and each
906
- recorded in its own locale file. This section stays written about `el` because its two fields are
905
+ one: `tr` (spec 1.6.0) is both-`none` too, and `es` was from spec 1.3.0 until 1.17.1, each for its
906
+ own reason and each recorded in its own locale file. (`es` now sets `parenthetical` to `"em-spaced"`
907
+ as a known approximation — see its locale file — and keeps `range` at `"none"`.) This section stays written about `el` because its two fields are
907
908
  `"none"` for two *different* reasons, which is what makes it worth reading. Tokens are still
908
909
  classified — §3.3's "a range token is never reconsidered as a parenthetical" still holds — but no
909
910
  classification has an emission to make. The rows below are therefore all "no change" rows by
@@ -1,5 +1,5 @@
1
1
  {
2
- "spec": "1.16.0",
2
+ "spec": "1.17.1",
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.16.0"
4
+ VERSION = "1.17.1"
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.16.0
4
+ version: 1.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iurii Rogulia