lib/yousign/fields.ex

defmodule Yousign.Fields do
  @moduledoc """
  Helpers to quickly create anchor fields
  """

  @doc """
  Creates a new signature field
  """
  @spec signature_field(non_neg_integer(), non_neg_integer(), non_neg_integer()) :: String.t()
  def signature_field(signer_index, width, height) do
    """
    {{s#{signer_index}|signature|#{width}|#{height}}}
    """
  end

  @doc """
  Creates a new mention field
  """
  @spec mention_field(non_neg_integer(), String.t()) :: String.t()
  def mention_field(signer_index, mention) do
    """
    {{s#{signer_index}|mention|#{mention}}}
    """
  end

  @doc """
  Creates a new checkbox field
  """
  @spec checkbox_field(non_neg_integer(), :t | :f, :t | :f, String.t()) ::
          String.t()
  def checkbox_field(signer_index, optional, checked, name) do
    """
    {{s#{signer_index}|checkbox|#{optional}|#{checked}#{name}}}
    """
  end

  @doc """
  Creates a new text field
  """
  @spec text_field(
          non_neg_integer(),
          non_neg_integer(),
          non_neg_integer(),
          neg_integer(),
          String.t(),
          String.t(),
          :t | :f
        ) :: String.t()
  def text_field(signer_index, max_length, width, height, question, instruction, optional) do
    """
    {{s#{signer_index}|text|#{max_length}|#{width}|#{height}|#{question}|#{instruction}|#{optional}}}
    """
  end
end