class Moist::Steps::Collection

Attributes

steps[R]

Public Class Methods

for(campaign) click to toggle source
# File lib/moist/steps/collection.rb, line 6
def self.for(campaign)
  new(campaign, ::Moist.step_registry[campaign.to_slug])
end
new(campaign, steps) click to toggle source
# File lib/moist/steps/collection.rb, line 11
def initialize(campaign, steps)
  @campaign = campaign
  @steps = sort(steps)
end

Public Instance Methods

[](val) click to toggle source
# File lib/moist/steps/collection.rb, line 24
def [](val)
  @steps[val]
end
each(&block) click to toggle source
# File lib/moist/steps/collection.rb, line 16
def each(&block)
  @steps.each { |step| block.call(step) }
end
find(step_number) click to toggle source
# File lib/moist/steps/collection.rb, line 28
def find(step_number)
  return nil unless step_number.is_a?(Integer)

  steps.detect { |step| step.options[:step] == step_number } || find_next(step_number)
end
find_next(step_number) click to toggle source
# File lib/moist/steps/collection.rb, line 34
def find_next(step_number)
  return nil unless step_number.is_a?(Integer)

  steps.detect { |step| step.options[:step] > step_number } || last_step?(step_number)
end
size() click to toggle source
# File lib/moist/steps/collection.rb, line 20
def size
  @steps.size
end

Private Instance Methods

last_step?(step_number) click to toggle source
# File lib/moist/steps/collection.rb, line 42
def last_step?(step_number)
  raise(::Moist::CampaignComplete) if steps.last.options[:step] == step_number

  nil
end
sort(steps) click to toggle source
# File lib/moist/steps/collection.rb, line 48
def sort(steps)
  steps.sort_by { |step| step.options[:step] }
end