PtcRunner.Lisp.Registry (PtcRunner v0.14.0)

Copy Markdown View Source

Single source of truth for PTC-Lisp function metadata.

Loads ordinary implemented functions from priv/functions.exs, Clojure parity metadata from priv/function_audit.exs, and validated Java metadata through PtcRunner.Lisp.Java.Surface. No runtime file I/O is performed.

The files are split because their change cadence differs: functions.exs is touched when the language definition evolves, while function_audit.exs is touched when triaging Clojure parity and java_interop.exs owns the bounded Java compatibility surface. 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.apropos("sort")
#=> [%{name: "sort", ...}, %{name: "sort-by", ...}]

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

Summary

Functions

Searches functions by a case-insensitive literal substring.

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.

Returns all implemented function entries.

Returns a curated Java audit including stable surface target/reference IDs.

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

apropos(query)

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

Searches functions by a case-insensitive literal substring.

Canonical names, signatures (including qualified Java spellings), descriptions, notes, divergences, and sections are searchable. Results keep canonical registry names and a blank query matches nothing.

Examples

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

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

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", preserves closed Java names such as "System/currentTimeMillis", and maps "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"

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_audit_targets(key)

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

Returns a curated Java audit including stable surface target/reference IDs.

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