Class: Rails::Domternal::ExtensionRegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/rails/domternal/extension_registry.rb

Overview

Ruby-side mirror of app/assets/javascripts/domternal/extensions.js — kept in sync so has_rich_domternal extensions: [...] can fail fast on typos instead of only erroring in the browser console.

Constant Summary collapse

UnknownExtensionError =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initializeExtensionRegistry

Returns a new instance of ExtensionRegistry.



11
12
13
14
15
16
# File 'lib/rails/domternal/extension_registry.rb', line 11

def initialize
  @known = %i[
    starter_kit image table mention markdown emoji math
    code_block toc block_controls details
  ].to_set
end

Instance Method Details

#fetch!(name) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/rails/domternal/extension_registry.rb', line 26

def fetch!(name)
  unless known?(name)
    raise UnknownExtensionError,
      "Unknown Domternal extension #{name.inspect}. Known extensions: #{@known.to_a.sort.inspect}. " \
      "Register custom ones with Rails::Domternal.extension_registry.register(:my_extension) " \
      "and app/assets/javascripts/domternal/extensions.js's registerExtension()."
  end
  name.to_sym
end

#known?(name) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/rails/domternal/extension_registry.rb', line 22

def known?(name)
  @known.include?(name.to_sym)
end

#register(name) ⇒ Object



18
19
20
# File 'lib/rails/domternal/extension_registry.rb', line 18

def register(name)
  @known << name.to_sym
end