Class: Fontisan::Pipeline::Strategies::BaseStrategy
- Inherits:
-
Object
- Object
- Fontisan::Pipeline::Strategies::BaseStrategy
- Defined in:
- lib/fontisan/pipeline/strategies/base_strategy.rb
Overview
Base class for variation resolution strategies
This abstract class defines the interface that all variation resolution strategies must implement. It follows the Strategy pattern to allow different approaches to handling variable font data during conversion.
Subclasses must implement:
-
resolve(font): Process the font and return tables
-
preserves_variation?: Indicate if variation data is preserved
-
strategy_name: Return the strategy identifier
Direct Known Subclasses
Instance Attribute Summary collapse
-
#options ⇒ Hash
readonly
Strategy options.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ BaseStrategy
constructor
Initialize strategy with options.
-
#preserves_variation? ⇒ Boolean
Check if strategy preserves variation data.
-
#resolve(font) ⇒ Hash<String, String>
Resolve variation data.
-
#strategy_name ⇒ Symbol
Get strategy name.
Constructor Details
#initialize(options = {}) ⇒ BaseStrategy
Initialize strategy with options
38 39 40 |
# File 'lib/fontisan/pipeline/strategies/base_strategy.rb', line 38 def initialize( = {}) @options = end |
Instance Attribute Details
#options ⇒ Hash (readonly)
Returns Strategy options.
33 34 35 |
# File 'lib/fontisan/pipeline/strategies/base_strategy.rb', line 33 def @options end |
Instance Method Details
#preserves_variation? ⇒ Boolean
Check if strategy preserves variation data
59 60 61 62 |
# File 'lib/fontisan/pipeline/strategies/base_strategy.rb', line 59 def preserves_variation? raise NotImplementedError, "#{self.class.name} must implement #preserves_variation?" end |
#resolve(font) ⇒ Hash<String, String>
Resolve variation data
This method must be implemented by subclasses to process the font and return the appropriate tables based on the strategy.
50 51 52 53 |
# File 'lib/fontisan/pipeline/strategies/base_strategy.rb', line 50 def resolve(font) raise NotImplementedError, "#{self.class.name} must implement #resolve" end |
#strategy_name ⇒ Symbol
Get strategy name
68 69 70 71 |
# File 'lib/fontisan/pipeline/strategies/base_strategy.rb', line 68 def strategy_name raise NotImplementedError, "#{self.class.name} must implement #strategy_name" end |