Skip to main content

lib/pi/protocol/tool/ast/search_request.ex

defmodule Pi.Protocol.Tool.AST.SearchRequest do
  @moduledoc "Arguments for AST search."

  use JSONCodec, fast_path: :json

  defstruct pattern: nil,
            patterns: nil,
            path: nil,
            inside: nil,
            not_inside: nil,
            allow_broad: false,
            limit: nil

  @type t :: %__MODULE__{
          pattern: String.t() | nil,
          patterns: %{String.t() => String.t()} | nil,
          path: String.t() | nil,
          inside: String.t() | nil,
          not_inside: String.t() | nil,
          allow_broad: boolean(),
          limit: non_neg_integer() | nil
        }

  codec(:not_inside, as: "notInside")
  codec(:allow_broad, as: "allowBroad")
end