Skip to content

Add support for additional file formats (CSV, XML, YAML) #35

@anitnilay20

Description

@anitnilay20

Description

Building on the FileViewer architecture established in the recent refactoring, add support for viewing additional file formats beyond JSON/NDJSON.

Background

The codebase has been refactored to separate generic file viewing logic (FileViewer) from format-specific rendering (JsonTreeViewer). This architecture makes it straightforward to add new file format viewers.

Proposed File Formats

Priority 1 - High Value

  • CSV/TSV - Tabular data display with column headers, sorting, filtering
  • XML - Tree-based viewer similar to JSON, with attribute support
  • YAML - Tree viewer with YAML-specific syntax handling

Priority 2 - Nice to Have

  • TOML - Config file support
  • Plain Text - Basic text viewer with syntax highlighting
  • Markdown - Rendered preview

Implementation Plan

Each format viewer should:

  1. Implement a dedicated viewer (e.g., CsvTableViewer, XmlTreeViewer)
  2. Integrate with FileViewer via format detection
  3. Support common operations: search, copy, export
  4. Maintain consistent UI/UX with existing JSON viewer

Technical Notes

Current architecture:

  • FileViewer (generic parent) - handles loading, caching, selection
  • JsonTreeViewer (JSON-specific) - renders JSON tree structure
  • ViewerState (shared) - common state across viewers

New viewers should follow this pattern and reuse the existing infrastructure.

Related Issues

Acceptance Criteria

  • CSV/TSV files display in tabular format
  • XML files display in tree structure
  • YAML files display in tree structure
  • File type auto-detection works correctly
  • Search functionality works across all formats
  • Performance remains good for large files (lazy loading where applicable)
  • All keyboard shortcuts work consistently

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestfeatureNew feature requests

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions