v0.4.0 - Views DSL
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 $EDITORExport 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 recentBuilt-in Views
all- All booksfavorites- Books marked as favoritesreading- Currently readingcompleted- Finished booksunread- Not yet startedrecent- Recently addedtop-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