Delphi-Konzept: DFM/FMX Support hinzugefügt
- Neues Dokument 07-DFM-FMX-Support.md: Format-Referenz, Extraktions-Strategie, DfmExtractor-Konzept - Neues Fixture MainForm.dfm: Verschachtelte Komponenten, Event-Handler (FormCreate, btnLoginClick, etc.) - Integration Guide erweitert: DfmExtractor-Implementierung (analog LiquidExtractor), Coding-Style-Hinweise - NodeKind-Mapping erweitert: DFM-Komponenten als component, Event-Handler als references, Verschachtelung als contains - Checklist: DFM/FMX von 'Zukunft' auf konkreten Plan (Phase 1b) hochgestuft - README aktualisiert: DFM/FMX-Support in Ziel, Inhalt und Grammar-Abschnitt aufgenommen
This commit is contained in:
@@ -3,9 +3,9 @@
|
||||
## A) Plumbing (Infrastruktur)
|
||||
- [ ] `npm install tree-sitter-pascal` als Dependency
|
||||
- [ ] `src/types.ts`: `'pascal'` zum `Language` Union-Type hinzufügen
|
||||
- [ ] `src/types.ts`: `DEFAULT_CONFIG.include` um `'**/*.pas'`, `'**/*.dpr'`, `'**/*.dpk'`, `'**/*.lpr'` erweitern
|
||||
- [ ] `src/types.ts`: `DEFAULT_CONFIG.include` um `'**/*.pas'`, `'**/*.dpr'`, `'**/*.dpk'`, `'**/*.lpr'`, `'**/*.dfm'`, `'**/*.fmx'` erweitern
|
||||
- [ ] `src/extraction/grammars.ts`: Grammar-Loader `pascal: () => require('tree-sitter-pascal')`
|
||||
- [ ] `src/extraction/grammars.ts`: Extension-Mapping `.pas`, `.dpr`, `.dpk`, `.lpr` → `'pascal'`
|
||||
- [ ] `src/extraction/grammars.ts`: Extension-Mapping `.pas`, `.dpr`, `.dpk`, `.lpr`, `.dfm`, `.fmx` → `'pascal'`
|
||||
- [ ] `src/extraction/grammars.ts`: Display-Name `pascal: 'Pascal / Delphi'`
|
||||
- [ ] `src/extraction/tree-sitter.ts`: `LanguageExtractor` für `pascal` in `EXTRACTORS` Map
|
||||
|
||||
@@ -53,9 +53,19 @@
|
||||
- [ ] Language in Supported-Languages-Dokumentation aufnehmen
|
||||
- [ ] CLI-Hilfe / Config-Validierung aktualisieren
|
||||
|
||||
## H) Bekannte Einschränkungen (für spätere Phasen)
|
||||
## H) DFM/FMX Form-Dateien (Phase 1b)
|
||||
- [ ] `DfmExtractor`-Klasse in `src/extraction/tree-sitter.ts` implementieren (analog `LiquidExtractor`)
|
||||
- [ ] Routing in `extractFromSource()`: `.dfm`/`.fmx` → `DfmExtractor`
|
||||
- [ ] Komponenten als NodeKind `component` extrahieren (`object <Name>: <Typ>`)
|
||||
- [ ] Verschachtelung als EdgeKind `contains` abbilden
|
||||
- [ ] Event-Handler (`OnClick = MethodName`) als `UnresolvedReference` speichern → EdgeKind `references`
|
||||
- [ ] Mehrzeilige Properties korrekt überspringen
|
||||
- [ ] `inherited`-Blöcke als `component` behandeln
|
||||
- [ ] DFM-Fixture (`MainForm.dfm`) in Test-Suite aufnehmen
|
||||
- [ ] Resolution: Event-Handler-Namen zu Methoden in zugehöriger `.pas`-Datei auflösen
|
||||
|
||||
## I) Bekannte Einschränkungen (für spätere Phasen)
|
||||
- [ ] **`with`-Statements** (Phase 2): Verschleiern den Qualifier bei Aufrufen. Im MVP werden Calls innerhalb von `with`-Blöcken ohne Qualifier extrahiert.
|
||||
- [ ] **`.dfm`/`.fmx` Form-Dateien** (Zukunft): Enthalten Komponenten-Deklarationen und Event-Verknüpfungen. Aktuell nicht unterstützt.
|
||||
- [ ] **`.inc` Include-Dateien** (Optional): Enthalten Code-Fragmente, die per `{$I filename}` eingebunden werden. Parser liefert möglicherweise keinen vollständigen AST.
|
||||
- [ ] **Class Helpers / Record Helpers** (Phase 2): `declHelper`-Knoten erweitern existierende Typen. Erfordert spezielle Resolution-Logik.
|
||||
- [ ] **Generics** (Phase 2): `typerefTpl` und `genericTpl` für generische Typen.
|
||||
|
||||
Reference in New Issue
Block a user