Turns out we do need strscan in Opal. Here's how I think the require statements should look:

```ruby
if RUBY_ENGINE_OPAL 
  require 'asciidoctor/opal_ext/kernel'
  require 'asciidoctor/opal_ext/dir'
  require 'asciidoctor/opal_ext/error'
  require 'asciidoctor/opal_ext/file'
end
require 'set'
require 'strscan'
```