shape: initial set-up; csys: standardized message format with head and info parts

This commit is contained in:
Helmut Merz 2026-05-07 18:51:03 +02:00
parent 2fa57ee8fb
commit f9e6d664d5
5 changed files with 30 additions and 9 deletions

View file

@ -19,7 +19,6 @@ defmodule Scopes.CSys do
# helper functions
defp process(msg, scope) do
#Process.put(:scope, scope)
proc(scope).(msg, scope)
end

View file

@ -18,15 +18,17 @@ defmodule Scopes.CSys.Program do
# processors
def basic_active(msg, scope) do
#scope = Process.get(:scope)
case msg do
def basic_active({head, _info}, scope) do
case head do
[:csys, :create, :parent | _rest] -> create_parent(scope)
[:csys, :create, :child | _rest] -> create_child(scope)
_ -> forward(msg, scope) || notify(msg, scope)
end
end
def basic_active(msg, scope) do
forward(msg, scope) || notify(msg, scope)
end
# processor steps
def notify(msg, scope) do

5
lib/shape/shape.ex Normal file
View file

@ -0,0 +1,5 @@
defmodule Scopes.Shape do
def create(head, info \\ []) do
{head, info}
end
end

View file

@ -14,10 +14,12 @@ defmodule Scopes.CSysTest do
proc = Environ.get_stage(env, :basic, :initial)
zero = CSys.neuron({[], proc, [], env})
Actor.send(zero, "Hello Zero!")
# msg = Message.create([:csys, :data], data: %{value: "Hello Zero!"})
# Actor.send(zero, msg)
assert_receive "Hello Zero!"
Actor.send(zero, [:csys, :create, :parent])
Actor.send(zero, {[:csys, :create, :parent], nil})
assert_receive {:created, new1}
Actor.send(new1, [:csys, :create, :child])
Actor.send(new1, {[:csys, :create, :child], nil})
assert_receive {:created, _new2}
Actor.send(new1, "Hello New1!")
assert_receive "Hello New1!"

13
test/shape_test.exs Normal file
View file

@ -0,0 +1,13 @@
defmodule Scopes.ShapeTest do
use ExUnit.Case, async: true
alias Scopes.Shape
describe "shape:" do
test "basic" do
obj = Shape.create([:dom, :data], data: %{value: 42})
{_head, info} = obj
assert 42 = info[:data].value
end
end
end