Source code for langchain_community.document_loaders.parsers.language.elixir
from typing import TYPE_CHECKING
from langchain_community.document_loaders.parsers.language.tree_sitter_segmenter import ( # noqa: E501
TreeSitterSegmenter,
)
if TYPE_CHECKING:
from tree_sitter import Language
CHUNK_QUERY = """
[
(call target: ((identifier) @_identifier
(#any-of? @_identifier "defmodule" "defprotocol" "defimpl"))) @module
(call target: ((identifier) @_identifier
(#any-of? @_identifier "def" "defmacro" "defmacrop" "defp"))) @function
(unary_operator operator: "@" operand: (call target: ((identifier) @_identifier
(#any-of? @_identifier "moduledoc" "typedoc""doc")))) @comment
]
""".strip()
[docs]class ElixirSegmenter(TreeSitterSegmenter):
"""Code segmenter for Elixir."""
[docs] def get_language(self) -> "Language":
from tree_sitter_languages import get_language
return get_language("elixir")
[docs] def get_chunk_query(self) -> str:
return CHUNK_QUERY