Sha256: 6b19b55e25a934bcb03e5b918a164a96963db70a58bc92ea16adbf3531e133fb
Contents?: true
Size: 1.53 KB
Versions: 70
Compression:
Stored size: 1.53 KB
Contents
module Pageflow module OutputSource STATE_MAPPING = { true => 'finished', false => 'skipped' }.freeze extend ActiveSupport::Concern included do serialize :output_presences, JSON end def present_outputs present_outputs_label_state_array = output_presences.select do |output_label, _output_state| output_present?(output_label) == true end present_outputs_label_state_array.map { |output_label_state| output_label_state[0].to_sym } end def output_present?(type) output_presences[type.to_s] end def output_presences=(presences) boolean_presences = presences.stringify_keys.each_with_object({}) do |(key, value), result| if value == true || value == STATE_MAPPING[true] result[key] = true elsif value == false || value == STATE_MAPPING[false] result[key] = false elsif value.blank? result[key] = nil end end self[:output_presences] = output_presences .merge(boolean_presences) .reject { |_key, value| value.nil? } end def output_presences output_presences = self[:output_presences] || {} output_presences.merge(externally_generated_output_presences) end def externally_generated_outputs [] end private def externally_generated_output_presences pairs = externally_generated_outputs.map do |label| [label.to_s, true] end Hash[pairs] end end end
Version data entries
70 entries across 70 versions & 1 rubygems