Module: CKEditor5::Rails::Presets::Concerns::PluginMethods
- Extended by:
- ActiveSupport::Concern
- Included in:
- Context::PresetBuilder, PresetBuilder
- Defined in:
- lib/ckeditor5/rails/presets/concerns/plugin_methods.rb
Defined Under Namespace
Classes: InvalidPatchPluginError, MissingInlinePluginError, UnsupportedESModuleError
Instance Method Summary collapse
-
#external_plugin(name, **kwargs) ⇒ Object
Registers an external plugin loaded from a URL.
-
#inline_plugin(name, code) ⇒ Object
Registers an inline plugin with raw JavaScript code.
-
#patch_plugin(plugin) ⇒ Editor::PropsPatchPlugin?
Registers a patch plugin that modifies CKEditor behavior for specific versions.
-
#plugin(name, **kwargs) ⇒ Object
Register a single plugin by name.
-
#plugins(*names, **kwargs, &block) ⇒ Object
Register multiple plugins and configure plugin settings.
Instance Method Details
#external_plugin(name, **kwargs) ⇒ Object
Registers an external plugin loaded from a URL
30 31 32 |
# File 'lib/ckeditor5/rails/presets/concerns/plugin_methods.rb', line 30 def external_plugin(name, **kwargs) register_plugin(Editor::PropsExternalPlugin.new(name, **kwargs)) end |
#inline_plugin(name, code) ⇒ Object
Registers an inline plugin with raw JavaScript code
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/ckeditor5/rails/presets/concerns/plugin_methods.rb', line 52 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 |
#patch_plugin(plugin) ⇒ Editor::PropsPatchPlugin?
Registers a patch plugin that modifies CKEditor behavior for specific versions
77 78 79 80 81 82 83 84 85 |
# File 'lib/ckeditor5/rails/presets/concerns/plugin_methods.rb', line 77 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 |
#plugin(name, **kwargs) ⇒ Object
Register a single plugin by name
97 98 99 100 |
# File 'lib/ckeditor5/rails/presets/concerns/plugin_methods.rb', line 97 def plugin(name, **kwargs) premium(true) if kwargs[:premium] && respond_to?(:premium) register_plugin(PluginsBuilder.create_plugin(name, **kwargs)) end |
#plugins(*names, **kwargs, &block) ⇒ Object
Register multiple plugins and configure plugin settings
114 115 116 117 118 119 120 121 122 |
# File 'lib/ckeditor5/rails/presets/concerns/plugin_methods.rb', line 114 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 |