# `HfHub.Cards`
[🔗](https://github.com/North-Shore-AI/hf_hub_ex/blob/v0.3.1/lib/hf_hub/cards.ex#L1)

Model and Dataset card parsing and creation.

Cards are structured documentation files (README.md) that contain YAML frontmatter
with metadata and markdown content for documentation.

## Examples

    # Load and parse cards from repositories
    {:ok, card} = HfHub.Cards.load_model_card("bert-base-uncased")
    card.data.license  # "apache-2.0"

    # Parse from content
    {:ok, card} = HfHub.Cards.parse_model_card(readme_content)

    # Create and render cards
    card = HfHub.Cards.create_model_card(%{
      language: "en",
      license: "mit",
      tags: ["text-classification"]
    })
    markdown = HfHub.Cards.render(card)

# `create_dataset_card`

```elixir
@spec create_dataset_card(map() | keyword()) :: HfHub.Cards.DatasetCard.t()
```

Creates a dataset card from data.

## Arguments

  * `data` - Map or keyword list with card data fields

## Examples

    card = HfHub.Cards.create_dataset_card(%{
      language: "en",
      license: "cc-by-4.0",
      task_categories: ["question-answering"]
    })

# `create_model_card`

```elixir
@spec create_model_card(map() | keyword()) :: HfHub.Cards.ModelCard.t()
```

Creates a model card from data.

## Arguments

  * `data` - Map or keyword list with card data fields

## Examples

    card = HfHub.Cards.create_model_card(%{
      language: "en",
      license: "mit",
      tags: ["text-classification"]
    })

# `load_dataset_card`

```elixir
@spec load_dataset_card(
  String.t(),
  keyword()
) :: {:ok, HfHub.Cards.DatasetCard.t()} | {:error, term()}
```

Loads a dataset card from a repository.

Downloads the README.md file and parses its frontmatter and content.

## Arguments

  * `repo_id` - Dataset repository ID (e.g., "squad")

## Options

  * `:revision` - Git revision. Defaults to `"main"`.
  * `:token` - Authentication token.
  * `:cache_dir` - Local cache directory.

## Examples

    {:ok, card} = HfHub.Cards.load_dataset_card("squad")
    card.data.task_categories  # ["question-answering"]

# `load_model_card`

```elixir
@spec load_model_card(
  String.t(),
  keyword()
) :: {:ok, HfHub.Cards.ModelCard.t()} | {:error, term()}
```

Loads a model card from a repository.

Downloads the README.md file and parses its frontmatter and content.

## Arguments

  * `repo_id` - Repository ID (e.g., "bert-base-uncased")

## Options

  * `:revision` - Git revision. Defaults to `"main"`.
  * `:token` - Authentication token.
  * `:cache_dir` - Local cache directory.

## Examples

    {:ok, card} = HfHub.Cards.load_model_card("bert-base-uncased")
    card.data.license  # "apache-2.0"
    card.data.tags     # ["pytorch", "bert", "fill-mask"]

# `parse_dataset_card`

```elixir
@spec parse_dataset_card(String.t()) ::
  {:ok, HfHub.Cards.DatasetCard.t()} | {:error, term()}
```

Parses a dataset card from markdown content.

Extracts YAML frontmatter and remaining markdown content.

## Arguments

  * `content` - Raw markdown content with optional YAML frontmatter

## Examples

    {:ok, card} = HfHub.Cards.parse_dataset_card(content)
    card.data.task_categories  # ["question-answering"]

# `parse_model_card`

```elixir
@spec parse_model_card(String.t()) ::
  {:ok, HfHub.Cards.ModelCard.t()} | {:error, term()}
```

Parses a model card from markdown content.

Extracts YAML frontmatter and remaining markdown content.

## Arguments

  * `content` - Raw markdown content with optional YAML frontmatter

## Examples

    content = """
    ---
    license: mit
    tags:
      - bert
    ---

    # My Model
    """

    {:ok, card} = HfHub.Cards.parse_model_card(content)
    card.data.license  # "mit"
    card.content       # "# My Model"

# `render`

```elixir
@spec render(HfHub.Cards.ModelCard.t() | HfHub.Cards.DatasetCard.t()) :: String.t()
```

Renders a card to markdown string with YAML frontmatter.

## Arguments

  * `card` - A ModelCard or DatasetCard struct

## Examples

    card = HfHub.Cards.create_model_card(%{license: "mit"})
    markdown = HfHub.Cards.render(card)
    # => """
    # ---
    # license: "mit"
    # ---
    #
    # """

---

*Consult [api-reference.md](api-reference.md) for complete listing*
