Sha256: 60db8877715da9ebdaae4247d28136dcd389fa42baf66d56011569dab1f1702c

Contents?: true

Size: 1.54 KB

Versions: 37

Compression:

Stored size: 1.54 KB

Contents

module ForestLiana
  module Utils
    class ContextVariablesInjector

      def self.inject_context_in_value(value, context_variables)
        inject_context_in_value_custom(value) do |context_variable_key|
          context_variables.get_value(context_variable_key).to_s
        end
      end

      def self.inject_context_in_value_custom(value)
        return value unless value.is_a?(String)

        value_with_context_variables_injected = value
        regex = /{{([^}]+)}}/
        encountered_variables = []

        while (match = regex.match(value_with_context_variables_injected))
          context_variable_key = match[1]

          unless encountered_variables.include?(context_variable_key)
            value_with_context_variables_injected.gsub!(
              /{{#{context_variable_key}}}/,
              yield(context_variable_key)
            )
          end

          encountered_variables.push(context_variable_key)
        end

        value_with_context_variables_injected
      end

      def self.inject_context_in_filter(filter, context_variables)
        return nil unless filter

        if filter.key? 'aggregator'
          return {
            'aggregator' => filter['aggregator'],
            'conditions' => filter['conditions'].map { |condition| inject_context_in_filter(condition, context_variables) }
          }
        end

        {
          'field' => filter['field'],
          'operator' => filter['operator'],
          'value' => inject_context_in_value(filter['value'], context_variables)
        }

      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
forest_liana-9.9.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.8.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.7.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.6.4 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.6.3 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.6.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.7 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.6 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.5 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.4 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.3 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.2 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.1 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.5.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.4.3 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.4.2 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.4.1 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.4.0 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.3.16 app/services/forest_liana/utils/context_variables_injector.rb
forest_liana-9.3.15 app/services/forest_liana/utils/context_variables_injector.rb