Sha256: bb093e8ec746806120e5f52525becff708056a3a604682f419e2764b8d7a32fd

Contents?: true

Size: 1004 Bytes

Versions: 1

Compression:

Stored size: 1004 Bytes

Contents

# frozen_string_literal: true

require "heya/version"
require "heya/engine"
require "heya/config"
require "heya/campaigns/action"
require "heya/campaigns/actions/email"
require "heya/campaigns/actions/block"
require "heya/campaigns/base"
require "heya/campaigns/queries"
require "heya/campaigns/scheduler"
require "heya/campaigns/step"
require "heya/campaigns/step_action_job"

module Heya
  extend self

  attr_accessor :campaigns
  self.campaigns = []

  def register_campaign(klass)
    campaigns.push(klass) unless campaigns.include?(klass)
  end

  def unregister_campaign(klass)
    campaigns.delete(klass)
  end

  def configure
    yield(config) if block_given?
    config
  end

  def config
    @config ||= Config.new
  end

  def in_segments?(user, *segments)
    return false if segments.any? { |s| !in_segment?(user, s) }
    true
  end

  def in_segment?(user, segment)
    return true if segment.nil?
    return user.send(segment) if segment.is_a?(Symbol)
    segment.call(user)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
heya-0.1.0 lib/heya.rb