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