Skip to content

Phase 2: Plugin System for Extensibility #19

@dannycab

Description

@dannycab

Description

Implement plugin architecture to support multiple wiki formats and output types.

Goals

  • Support MediaWiki, Confluence, Notion exports without core changes
  • Easy to add PDF, EPUB, LaTeX output formats
  • Community can contribute plugins

Tasks

  • Design plugin interface (ABC classes)
  • Create SourcePlugin base class
  • Create FormatPlugin base class
  • Create ProcessorPlugin base class
  • Implement plugin discovery and loading
  • Refactor DokuWiki as a plugin
  • Create plugin documentation/template
  • Add plugin CLI commands (wikiaccess plugins list/install)
  • Set up plugins_contrib/ directory

Plugin Interface

class SourcePlugin(ABC):
    @abstractmethod
    def fetch_page(self, page_id: str) -> Document:
        pass
    
    @property
    @abstractmethod
    def supported_features(self) -> Set[str]:
        return {'images', 'math', 'tables'}

Success Criteria

  • DokuWiki refactored as plugin
  • At least one additional source plugin (MediaWiki)
  • Plugin installation via pip
  • Clear plugin development guide

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions