module CKEditor5::Rails::Presets::Concerns::PluginMethods
def external_plugin(name, **kwargs)
- Example: Load with import alias -
Example: Load plugin from URL -
Parameters:
-
kwargs
(Hash
) -- Plugin options like :script, :import_as, :window_name, :stylesheets -
name
(Symbol
) -- Plugin name
def external_plugin(name, **kwargs) register_plugin(Editor::PropsExternalPlugin.new(name, **kwargs)) end
def inline_plugin(name, code)
- Example: Define custom highlight plugin -
Parameters:
-
code
(String
) -- JavaScript code defining the plugin -
name
(Symbol
) -- Plugin name
def inline_plugin(name, code) if code.match?(/export default/) raise UnsupportedESModuleError, 'Inline plugins must not use ES module syntax!' \ 'Use async async imports instead!' end unless code.match?(/return class(\s+\w+)?\s+extends\s+Plugin/) raise MissingInlinePluginError, 'Plugin code must return a class that extends Plugin!' end plugin = Editor::PropsInlinePlugin.new(name, code) plugin.compress! unless disallow_inline_plugin_compression register_plugin(plugin) end
def patch_plugin(plugin)
- Example: Apply patch for specific CKEditor versions -
Returns:
-
(Editor::PropsPatchPlugin, nil)
- Returns plugin if registered, nil if not applicable
Raises:
-
(InvalidPatchPluginError)
- When provided plugin is not a PropsPatchPlugin
Parameters:
-
plugin
(Editor::PropsPatchPlugin
) -- Patch plugin instance to register
def patch_plugin(plugin) unless plugin.is_a?(Editor::PropsPatchPlugin) raise InvalidPatchPluginError, 'Provided plugin must be a PropsPatchPlugin instance' end return unless !@version || plugin.applicable_for_version?(@version) register_plugin(plugin) end
def plugin(name, **kwargs)
- Example: Register custom plugin -
Example: Register premium plugin -
Example: Register standard plugin -
Parameters:
-
kwargs
(Hash
) -- Plugin configuration options -
name
(Symbol, Editor::PropsBasePlugin
) -- Plugin name or instance
def plugin(name, **kwargs) premium(true) if kwargs[:premium] && respond_to?(:premium) register_plugin(PluginsBuilder.create_plugin(name, **kwargs)) end
def plugins(*names, **kwargs, &block)
- Example: Configure plugins with block -
Example: Register multiple plugins -
Parameters:
-
kwargs
(Hash
) -- Shared plugin configuration -
names
(Array
) -- Plugin names to register
def plugins(*names, **kwargs, &block) config[:plugins] ||= [] names.each { |name| plugin(name, **kwargs) } unless names.empty? builder = PluginsBuilder.new(config[:plugins]) builder.instance_eval(&block) if block_given? builder end
def register_plugin(plugin_obj)
-
(Editor::PropsBasePlugin)
- The registered plugin
Parameters:
-
plugin_obj
(Editor::PropsBasePlugin
) -- Plugin instance to register
def register_plugin(plugin_obj) config[:plugins] ||= [] config[:plugins] << plugin_obj plugin_obj end