class Voucher::SegmentsBuilder

Public Class Methods

call(data) click to toggle source
# File lib/voucher/segments_builder.rb, line 5
def self.call(data)
  new(data).call
end
new(data) click to toggle source
# File lib/voucher/segments_builder.rb, line 9
def initialize(data)
  @data = data
end

Public Instance Methods

call() click to toggle source
# File lib/voucher/segments_builder.rb, line 13
def call
  build
end

Private Instance Methods

build() click to toggle source
# File lib/voucher/segments_builder.rb, line 19
def build
  { election: election, segments: segments }
end
election() click to toggle source
# File lib/voucher/segments_builder.rb, line 23
def election
  attributes = @data.dig(:election, :attributes) || {}

  Election.new(attributes)
end
segments() click to toggle source
# File lib/voucher/segments_builder.rb, line 29
def segments
  raise ArgumentError, 'Segments data must be an array' unless @data[:segments].is_a?(Array)

  @data[:segments].map do |segment|
    Segment.new(segment[:attributes] || {})
  end
end