Sayfa.Excerpt (Sayfa v0.5.0)

Copy Markdown View Source

Excerpt generation from content body.

Generates short summaries for use in list pages, feeds, and SEO. Supports both manual excerpts (via excerpt: front matter) and automatic generation from the first paragraph.

Examples

iex> content = %Sayfa.Content{body: "<p>First paragraph.</p><p>Second.</p>", meta: %{}}
iex> Sayfa.Excerpt.extract(content)
"First paragraph."

iex> content = %Sayfa.Content{body: "Long text...", meta: %{"excerpt" => "Custom excerpt"}}
iex> Sayfa.Excerpt.extract(content)
"Custom excerpt"

Summary

Functions

Extracts an excerpt from content.

Functions

extract(content, opts \\ [])

@spec extract(
  Sayfa.Content.t(),
  keyword()
) :: String.t()

Extracts an excerpt from content.

Priority order:

  1. excerpt field in content.meta
  2. First paragraph from HTML body (stripped of tags)
  3. Truncated body (if no paragraph breaks)

Options

  • :length - Maximum length of excerpt (default: 160)

Examples

iex> content = %Sayfa.Content{body: "<p>Hello world</p>", meta: %{}}
iex> Sayfa.Excerpt.extract(content)
"Hello world"