Class: AnalyticsOps::Funnels::Definition
- Inherits:
-
Object
- Object
- AnalyticsOps::Funnels::Definition
- Defined in:
- lib/analytics_ops/funnels.rb,
sig/analytics_ops.rbs
Overview
Immutable definition for an aggregate, ordered BigQuery funnel.
Constant Summary collapse
- NAME =
/\A[A-Za-z][A-Za-z0-9_]{0,63}\z/- EVENT_NAME =
/\A[A-Za-z][A-Za-z0-9_]{0,39}\z/- CONTROL =
/[\u0000-\u001f\u007f]/
Instance Attribute Summary collapse
-
#name ⇒ String
readonly
Returns the value of attribute name.
-
#steps ⇒ Array[Step]
readonly
Returns the value of attribute steps.
Instance Method Summary collapse
-
#initialize(name:, steps:) ⇒ Definition
constructor
A new instance of Definition.
- #to_h ⇒ record
Constructor Details
#initialize(name:, steps:) ⇒ Definition
Returns a new instance of Definition.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/analytics_ops/funnels.rb', line 19 def initialize(name:, steps:) raise InvalidRequestError, "Funnel name is invalid" unless name.is_a?(String) && NAME.match?(name) unless steps.is_a?(Array) && steps.length.between?(2, 10) raise InvalidRequestError, "A funnel requires 2 to 10 steps" end @name = name.dup.freeze @steps = steps.map.with_index { |step, index| normalize_step(step, index) }.freeze unless @steps.map(&:name).uniq.length == @steps.length raise InvalidRequestError, "Funnel step names must be unique" end freeze end |
Instance Attribute Details
#name ⇒ String (readonly)
Returns the value of attribute name.
17 18 19 |
# File 'lib/analytics_ops/funnels.rb', line 17 def name @name end |
#steps ⇒ Array[Step] (readonly)
Returns the value of attribute steps.
17 18 19 |
# File 'lib/analytics_ops/funnels.rb', line 17 def steps @steps end |
Instance Method Details
#to_h ⇒ record
34 35 36 |
# File 'lib/analytics_ops/funnels.rb', line 34 def to_h { "name" => name, "experimental" => true, "steps" => steps.map(&:to_h) } end |