Shared utilities for code generators.
This module provides common functionality used across all generators (OMNeT++, CAF, Pony, Phony) to minimize code duplication.
Summary
Functions
Extracts messages from a send pattern.
Converts interval to nanoseconds (for Pony timers).
Converts interval to seconds (for OMNeT++ and other simulators).
Normalizes a message name to a valid identifier.
Calculates the interval in milliseconds for a send pattern.
Generates a basic README template.
Filters simulated actors from an actors map.
Converts an atom or string to camelCase.
Converts an atom or string to PascalCase.
Converts an atom or string to snake_case.
Writes generated files to a directory, creating subdirectories as needed.
Functions
Extracts messages from a send pattern.
Examples
iex> GeneratorUtils.extract_messages({:periodic, 100, :tick})
[:tick]
iex> GeneratorUtils.extract_messages({:burst, 10, 1000, :batch})
[:batch]
Converts interval to nanoseconds (for Pony timers).
Converts interval to seconds (for OMNeT++ and other simulators).
Normalizes a message name to a valid identifier.
Calculates the interval in milliseconds for a send pattern.
Examples
iex> GeneratorUtils.pattern_interval({:periodic, 100, :msg})
100
iex> GeneratorUtils.pattern_interval({:rate, 10, :msg})
100
Generates a basic README template.
Filters simulated actors from an actors map.
Converts an atom or string to camelCase.
Examples
iex> GeneratorUtils.to_camel_case(:my_actor)
"myActor"
Converts an atom or string to PascalCase.
Examples
iex> GeneratorUtils.to_pascal_case(:my_actor)
"MyActor"
iex> GeneratorUtils.to_pascal_case("my_actor")
"MyActor"
Converts an atom or string to snake_case.
Examples
iex> GeneratorUtils.to_snake_case(:my_actor)
"my_actor"
iex> GeneratorUtils.to_snake_case("MyActor")
"my_actor"
Writes generated files to a directory, creating subdirectories as needed.