– scan the Part for any tags it defines, attaching them to a copied Part – go into sub-parts and do the same

use(require(“atomy”))

data = require(“anatomy/data”)

def(pass(a & Array, part)):

a collect [x]: pass(x, part)

def(pass(c & data CollectElement, part)):

c action[part]

def(pass(p & data Paragraph, part)):

p dup tap [x]:
  x content = pass(p content, part)

def(pass(nil, _)): nil

def(pass(s & String, _)): s

def(pass(e & data Element, part)):

e dup tap [x]:
  x content = pass(e content, part)

def(pass(b & data Block, part)):

b dup tap [x]:
  x content = pass(b content, part)

def(over(part)):

part body = pass(part body, part)
part parts each [sub]: over(sub)
part