Class: SvgConform::QualityMetrics::FeatureFlags

Inherits:
Lutaml::Model::Serializable
  • Object
show all
Defined in:
lib/svg_conform/quality_metrics/feature_flags.rb

Overview

Immutable value object representing detected SVG features.

Examples:

features = FeatureFlags.new(
  has_base64: true,
  has_masks: true,
  has_external_refs: false
)

features.has_base64?        # => true
features.advanced_features   # => [:base64, :masks]

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ FeatureFlags

Returns a new instance of FeatureFlags.



26
27
28
29
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 26

def initialize(**args)
  super(args)
  freeze
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?

Value equality



32
33
34
35
36
37
38
39
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 32

def ==(other)
  other.is_a?(FeatureFlags) &&
    has_base64 == other.has_base64 &&
    has_foreign_ns == other.has_foreign_ns &&
    has_masks == other.has_masks &&
    has_clip_paths == other.has_clip_paths &&
    has_external_refs == other.has_external_refs
end

#advanced_feature_countInteger

Returns Count of advanced features present.

Returns:

  • (Integer)

    Count of advanced features present



63
64
65
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 63

def advanced_feature_count
  present_features.size
end

#has_advanced_features?Boolean

Returns true if any advanced features are present.

Returns:

  • (Boolean)

    true if any advanced features are present



47
48
49
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 47

def has_advanced_features?
  advanced_feature_count.positive?
end

#hashObject



42
43
44
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 42

def hash
  [has_base64, has_foreign_ns, has_masks, has_clip_paths, has_external_refs].hash
end

#present_featuresArray<Symbol>

Returns List of present feature names.

Returns:

  • (Array<Symbol>)

    List of present feature names



52
53
54
55
56
57
58
59
60
# File 'lib/svg_conform/quality_metrics/feature_flags.rb', line 52

def present_features
  features = []
  features << :base64 if has_base64
  features << :foreign_ns if has_foreign_ns
  features << :masks if has_masks
  features << :clip_paths if has_clip_paths
  features << :external_refs if has_external_refs
  features
end