Packages
kreuzberg
4.7.4
4.10.2
4.10.1
4.10.0
4.9.9
4.9.7
4.9.5
4.9.4
4.9.3
4.9.2
4.9.1
4.8.6
4.8.5
4.8.4
4.8.3
4.8.2
4.8.1
4.8.0
4.7.4
4.7.3
4.7.2
4.7.1
4.7.0
4.6.3
4.6.2
4.6.1
4.6.0
4.5.4
4.5.3
4.5.2
4.5.1
4.4.6
4.4.5
4.4.4
4.4.3
4.4.2
4.4.1
4.4.0
4.3.8
4.3.7
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.0
4.2.15
4.2.14
4.2.13
4.2.12
4.2.11
4.2.10
4.2.9
4.2.8
4.2.7
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.2
4.1.1
4.1.0
4.0.8
4.0.7
4.0.6
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
4.0.0-rc.27
4.0.0-rc.26
High-performance document intelligence library with OCR support
Current section
Files
Jump to
Current section
Files
lib/kreuzberg/code_docstring_info.ex
defmodule Kreuzberg.CodeDocstringInfo do
@moduledoc """
Docstring information with parsed sections.
## Fields
* `:text` - Raw docstring text
* `:format` - Docstring format (e.g. "javadoc", "numpy", "google")
* `:associated_item` - Name of the associated code item
* `:span` - Source span
* `:sections` - Parsed docstring sections
"""
@type t :: %__MODULE__{
text: String.t(),
format: String.t(),
associated_item: String.t() | nil,
span: Kreuzberg.CodeSpan.t(),
sections: [Kreuzberg.CodeDocSection.t()]
}
defstruct text: "",
format: "",
associated_item: nil,
span: %Kreuzberg.CodeSpan{},
sections: []
@spec from_map(map()) :: t()
def from_map(data) when is_map(data) do
span =
case Map.get(data, "span", Map.get(data, :span)) do
%Kreuzberg.CodeSpan{} = s -> s
map when is_map(map) -> Kreuzberg.CodeSpan.from_map(map)
_ -> %Kreuzberg.CodeSpan{}
end
sections =
case Map.get(data, "sections", Map.get(data, :sections, [])) do
list when is_list(list) -> Enum.map(list, &Kreuzberg.CodeDocSection.from_map/1)
_ -> []
end
%__MODULE__{
text: Map.get(data, "text", Map.get(data, :text, "")),
format: Map.get(data, "format", Map.get(data, :format, "")),
associated_item: Map.get(data, "associated_item", Map.get(data, :associated_item)),
span: span,
sections: sections
}
end
@spec to_map(t()) :: map()
def to_map(%__MODULE__{} = info) do
%{
"text" => info.text,
"format" => info.format,
"associated_item" => info.associated_item,
"span" => Kreuzberg.CodeSpan.to_map(info.span),
"sections" => Enum.map(info.sections, &Kreuzberg.CodeDocSection.to_map/1)
}
end
end