View Source Trifle.Stats.Series.Dynamic (Trifle.Stats v2.5.0)
Dynamic method generation for Series operations using macros.
This module provides macros to generate fluent methods for custom
registered aggregators, formatters, and transponders, achieving similar
functionality to Ruby's define_method approach.
Usage
# In your module that uses custom components
defmodule MyAnalytics do
use Trifle.Stats.Series.Dynamic
# Register custom components at compile time
register_aggregator :weighted_avg, MyWeightedAvgAggregator
register_formatter :json_export, MyJsonFormatter
register_transponder :normalize, MyNormalizer
def analyze(series) do
series
|> aggregate_weighted_avg("value", "weight") # auto-generated
|> transpond_normalize("data", "normalized") # auto-generated
|> format_json_export("normalized") # auto-generated
end
end
Summary
Functions
Before compile hook - generates methods for all registered components.
Use this module to enable dynamic method generation.
Register a custom aggregator and generate a fluent method for it.
Register a custom formatter and generate a fluent method for it.
Register a custom transponder and generate a fluent method for it.
Functions
Before compile hook - generates methods for all registered components.
Use this module to enable dynamic method generation.
Register a custom aggregator and generate a fluent method for it.
Examples
register_aggregator :weighted_avg, MyWeightedAvgAggregator
# Generates method:
# def aggregate_weighted_avg(series, path, opts \ [])
Register a custom formatter and generate a fluent method for it.
Register a custom transponder and generate a fluent method for it.