PtcRunner.Lisp.Registry (PtcRunner v0.11.0)

Copy Markdown View Source

Single source of truth for PTC-Lisp function metadata.

Loads priv/functions.exs (implemented + Java interop entries), priv/function_audit.exs (Clojure/Java Math parity triage notes), and priv/java_compat_audit.exs (curated Java compatibility targets) at compile time via @external_resource. No runtime file I/O — recompiles automatically when any source file changes.

The two files are split (#896) because their change cadence differs: functions.exs is touched when the language definition evolves, while function_audit.exs is touched when triaging Clojure/Java parity. Keeping them separate keeps each file in a more manageable size range and avoids recompiling dependents when only audit metadata changes.

Usage

Registry.doc("filter")
#=> %{name: "filter", signatures: [...], ...}

Registry.builtins_by_category(:string)
#=> [:format, :name, :str, ...]

Registry.find_doc("sort")
#=> [%{name: "sort", ...}, %{name: "sort-by", ...}]

See also: PtcRunner.Lisp.Env, PtcRunner.Lisp.Analyze

Summary

Functions

Returns env-dispatched builtin names for the given category.

Returns env-dispatched builtin names that are supported for the given compatibility namespace.

Returns a human-readable name for a category.

Returns all clojure.core audit entries.

Returns all clojure.set audit entries.

Returns all clojure.string audit entries.

Returns all clojure.walk audit entries.

Looks up documentation for a function by exact name.

Searches functions by name, description, or section pattern.

Returns all implemented function entries.

Returns a curated Java compatibility audit by key.

Returns the available curated Java compatibility audit keys.

Returns all Java interop entries.

Returns all java.lang.Math audit entries.

Functions

builtins_by_category(category)

@spec builtins_by_category(atom()) :: [atom()]

Returns env-dispatched builtin names for the given category.

Examples

iex> :join in PtcRunner.Lisp.Registry.builtins_by_category(:string)
true

iex> :set in PtcRunner.Lisp.Registry.builtins_by_category(:set)
true

builtins_by_namespace(ns)

@spec builtins_by_namespace(atom()) :: [atom() | String.t()]

Returns env-dispatched builtin names that are supported for the given compatibility namespace.

Unlike builtins_by_category/1, this represents namespace membership rather than presentation grouping. For example, clojure.core/str is valid even though str is displayed in the String Functions section.

category_name(atom)

@spec category_name(atom()) :: String.t()

Returns a human-readable name for a category.

Examples

iex> PtcRunner.Lisp.Registry.category_name(:string)
"String"

iex> PtcRunner.Lisp.Registry.category_name(:core)
"Core"

clojure_core_audit()

@spec clojure_core_audit() :: [map()]

Returns all clojure.core audit entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.clojure_core_audit()
iex> is_list(entries) and length(entries) > 400
true

clojure_set_audit()

@spec clojure_set_audit() :: [map()]

Returns all clojure.set audit entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.clojure_set_audit()
iex> is_list(entries) and length(entries) > 8
true

clojure_string_audit()

@spec clojure_string_audit() :: [map()]

Returns all clojure.string audit entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.clojure_string_audit()
iex> is_list(entries) and length(entries) > 15
true

clojure_walk_audit()

@spec clojure_walk_audit() :: [map()]

Returns all clojure.walk audit entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.clojure_walk_audit()
iex> is_list(entries) and length(entries) > 5
true

doc(name)

@spec doc(String.t()) :: map() | nil

Looks up documentation for a function by exact name.

Handles namespace-qualified names (e.g., "LocalDate/parse""parse", "System/currentTimeMillis""currentTimeMillis", "java.time.Duration/between""Duration/between").

Examples

iex> entry = PtcRunner.Lisp.Registry.doc("filter")
iex> entry.name
"filter"

iex> entry = PtcRunner.Lisp.Registry.doc("LocalDate/parse")
iex> entry.name
"parse"

iex> entry = PtcRunner.Lisp.Registry.doc("java.time.Duration/between")
iex> entry.name
"Duration/between"

find_doc(pattern)

@spec find_doc(String.t()) :: [map()]

Searches functions by name, description, or section pattern.

Examples

iex> results = PtcRunner.Lisp.Registry.find_doc("sort")
iex> Enum.any?(results, & &1.name == "sort")
true

iex> results = PtcRunner.Lisp.Registry.find_doc("interop")
iex> Enum.all?(results, & &1.section == "Interop")
true

implemented()

@spec implemented() :: [map()]

Returns all implemented function entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.implemented()
iex> is_list(entries) and length(entries) > 100
true

java_compat_audit(key)

@spec java_compat_audit(atom()) :: [map()]

Returns a curated Java compatibility audit by key.

java_compat_audit_keys()

@spec java_compat_audit_keys() :: [atom()]

Returns the available curated Java compatibility audit keys.

java_interop()

@spec java_interop() :: [map()]

Returns all Java interop entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.java_interop()
iex> is_list(entries) and length(entries) > 5
true

java_math_audit()

@spec java_math_audit() :: [map()]

Returns all java.lang.Math audit entries.

Examples

iex> entries = PtcRunner.Lisp.Registry.java_math_audit()
iex> is_list(entries) and length(entries) > 30
true