Sha256: 8c59b3df38f604c729d2d9840e9544965ea04e76f33e1b4a83d13f387a58165b

Contents?: true

Size: 932 Bytes

Versions: 7

Compression:

Stored size: 932 Bytes

Contents

# frozen_string_literal: true

require "stimulus_reflex/utils/attribute_builder"

class StimulusReflex::Dataset < OpenStruct
  include StimulusReflex::AttributeBuilder

  attr_accessor :attrs, :data_attrs

  def initialize(data = {})
    datasets = data["dataset"] || {}
    regular_dataset = datasets["dataset"] || {}
    @attrs = build_data_attrs(regular_dataset, datasets["datasetAll"] || {})
    @data_attrs = @attrs.transform_keys { |key| key.delete_prefix "data-" }

    super build_underscored(@data_attrs)
  end

  def signed
    @signed ||= ->(accessor) { GlobalID::Locator.locate_signed(self[accessor]) }
  end

  def unsigned
    @unsigned ||= ->(accessor) { GlobalID::Locator.locate(self[accessor]) }
  end

  def boolean
    @boolean ||= ->(accessor) { ActiveModel::Type::Boolean.new.cast(self[accessor]) || self[accessor].blank? }
  end

  def numeric
    @numeric ||= ->(accessor) { Float(self[accessor]) }
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
stimulus_reflex-3.5.0.pre9 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre8 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre7 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre6 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre5 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre4 lib/stimulus_reflex/dataset.rb
stimulus_reflex-3.5.0.pre3 lib/stimulus_reflex/dataset.rb