123456789_123456789_123456789_123456789_123456789_

Class: ActionText::Editor::Configurator

Do not use. This class is for internal use only.
Relationships & Source Files
Inherits: Object
Defined in: actiontext/lib/action_text/editor/configurator.rb

Class Method Summary

Instance Attribute Summary

Instance Method Summary

Constructor Details

.new(configurations) ⇒ Configurator

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 7

def initialize(configurations)
  @configurations = configurations
end

Instance Attribute Details

#configurations (readonly)

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 5

attr_reader :configurations

Instance Method Details

#build(editor_name)

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 11

def build(editor_name)
  editor_class = resolve(editor_name.to_s)
  options = config_for(editor_name.to_sym)

  editor_class.new(options)
end

#config_for(name) (private)

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 25

def config_for(name)
  configurations.fetch name do
    raise "Missing configuration for the #{name.inspect} Action Text editor. Configurations available for #{configurations.keys.inspect}"
  end
end

#inspect

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 18

def inspect # :nodoc:
  attrs = configurations.any? ?
    " configurations=[#{configurations.keys.map(&:inspect).join(", ")}]" : ""
  "#<#{self.class}#{attrs}>"
end

#resolve(class_name) (private)

[ GitHub ]

  
# File 'actiontext/lib/action_text/editor/configurator.rb', line 31

def resolve(class_name)
  require "action_text/editor/#{class_name.underscore}_editor"

  Editor.const_get(:"#{class_name.camelize}Editor")
rescue LoadError
  raise "Missing editor adapter for #{class_name.inspect}"
end