How can I detect block vs. inline content?

#let detail(function, compose) = {
  compose
  show function: x => (x,)
  compose}

#detail(math.equation)[
  $ A = pi r^2 $]

#show math.equation: e => {
  if e.block {text(blue, e)}
  else {text(green, e)}}

$A = pi r^2$ $ A = pi r^2 $