LuaLS / LuaLS/lua-language-server

Annotations `@enum` and `@enum (key)` in JSON output

Offen
#2,530 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Lua
Sterne
4.4k
Forks
442
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Annotations @enum and @enum (key) produce very different JSON output.

Annotation @enum

---@enum level1
---Description of enum level1.
local level1 = {
   low = 1, --Low level.
   high = 2, --High level.
}

This enum creates the following JSON output:

    {
        "defines": [
            {
                "file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
                "finish": 15,
                "start": 9,
                "type": "doc.enum"
            }
        ],
        "desc": "```lua\n{\n    low: integer = 1,\n    high: integer = 2,\n}\n```",
        "fields": [],
        "name": "level1",
        "rawdesc": "```lua\n{\n    low: integer = 1,\n    high: integer = 2,\n}\n```",
        "type": "type"
    },
    {
        "defines": [
            {
                "file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
                "finish": 40007,
                "start": 40003,
                "type": "tablefield"
            }
        ],
        "desc": "High level.",
        "fields": [],
        "name": "level1.high",
        "rawdesc": "High level.",
        "type": "type"
    },
    {
        "defines": [
            {
                "file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
                "finish": 30006,
                "start": 30003,
                "type": "tablefield"
            }
        ],
        "desc": "Low level.",
        "fields": [],
        "name": "level1.low",
        "rawdesc": "Low level.",
        "type": "type"
    },

Issues:

  • First block: start and finish numbers are wrong.
  • Description of enum Description of enum level1. is missing.

Just curious:

  • Why are there 3 separate blocks for this enum? I'd expected block 2 and 3 (enum items) to be sub-blocks of block 1 (enum). This would make it easier reading/postprocessing the JSON file.

Annotation @enum (key)

---@enum (key) level2
---Description of enum level2.
local level2 = {
   low = 1, --Low level.
   high = 2, --High level.
}

This enum create the following JSON output:

   {
        "defines": [
            {
                "file": "file:///home/andreas/Projects/Code/luals2dox/test/./enum/enum-02.lua",
                "finish": 70021,
                "start": 70015,
                "type": "doc.enum"
            }
        ],
        "desc": "```lua\n\"low\" | \"high\"\n```",
        "fields": [],
        "name": "level2",
        "rawdesc": "```lua\n\"low\" | \"high\"\n```",
        "type": "type"
    },

Issues:

  • Description of enum Description of enum level2. is missing.
  • Description of enum items Low level. and High level. are missing.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere die beiden mit Annotationen versehenen enum-Beispiele aus dem Issue und untersuche die Einstiegspunkte des language server für die Verarbeitung von Annotationen und die JSON-Ausgabe. Vergleiche die Quellbereiche und die weitergegebenen Beschreibungen für das enum und seine Elemente. Als abgeschlossen gilt die Aufgabe, wenn beide Formen die Beschreibungen des enum und der Elemente bewahren und korrekte Start-/Endwerte melden und die Ausgabestruktur dem vorgesehenen Verhalten des Projekts entspricht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
lua
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.