Skip to content

v0.4.0 - Views DSL

Choose a tag to compare

@queelius queelius released this 20 Dec 04:01

Major Feature: Views DSL

A SICP-inspired domain-specific language for defining composable, non-destructive views over your library.

Core Concepts

  • Primitives: all, none, filter, ids, view references
  • Combination: union, intersect, difference
  • Abstraction: Named views become new primitives
  • Closure: Combining views yields a view

CLI Commands

# Create views
ebk view create favorites --favorite
ebk view create programming --subject programming
ebk view create top-rated --rating-gte 4

# List and show views
ebk view list
ebk view show favorites

# Curate membership
ebk view add my-collection 42
ebk view remove my-collection 99

# Override metadata (non-destructive)
ebk view set my-view 42 --title "Better Title"
ebk view set my-view 42 --description "My notes"

# Import/export YAML
ebk view export my-view -o my-view.yaml
ebk view import my-view.yaml
ebk view edit my-view  # Opens in $EDITOR

Export Integration

ebk export html ~/library ~/output.html --view favorites
ebk export json ~/library ~/backup.json --view programming
ebk export csv ~/library ~/books.csv --view top-rated
ebk export opds ~/library ~/catalog.xml --view recent

Built-in Views

  • all - All books
  • favorites - Books marked as favorites
  • reading - Currently reading
  • completed - Finished books
  • unread - Not yet started
  • recent - Recently added
  • top-rated - Rating >= 4

YAML Definition Example

name: cs-fundamentals
description: Core CS texts, curated

select:
  intersect:
    - {filter: {subject: programming}}
    - {filter: {favorite: true}}

transform:
  override:
    42:
      title: "Structure and Interpretation of Computer Programs"
      description: "The wizard book. Start here."

order:
  by: title