Sha256: d2d6e473912e7e3f33dd5a5ddc59098a5e738e5b5041c2643f459ea5df354e1c
Contents?: true
Size: 1.24 KB
Versions: 9
Compression:
Stored size: 1.24 KB
Contents
# frozen_string_literal: true module CKEditor5::Rails class Presets::PluginsBuilder attr_reader :items def initialize(plugins) @items = plugins end def self.create_plugin(name, **kwargs) if name.is_a?(Editor::PropsInlinePlugin) || name.is_a?(Editor::PropsPlugin) name else Editor::PropsPlugin.new(name, **kwargs) end end def remove(*names) names.each { |name| items.delete_if { |plugin| plugin.name == name } } end def prepend(*names, before: nil, **kwargs) new_plugins = names.map { |name| self.class.create_plugin(name, **kwargs) } if before index = items.index { |p| p.name == before } raise ArgumentError, "Plugin '#{before}' not found" unless index items.insert(index, *new_plugins) else items.insert(0, *new_plugins) end end def append(*names, after: nil, **kwargs) new_plugins = names.map { |name| self.class.create_plugin(name, **kwargs) } if after index = items.index { |p| p.name == after } raise ArgumentError, "Plugin '#{after}' not found" unless index items.insert(index + 1, *new_plugins) else items.push(*new_plugins) end end end end
Version data entries
9 entries across 9 versions & 1 rubygems