Class: SvgConform::QualityMetrics::ComplexityCalculator
- Inherits:
-
Object
- Object
- SvgConform::QualityMetrics::ComplexityCalculator
- Defined in:
- lib/svg_conform/quality_metrics/complexity_calculator.rb
Overview
Calculates complexity index (1-10) for SVG documents.
Instance Method Summary collapse
-
#calculate(element_count:, features:, max_depth: nil) ⇒ ComplexityMetrics
Calculate complexity metrics.
-
#calculate_from_content(content:, features:) ⇒ ComplexityMetrics
Calculate complexity from raw content.
-
#initialize(config) ⇒ ComplexityCalculator
constructor
A new instance of ComplexityCalculator.
Constructor Details
#initialize(config) ⇒ ComplexityCalculator
Returns a new instance of ComplexityCalculator.
17 18 19 |
# File 'lib/svg_conform/quality_metrics/complexity_calculator.rb', line 17 def initialize(config) @config = config end |
Instance Method Details
#calculate(element_count:, features:, max_depth: nil) ⇒ ComplexityMetrics
Calculate complexity metrics
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/svg_conform/quality_metrics/complexity_calculator.rb', line 27 def calculate(element_count:, features:, max_depth: nil) element_score = Math.log10([element_count, 1].max) * @config.complexity.base_element_multiplier depth_score = (max_depth || 0) * @config.complexity.depth_weight feature_bonus = calculate_feature_bonus(features) complexity = element_score + depth_score + feature_bonus max_index = @config.complexity.max_index ComplexityMetrics.new( index: [complexity.clamp(1.0, max_index), 1.0].max, element_count: element_count, max_depth: max_depth || 0, ) end |
#calculate_from_content(content:, features:) ⇒ ComplexityMetrics
Calculate complexity from raw content
47 48 49 50 51 52 |
# File 'lib/svg_conform/quality_metrics/complexity_calculator.rb', line 47 def calculate_from_content(content:, features:) element_count = count_elements(content) max_depth = calculate_max_depth(content) calculate(element_count: element_count, features: features, max_depth: max_depth) end |