Sha256: b1a99959144890f7066cb497c6d9a93f5e328b8bffa722846782c54cefcf3c66

Contents?: true

Size: 1.88 KB

Versions: 10

Compression:

Stored size: 1.88 KB

Contents

# frozen_string_literal: true

require_relative '../presets/concerns/configuration_methods'
require_relative '../presets/concerns/plugin_methods'

module CKEditor5::Rails
  module Context
    # PresetBuilder provides functionality for building CKEditor 5 presets.
    #
    # This class includes configuration and plugin handling methods from concerns
    # and allows defining presets either through initialization blocks or method chaining.
    #
    # @example Basic preset definition
    #   preset = PresetBuilder.new do
    #     version '43.3.1'
    #     gpl
    #     type :classic
    #     toolbar :bold, :italic
    #   end
    #
    # @example Cloning and modifying a preset
    #   new_preset = preset.clone
    #   new_preset.toolbar do
    #     append :underline
    #   end
    #
    # @see Presets::Concerns::ConfigurationMethods
    # @see Presets::Concerns::PluginMethods
    class PresetBuilder
      include Presets::Concerns::ConfigurationMethods
      include Presets::Concerns::PluginMethods

      # Initializes a new preset builder with optional configuration block
      #
      # @param block [Proc] Optional configuration block
      # @example Initialize with block
      #   PresetBuilder.new do
      #     version '43.3.1'
      #     toolbar :bold, :italic
      #   end
      def initialize(&block)
        @disallow_inline_plugin_compression = true
        @config = {
          plugins: []
        }

        instance_eval(&block) if block_given?
      end

      # Creates a deep copy of the preset builder
      #
      # @param source [PresetBuilder] Source preset to copy from
      # @return [PresetBuilder] New preset instance with copied configuration
      def initialize_copy(source)
        super

        @config = {
          plugins: source.config[:plugins].map(&:dup)
        }.merge(
          source.config.except(:plugins).deep_dup
        )
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
ckeditor5-1.24.10 lib/ckeditor5/rails/context/preset_builder.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/ckeditor5-1.24.9/lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.9 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.8 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.6 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.5 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.4 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.3 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.2 lib/ckeditor5/rails/context/preset_builder.rb
ckeditor5-1.24.1 lib/ckeditor5/rails/context/preset_builder.rb