# `Coelho.Schema.MarkSpec`
[🔗](https://github.com/nseaSeb/coelho/blob/main/lib/coelho/schema/mark_spec.ex#L1)

Specification of a single mark type, such as `bold` or `link`.

Fields:

  * `:name` — the mark name, an atom
  * `:attrs` — map of attribute name to `Coelho.Schema.Attr`
  * `:class` — a CSS class merged into the rendered element *and* exported
    to the browser, so the editor shows the class the public page will use
  * `:editor_attrs` — extra DOM attributes for the editor only, exported
    with the schema and never emitted server side
  * `:render` — how the mark is turned into HTML, see `Coelho.Render`
  * `:parse` — HTML this mark is imported from, see `Coelho.HTML`
  * `:attr_keys` — the attribute names as the strings a document is written
    in, derived from `:attrs` when the schema is built

# `t`

```elixir
@type t() :: %Coelho.Schema.MarkSpec{
  attr_keys: MapSet.t(String.t()) | nil,
  attrs: %{optional(atom()) =&gt; Coelho.Schema.Attr.t()},
  class: String.t() | nil,
  editor_attrs: %{optional(String.t()) =&gt; String.t()},
  name: atom(),
  parse: [Coelho.HTML.rule()],
  render: Coelho.Schema.NodeSpec.render()
}
```

---

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