Split domain/clip along the data: clip, nest, bring
domain/clip is the document and what only needs the document: its symbol table, placing, the resolver, problems. domain/nest is how nested symbols relate — one walk down a row path gives the frame, the matrix and the time map, which merges inside and time-down — and moving and grouping between them, and nested sound. domain/bring is copying symbols in from another clip, a take from footage, and one placed that merges the store and places the instance, which conversion and import both now call instead of each doing it in their own words. Tests follow the same split. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
7bb80d315d
commit
c17ee138f2
10 changed files with 639 additions and 589 deletions
26
frontend/test/arthur/domain/bring_test.cljs
Normal file
26
frontend/test/arthur/domain/bring_test.cljs
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
(ns arthur.domain.bring-test
|
||||
(:require [cljs.test :refer [deftest is]]
|
||||
[arthur.domain.bring :as bring]
|
||||
[arthur.domain.clip :as clip]))
|
||||
|
||||
(defn- nested
|
||||
"Three symbols: :outer places :inner, and :loose is placed by nothing."
|
||||
[]
|
||||
(-> (clip/blank)
|
||||
(assoc-in [:symbols :outer] {:id :outer :frames 200 :nodes {}})
|
||||
(assoc-in [:symbols :inner] {:id :inner :frames 10 :nodes {}})
|
||||
(assoc-in [:symbols :loose] {:id :loose :frames 30 :nodes {}})
|
||||
(clip/place-symbol nil :outer :inner 5 (random-uuid) nil)))
|
||||
|
||||
(deftest adopting-symbols-renames-what-collides
|
||||
(let [here (nested)
|
||||
there (-> (clip/blank)
|
||||
(assoc-in [:symbols :inner] {:id :inner :frames 4 :nodes {}})
|
||||
(clip/place-symbol nil :main :inner 0 #uuid "00000000-0000-4000-8000-0000000000aa" nil))
|
||||
{:keys [clip ids]} (bring/symbols here there [:main] {:main :take})]
|
||||
(is (= {:main :take :inner :inner-2} ids)
|
||||
"the root gets the name asked for; a taken id gets the next free one")
|
||||
(is (= 10 (clip/frames clip :inner)) "what was already here is untouched")
|
||||
(is (= :inner-2 (:of (first (vals (get-in clip [:symbols :take :nodes])))))
|
||||
"and the copy's instance follows its renamed symbol")
|
||||
(is (empty? (clip/problems clip)))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue