class CKEditor5::Rails::Editor::EditableHeightNormalizer

def convert_string_to_pixel_value(value)

def convert_string_to_pixel_value(value)
  return value if value.match?(/^\d+px$/)
  raise_invalid_height_error(value)
end

def convert_to_pixel_value(value)

def convert_to_pixel_value(value)
  case value
  when Integer then "#{value}px"
  when String then convert_string_to_pixel_value(value)
  else
    raise_invalid_height_error(value)
  end
end

def initialize(editor_type)

def initialize(editor_type)
  @editor_type = editor_type
end

def normalize(value)

def normalize(value)
  return nil if value.nil?
  validate_editor_type!
  convert_to_pixel_value(value)
end

def raise_invalid_height_error(value)

def raise_invalid_height_error(value)
  raise InvalidEditableHeightError,
        "editable_height must be an integer representing pixels or string ending with 'px'\n" \
        "(e.g. 500 or '500px'). Got: #{value.inspect}"
end

def validate_editor_type!

def validate_editor_type!
  return if %i[classic balloon].include?(editor_type)
  raise InvalidEditableHeightError,
        'editable_height can be used only with ClassicEditor or BalloonEditor'
end