DebtCostConfig.fromYaml constructor
Create configuration from YAML map.
Implementation
factory DebtCostConfig.fromYaml(Map<String, dynamic> yaml) {
final defaults = DebtCostConfig.defaults();
final costsYaml = yaml['costs'] as Map<String, dynamic>?;
final costs = Map<DebtType, double>.from(defaults.costs);
if (costsYaml != null) {
for (final entry in costsYaml.entries) {
final debtType = _parseDebtType(entry.key);
if (debtType != null && entry.value is num) {
costs[debtType] = (entry.value as num).toDouble();
}
}
}
final multipliersYaml = yaml['multipliers'] as Map<String, dynamic>?;
final multipliers = Map<DebtSeverity, double>.from(defaults.multipliers);
if (multipliersYaml != null) {
for (final entry in multipliersYaml.entries) {
final severity = _parseSeverity(entry.key);
if (severity != null && entry.value is num) {
multipliers[severity] = (entry.value as num).toDouble();
}
}
}
final metricsYaml = yaml['metrics'] as Map<String, dynamic>?;
final metricsThresholds = metricsYaml != null
? DebtMetricsThresholds.fromYaml(metricsYaml)
: defaults.metricsThresholds;
final excludeYaml = yaml['exclude'] as List<dynamic>?;
final exclude =
excludeYaml?.map((e) => e.toString()).toList() ?? defaults.exclude;
return DebtCostConfig(
costs: costs,
multipliers: multipliers,
unit: yaml['unit'] as String? ?? defaults.unit,
threshold: (yaml['threshold'] as num?)?.toDouble() ?? defaults.threshold,
metricsThresholds: metricsThresholds,
exclude: exclude,
);
}