styd/apexcharts.rb

View on GitHub
lib/apex_charts/series/bubble_series.rb

Summary

Maintainability
A
35 mins
Test Coverage
# frozen_string_literal: true

require_relative '../utils/copy'

module ApexCharts::Series
  class BubbleSeries
    include ApexCharts::Utils::Copy

    attr_reader :sanitized

    def initialize(data)
      data = deep_copy(data)
      sanitized =
        case data
        when Array
          if array_of_threes?(data)
            [{data: data}]
          else
            data
          end

        when Hash
          data_value = data[:data]
          [data] if data_value && array_of_threes?(data_value)

        end

      @sanitized = {series: sanitized}
    end

    def sample
      return if empty?

      sanitized[:series][0][:data][0]
    end

  private

    def empty?
      sanitized[:series].empty? || sanitized[:series][0][:data].empty?
    end

    def array_of_threes?(data)
      return false if data.empty?

      data.all? {|d| d.length == 3 }
    end
  end
end