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

Link to this macro

__before_compile__(env)

View Source (macro)

Before compile hook - generates methods for all registered components.

Link to this macro

__using__(opts)

View Source (macro)

Use this module to enable dynamic method generation.

Link to this macro

register_aggregator(name, module)

View Source (macro)

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 \ [])
Link to this macro

register_formatter(name, module)

View Source (macro)

Register a custom formatter and generate a fluent method for it.

Link to this macro

register_transponder(name, module)

View Source (macro)

Register a custom transponder and generate a fluent method for it.