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