Packages
Multi-surface application runtime for Elixir. One TEA module renders to terminal, browser (LiveView), SSH, and MCP (agents). 30+ widgets, flexbox + CSS grid, AI agent runtime, distributed swarm with CRDTs, time-travel debugging, session recording, sandboxed REPL, and agentic commerce.
Current section
Files
Jump to
Current section
Files
lib/raxol_web/live/playground_live.ex
defmodule RaxolWeb.PlaygroundLive do
use Phoenix.LiveView
@moduledoc """
A LiveView for a code playground that allows users to write, edit, and run code snippets.
"""
def mount(_params, _session, socket) do
{:ok,
assign(socket,
code: "",
language: "elixir",
output: nil,
error: nil
)}
end
def handle_event("update_code", %{"code" => code}, socket) do
{:noreply, assign(socket, code: code)}
end
def handle_event("change_language", %{"language" => language}, socket) do
{:noreply, assign(socket, language: language)}
end
def handle_event("run_code", _params, socket) do
case execute_code(socket.assigns.code, socket.assigns.language) do
{:ok, output} ->
{:noreply, assign(socket, output: output, error: nil)}
{:error, error} ->
{:noreply, assign(socket, error: error, output: nil)}
end
end
defp execute_code(code, language) do
case language do
"elixir" ->
try do
result = Code.eval_string(code)
{:ok, inspect(result)}
rescue
e -> {:error, Exception.message(e)}
end
_ ->
{:error, "Unsupported language: #{language}"}
end
end
# Example handle_event, adjust as needed based on original intent
# def handle_event("new_snippet", %{"code" => _code, "language" => _language}, socket) do
# {:noreply, socket}
# end
end