Class: Omnizip::Models::FilterConfig
- Inherits:
-
Object
- Object
- Omnizip::Models::FilterConfig
- Defined in:
- lib/omnizip/models/filter_config.rb
Overview
Configuration model for a filter in a compression pipeline.
This class replaces hash-based filter configuration with a proper model class. It provides format-aware ID resolution and validation.
Instance Attribute Summary collapse
-
#architecture ⇒ Symbol
Target architecture for BCJ filters.
-
#name_sym ⇒ Symbol
readonly
Get filter name as symbol.
-
#properties ⇒ String
Binary properties data for filter configuration.
Instance Method Summary collapse
-
#bcj? ⇒ Boolean
Check if this is a BCJ filter.
-
#delta? ⇒ Boolean
Check if this is a Delta filter.
-
#filter_instance ⇒ Object
Get filter instance from registry.
-
#id_for_format(format) ⇒ Integer
Get filter ID for specific format.
-
#initialize(attributes = {}) ⇒ FilterConfig
constructor
Initialize filter configuration.
-
#name=(value) ⇒ void
Set filter name.
-
#to_h ⇒ Hash
Convert to hash representation.
-
#validate! ⇒ Boolean
Validate configuration.
Constructor Details
#initialize(attributes = {}) ⇒ FilterConfig
Initialize filter configuration.
51 52 53 54 55 |
# File 'lib/omnizip/models/filter_config.rb', line 51 def initialize(attributes = {}) @name_sym = attributes[:name] || attributes[:name_sym] @properties = attributes[:properties] || "".b @architecture = attributes[:architecture] end |
Instance Attribute Details
#architecture ⇒ Symbol
Returns Target architecture for BCJ filters.
42 43 44 |
# File 'lib/omnizip/models/filter_config.rb', line 42 def architecture @architecture end |
#name_sym ⇒ Symbol (readonly)
Get filter name as symbol.
36 37 38 |
# File 'lib/omnizip/models/filter_config.rb', line 36 def name_sym @name_sym end |
#properties ⇒ String
Returns Binary properties data for filter configuration.
39 40 41 |
# File 'lib/omnizip/models/filter_config.rb', line 39 def properties @properties end |
Instance Method Details
#bcj? ⇒ Boolean
Check if this is a BCJ filter.
109 110 111 |
# File 'lib/omnizip/models/filter_config.rb', line 109 def bcj? @name_sym.to_s.start_with?("bcj_") end |
#delta? ⇒ Boolean
Check if this is a Delta filter.
116 117 118 |
# File 'lib/omnizip/models/filter_config.rb', line 116 def delta? @name_sym == :delta end |
#filter_instance ⇒ Object
Get filter instance from registry.
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/omnizip/models/filter_config.rb', line 76 def filter_instance filter = Omnizip::FilterRegistry.get(@name_sym) # Handle architecture parameter if needed if @architecture && requires_initialize_kwargs?(filter) filter.new(architecture: @architecture) else filter.new end end |
#id_for_format(format) ⇒ Integer
Get filter ID for specific format.
Delegates to filter instance's id_for_format method if available. For older filters without id_for_format, returns a default value.
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/omnizip/models/filter_config.rb', line 95 def id_for_format(format) filter = filter_instance if filter.respond_to?(:id_for_format) filter.id_for_format(format) else raise NotImplementedError, "Filter #{@name_sym} doesn't support format-aware IDs. " \ "Use the newer BCJ filter instead." end end |
#name=(value) ⇒ void
This method returns an undefined value.
Set filter name.
61 62 63 |
# File 'lib/omnizip/models/filter_config.rb', line 61 def name=(value) @name_sym = value end |
#to_h ⇒ Hash
Convert to hash representation.
137 138 139 140 141 142 143 |
# File 'lib/omnizip/models/filter_config.rb', line 137 def to_h { name: @name_sym, properties: @properties, architecture: @architecture, } end |
#validate! ⇒ Boolean
Validate configuration.
124 125 126 127 128 129 130 131 132 |
# File 'lib/omnizip/models/filter_config.rb', line 124 def validate! raise ArgumentError, "Filter name is required" if @name_sym.nil? unless Omnizip::FilterRegistry.registered?(@name_sym) raise ArgumentError, "Filter not registered: #{@name_sym}" end true end |