Character count of body text?

The answer depends on what the body actually means in this context.

For a string of text, it’s simply "text".len() (or "".clusters().len() for grapheme counting instead of UTF-8 bytes). For a content that consists only of plain text, it will be #[text].text.clusters().len().

For more complex examples, a more verbose solution is needed. A solution by @Eric for something similar mentioned here would be:

#let to-string(content) = {
  if content.has("text") {
    content.text
  } else if content.has("children") {
    content.children.map(to-string).join("")
  } else if content.has("body") {
    to-string(content.body)
  } else if content == [ ] {
    " "
  }
}

#to-string[This _*cool*_ project] // => "This cool project"

I haven’t tested this, it might still miss some text, but it’s a great start nevertheless. So you would use it like this:

#let content-variable = [This _*cool*_ project]
#to-string(content-variable).clusters().len()
// Output: 17
1 Like