Module: ABMeter::Core

Defined in:
lib/abmeter/core.rb,
lib/abmeter/core/user.rb,
lib/abmeter/core/protocol/type.rb,
lib/abmeter/core/utils/num_utils.rb,
lib/abmeter/core/assignment_config.rb,
lib/abmeter/core/assignment_config/space.rb,
lib/abmeter/core/user_parameter_resolver.rb,
lib/abmeter/core/assignment_config/variant.rb,
lib/abmeter/core/assignment_config/audience.rb,
lib/abmeter/core/assignment_config/exposable.rb,
lib/abmeter/core/assignment_config/parameter.rb,
lib/abmeter/core/assignment_config/experiment.rb,
lib/abmeter/core/assignment_config/feature_flag.rb

Defined Under Namespace

Modules: AssignmentConfig, Protocol, Utils Classes: Error, User, UserParameterResolver

Class Method Summary collapse

Class Method Details

.all_typesObject

Get all available types



38
39
40
# File 'lib/abmeter/core.rb', line 38

def all_types
  Protocol.all_types
end

.build_resolver_from_json(json) ⇒ Object

Build a resolver from JSON configuration



58
59
60
61
# File 'lib/abmeter/core.rb', line 58

def build_resolver_from_json(json)
  config = AssignmentConfig.from_json(json)
  UserParameterResolver.new(config: config)
end

.cast!(value, type_name) ⇒ Object

Cast value to given type (strict - raises ArgumentError on invalid)



48
49
50
# File 'lib/abmeter/core.rb', line 48

def cast!(value, type_name)
  Protocol.cast!(value, type_name)
end

.num_utilsObject

Provide convenience access to utilities



64
65
66
# File 'lib/abmeter/core.rb', line 64

def num_utils
  Utils::NumUtils
end

.numerical?(type_name) ⇒ Boolean

Check if type is numerical

Returns:

  • (Boolean)


43
44
45
# File 'lib/abmeter/core.rb', line 43

def numerical?(type_name)
  Protocol.numerical?(type_name)
end

.percentages_to_ranges(percentages) ⇒ Object

Convert percentages to ranges for experiment allocation



69
70
71
# File 'lib/abmeter/core.rb', line 69

def percentages_to_ranges(percentages)
  Utils::NumUtils.percentages_to_ranges(percentages)
end

.type(type_name) ⇒ Object

Get type object by name



33
34
35
# File 'lib/abmeter/core.rb', line 33

def type(type_name)
  Protocol.type(type_name)
end

.valid_for_type?(value, type_name) ⇒ Boolean

Check if value is valid for type

Returns:

  • (Boolean)


53
54
55
# File 'lib/abmeter/core.rb', line 53

def valid_for_type?(value, type_name)
  Protocol.valid_for_type?(value, type_name)
end