# `PhoenixKitCatalogue.Import.Pro100Parser`
[🔗](https://github.com/BeamLabEU/phoenix_kit_catalogue/blob/v0.19.0/lib/phoenix_kit_catalogue/import/pro100_parser.ex#L1)

Parses the PRO100 fixed-layout text formats (`# Parts` / `# Materials`).

UTF-8 with an optional leading BOM, TAB-separated, CRLF (or LF) lines. Each
data row begins with two empty fields (the leading `\t\t`); after dropping
them the positional columns are:

    Furniture: name  id  c3  price  c5  c6  c7
    Materials: name  id  c3  price  c5  unit

# `row`

```elixir
@type row() :: %{
  line_no: pos_integer(),
  raw_line: String.t(),
  id: String.t(),
  name: String.t(),
  base_price: Decimal.t() | nil,
  unit: String.t() | nil,
  service: %{required(String.t()) =&gt; String.t()},
  format: :furniture | :materials
}
```

# `parse`

```elixir
@spec parse(binary(), :furniture | :materials) :: {:ok, [row()]} | {:error, term()}
```

---

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