class PluginRegistry
  class << self
    attr_writer :javascripts
    attr_writer :stylesheets

    def asset_globs
      @asset_globs ||= Set.new
    end

    def javascripts
      @javascripts ||= Set.new
    end

    def stylesheets
      @stylesheets ||= Set.new
    end

    def code_insertions
      @code_insertions ||= {}
    end
  end

  def self.register_glob(root, extension, options=nil)
    asset_globs << [root, extension, options || {}]
  end

  def self.register_asset(asset, _opts = nil)
    if asset =~ /\.js$|\.js\.erb$|\.js\.es6$|\.coffee$|\.coffee\.erb/
      javascripts << asset
    elsif asset =~ /\.css$|\.scss$/
      stylesheets << asset
    end
  end

  def self.insert_code(key)
    code_insertions[key]&.join('\n')
  end
end